Какой наименьший аудиобуфер необходим для создания тонального звука без искажений с помощью WaveOUT API

Есть ли в WaveOut API какое-то внутреннее ограничение на размер текущего воспроизводимого фрагмента буфера? Я имею в виду, если я предоставлю очень маленький буфер, это как-то повлияет на звук, воспроизводимый динамиками. Я испытываю очень странный шум, когда генерирую и играю синусоидальную волну с небольшим буфером. Что-то вроде пика или «БАМП».

Полная история:

Я сделал программу, которая может генерировать звуковой сигнал Sinus в режиме реального времени. Переменные параметры: частота и громкость. Требование проекта должно было иметь максимальную задержку 50 мс. Таким образом, программа должна быть способна выдавать синусоидальные сигналы с настраиваемой вручную частотой звукового сигнала в режиме реального времени.

Я использовал Windows WaveOut API, C # и P / invoke для доступа к API.

Все отлично работает, когда размер звукового буфера составляет 1000 мс. Если я минимизирую буфер до 50 мс согласно требованию задержки, то для определенных частот, которые я испытываю в конце каждого буфера, возникает шум или «BUMP». Я не понимаю, является ли сгенерированный звук искаженным (я проверял и нет) или что-то происходит с аудио-чипом, или некоторая задержка при инициализации и воспроизведении.

Когда я сохраняю произведенный звук в файл .wav, все идеально.

Это означает, что в моем коде должна быть какая-то ошибка, или аудиоподсистема имеет ограничение на отправляемые ему фрагменты буфера.

Для тех, кто не знает, WaveOut должен быть инициализирован в первый раз, а затем должен быть подготовлен с заголовками аудио для каждого буфера, которые содержат количество байтов, которые должны быть воспроизведены, и указатель на память, которая содержит аудио, которое необходимо быть игроком

ОБНОВИТЬ

Шум возникает при следующих комбинациях 44100 SamplingRate, 16 бит, 2 канала, 50 мс буфера и сгенерированного синусоидального аудиосигнала 201 Гц, 202 Гц, 203 Гц, 204 Гц, 205 Гц ... 219 Гц, 220 Гц, 240 Гц, все в порядке

Почему эта разница 20, я не знаю.

Ответы на вопрос(1)

Ваш ответ на вопрос