Резкая дилемма, по крайней мере, я думаю, что это

Я пытаюсь вывести аудиосэмплы, и делаю это с помощью 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 ответ

Решение

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

Другие вопросы по тегам