Вопрос
Я хотел бы получить поток образцов PCM из линейного или встроенного микрофона Mac и провести небольшой анализ в реальном времени (точная природа не относится к этому вопросу, но это может быть БПФ каждый так часто, или какая-то базовая статистика по уровням выборки, или что у вас).
Что подходит для этого? Написание AudioUnit, который просто пропускает звук и случайно передает его куда-то для анализа? Написание приложения с поддержкой JACK и выяснение того, как заставить его играть с сервером JACK? Ecasound?
Это дурацкий проект, основанный на проверке концепции, поэтому простота API является движущим фактором (за которым следует разумный выбор языка программирования).
Решение
Я думаю, portaudio - это то, что вам нужно. Чтение из микрофона из консольного приложения - это 10-строчный файл C (см. Patests в дистрибутиве portaudio).
Другие советы
Основной платформой для разработки аудио в Mac OS X является Core Audio; это основа для всех аудио ввода / вывода. Поверх него есть слои, такие как Audio Toolbox, Audio Queue Services, QuickTime и QTKit, которые вы можете использовать, если вам нужен упрощенный API для общих задач.
Чтобы просто получить поток образцов, вы, вероятно, захотите использовать Сервисы аудио-очереди ; AudioQueueNewInput
настроит запись данных PCM и передаст их обратному вызову, который вы указали.
На вашем Mac есть ряд примеров Core Audio в / Developer / examples / CoreAudio / SimpleSDK
, который включает использование (AQRecord в AudioQueueTools) API-интерфейсов записи Audio Queue Services.
Apple предоставляет пример кода для чтение и запись аудиоданных . Кроме того, в разделе «Аудио» на сайте Apple Developer есть много полезной информации .