Я хочу создать программное обеспечение, которое считывает необработанное аудио с внешнего аудиоинтерфейса (Focusrite Scarlett 2i2) и обрабатывает его на C++, прежде чем возвращать его в интерфейс для воспроизведения. В настоящее время я запускаю Windows 8 и задавался вопросом, как это сделать с минимальной задержкой?обработка звука в реальном времени в C++
Я потратил некоторое время на изучение (повышение) ASIO, но документация кажется довольно бедной. Я также рассматриваю OpenCL, но мне сказали, что, скорее всего, будет иметь более высокую задержку. В идеале я хотел бы иметь возможность напрямую обращаться к драйверу Focusrite.
Прошу прощения за то, что это такой открытый вопрос, но у меня возникли проблемы с поиском учебных материалов по аудиопрограмме, кроме как манипулирование аудио при предоставлении стороннего подключаемого модуля, такого как RackAFX. Я также был бы признателен, если бы кто-нибудь мог рекомендовать некоторые чтения на таких низкоуровневых материалах.
также я понимаю, что я вряд ли получу конечный продукт с незаметно низкой задержкой, мне просто интересно узнать, как близко я могу получить. –
Вы не сказали, какую платформу вы используете. На MacOSX можно получить латентность буфера до менее 1 мс для устройств Firewire/Thunderbolt. Для USB это будет немного больше. 5-10 мс лавирование в оба конца достижимо, хотя это происходит за счет высокой загрузки процессора. – marko