2012-06-29 4 views
3

Можно ли воспроизводить звуки с субмиллисекундной задержкой с использованием Core Audio?субмиллисекундная задержка в Core Audio

Я пробовал использовать AudioQueues с разными размерами и количеством буферов, и я пытался использовать AudioUnits, но мне не удалось получить менее 30 мс задержки.

Я использую осциллограф для измерения времени между нажатием кнопки на Arduino и при выходе звука из аудиоразъема. Связь Arduino никогда не вносит более 1 мс задержки.

ответ

2

No. Для задержки в миллисекундах, не считая латентности ЦАП, аудиодрайверу необходимо будет вытащить размер буфера 32 выборки или менее при частоте дискретизации 44,1 тыс., Которые, по-видимому, не позволяют использовать аудиоустройства текущее оборудование. Звуковые очереди выполняются поверх аудиоустройств и, следовательно, имеют еще более высокую задержку.

+0

Я заменяю код, написанный с использованием системы SndManager на OS 9, и этот старый код OS 9 способен достичь лучшего времени ожидания, чем я могу на новом Mac. Есть ли способ воспроизвести это? – flutillie

+0

@flutillie, нет, нет. Теперь вы можете быть в состоянии получить меньше 30 мс в зависимости от аппаратного обеспечения, но субмиллисекундная латентность невозможна. – Brad

+1

Привет, Брэд, мне удалось решить мою проблему. Я получил задержку до достаточно малых уровней, используя 32-байтовый буфер, вместо того, чтобы останавливать/запускать аудиоустройства, отправляя 0, когда я хочу, чтобы молчание. Спасибо за вашу помощь. – flutillie

Смежные вопросы