Semplice API di input audio su un Mac?
Domanda
Mi piacerebbe estrarre un flusso di campioni PCM dal microfono line-in o integrato di un Mac ed eseguire una piccola analisi dal vivo (la natura esatta non riguarda questa domanda, ma potrebbe essere una FFT ogni tanto, o alcune statistiche di base sui livelli del campione, o cosa hai).
Cosa è adatto a questo?Scrivere un'AudioUnit che si limita a far passare il suono e incidentalmente lo trasmette da qualche parte per l'analisi?Scrivere un'app compatibile con JACK e capire come farla funzionare con il server JACK?Ecosound?
Questo è un progetto hobby di prova di concetto scadente, quindi la semplicità dell'API è il fattore trainante (seguito da una scelta ragionevole del linguaggio di programmazione).
Soluzione
Penso portaudio è ciò di cui hai bisogno.La lettura dal microfono da un'app della console è un file C di 10 righe (vedi patests nel portaudio distrib).
Altri suggerimenti
Il framework principale per lo sviluppo audio in Mac OS X è Core Audio;è la base per tutti gli I/O audio.Ci sono livelli sopra come Audio Toolbox, Audio Queue Services, QuickTime e QTKit che puoi utilizzare se desideri un'API semplificata per attività comuni.
Per estrarre semplicemente un flusso di campioni, probabilmente vorrai utilizzare Servizi di coda audio;IL AudioQueueNewInput
La funzione imposterà la registrazione dei dati PCM e li passerà alla richiamata fornita.
Sul tuo Mac c'è una serie di esempi Core Audio in /Developer/Examples/CoreAudio/SimpleSDK
che include l'uso (AQRecord in AudioQueueTools) delle API di registrazione dei servizi di coda audio.
Apple fornisce un codice di esempio per leggere e scrivere dati audio.Inoltre ci sono molte buone informazioni nel file Sezione audio del sito degli sviluppatori Apple.