2008-09-01 7 views
8

Ich möchte einen Strom von PCM-Samples von einem Line-In oder eingebauten Mikrofon eines Macs ziehen und eine kleine Live-Analyse machen (die genaue Natur bezieht sich nicht auf diese Frage, aber es könnte eine FFT sein oft, oder einige grundlegende Statistiken über die Probe Ebenen, oder was hast du).Einfache Audio-Input-API auf einem Mac?

Was passt dafür? Schreiben Sie eine AudioUnit, die den Sound einfach durchlässt und zur Analyse irgendwo hin gibt? Eine JACK-fähige App schreiben und herausfinden, wie man sie mit dem JACK-Server spielen kann? Ecasound?

Dies ist ein kitschiges Proof-of-Concept-Hobby-Projekt, so ist Einfachheit der API der treibende Faktor (gefolgt von vernünftigen Wahl der Programmiersprache).

Antwort

5

Ich denke, portaudio ist, was Sie brauchen. Das Lesen vom Mike aus einer Konsolen-App ist eine 10-zeilige C-Datei (siehe patests im portaudio distrib).

+0

Hier ist ein Link zu einem Beispiel für die Aufnahme von Audio über ein Mikrofon und Speichern in einer Datei: http://portaudio.com/docs/v19-doxydocs/paex__record_8c.html –

4

Der wichtigste Rahmen für die Audioentwicklung in Mac OS X ist Core Audio; Es ist die Grundlage für alle Audio-I/O. Es gibt Layer darüber wie Audio Toolbox, Audio Queue Services, QuickTime und QTKit, die Sie verwenden können, wenn Sie eine vereinfachte API für allgemeine Aufgaben benötigen.

Um nur einen Strom von Proben zu ziehen, möchten Sie wahrscheinlich Audio Queue Services verwenden; Die Funktion AudioQueueNewInput konfiguriert die PCM-Daten und leitet sie an einen von Ihnen bereitgestellten Rückruf weiter.

Auf Ihrem Mac gibt es eine Reihe von Core Audio-Beispielen in /Developer/Examples/CoreAudio/SimpleSDK, die eine Verwendung (AQRecord in AudioQueueTools) der Audio Queue Services Aufnahme-APIs enthält.

+0

Hallo, Chris. Audio Queue Services bieten tatsächlich eine nette, saubere API. Ich bin mit diesem Projekt für Tiger-Kompatibilität mit Portaudio gegangen, aber habe Neid auf AQRecord geguckt. – undees