Резкая дилемма, по крайней мере, я думаю, что это - PullRequest
0 голосов
/ 08 ноября 2011

Я пытаюсь вывести аудиосэмплы, и делаю это с помощью cswavplay из http://www.codeproject.com/KB/audio-video/cswavplay.aspx, который, в свою очередь, использует DllImports из winmm.dll.

Я получил его для воспроизведения, используя8-битные сэмплы, однако, когда я пытаюсь передать 16-битные сэмплы, он терпит неудачу.Я копался в коде как можно лучше и понимаю это так:

Я получаю указатель на буфер для заполнения каждый раз, когда cswavplay заканчивает воспроизведение последнего буфера.Он работает за одну итерацию, он воспроизводит один буфер, иногда ... Я получаю всевозможные забавные исключения, AccessViolationException только сейчас, например, когда я пытался использовать размер буфера 44100, чтобы более четко слышать, сколько проигрывается.Но когда я размещаю точки останова в разных местах внутри класса WaveOut (часть cswavplay), кажется, что ни один из используемых им объектов, таких как буферы и экземпляр AutoResetEvent, не остается живым во второй итерации.Я думаю, что эти проблемы связаны с многопоточностью или сборкой мусора.Исключения кажутся довольно случайными, и я слишком неопытен, чтобы полностью понять, что происходит.

Я прошу одно из следующего:

1) Дикие догадки о том, в чем может быть проблема

2) Образованные догадки о том, в чем может быть проблема

3) Указатели на альтернативный способ вывода звука в режиме реального времени с использованиемC #

Я не прошу подробного отслеживания ошибок в программном обеспечении, которое я не писал, так что не против cswavplay ...

В конце дня я мог бы бытьздесь что-то не так, но трудно понять, когда я не получаю соответствующее исключение (по линии BufferAllocationException или что-то в этом роде) ...

РЕДАКТИРОВАТЬ:

Спасибо за все предложения о других звуковых API.Кажется, все они принимают файл .wav.Прошу прощения за непонятность, я не играю файлы .wav, я синтезирую сэмплы в реальном времени.

1 Ответ

2 голосов
/ 08 ноября 2011

DirectSound , а для .NET фреймворк XNA приходит мне в голову.Существует множество образцов очень высокого качества , в которых можно воспроизводить звук и анимированную графику одновременно с .NET.

...