Hallo zusammen,
nachdem ich vor kurzem mit eurer Hilfe in diesem Thread erfolgreich es geschafft habe .wav zu öffnen und zu schreiben, bin ich nun an dem Punkt, dass ich gerne auch noch Audio ausgeben könnte.
Wie im anderen Thema schon erwähnt, mein Ziel war es nie Software für den Mac zu schreiben, sondern nur C++ Audiosignalverarbeitungs-Code für einen Mikroprozessor unterwegs zu generieren.
Ich suche nach einer Möglichkeit, meinem default System Audio Ausgang Blockweise Audiosamples zum Playback zu übergeben. Im besten Fall passiert das in meiner Vorstellung einfach so, dass ich einen Audioausgang initialisiere, der alle (Blockgröße/Samplerate) Sekunden eine Callbackfunktion aufruft, welche entweder ein Array mit den neuen Samples zurückgibt oder diese an eine im Stelle ablegt, welche mir durch einen Pointer beim Aufruf der Callbackfunktion übergeben wird. Dachte ich würde zu so etwas haufenweise Samplecode finden, viel was ich gefunden habe bezieht sich aber auf Playback von Audiodateien, was ja nicht meine Baustelle ist, oder erscheint mir als nicht ansatzweise in OS X Frameworks bewanderter User viel zu unverständlich.
Im Grunde suche ich das C++ Pendant zu MATLABs dsp.AudioPlayer was in meiner Idealvorstellung irgendwie so benutzt werden könnte:
Alles anzeigen
Welche der unter OS X möglichen Lösung kommt von der Einfachheit dem oben beschrieben am nähsten?
nachdem ich vor kurzem mit eurer Hilfe in diesem Thread erfolgreich es geschafft habe .wav zu öffnen und zu schreiben, bin ich nun an dem Punkt, dass ich gerne auch noch Audio ausgeben könnte.
Wie im anderen Thema schon erwähnt, mein Ziel war es nie Software für den Mac zu schreiben, sondern nur C++ Audiosignalverarbeitungs-Code für einen Mikroprozessor unterwegs zu generieren.
Ich suche nach einer Möglichkeit, meinem default System Audio Ausgang Blockweise Audiosamples zum Playback zu übergeben. Im besten Fall passiert das in meiner Vorstellung einfach so, dass ich einen Audioausgang initialisiere, der alle (Blockgröße/Samplerate) Sekunden eine Callbackfunktion aufruft, welche entweder ein Array mit den neuen Samples zurückgibt oder diese an eine im Stelle ablegt, welche mir durch einen Pointer beim Aufruf der Callbackfunktion übergeben wird. Dachte ich würde zu so etwas haufenweise Samplecode finden, viel was ich gefunden habe bezieht sich aber auf Playback von Audiodateien, was ja nicht meine Baustelle ist, oder erscheint mir als nicht ansatzweise in OS X Frameworks bewanderter User viel zu unverständlich.
Im Grunde suche ich das C++ Pendant zu MATLABs dsp.AudioPlayer was in meiner Idealvorstellung irgendwie so benutzt werden könnte:
C-Quellcode
- #inlcude "myAlgorithm.h" //schon programmiert, enthält void myAlgorithm::computeBlock(float *inputBlock, float *outputBlock, int blockSize);
- #inclued "waveFileIO.h" //auch schon programmiert
- #define BLOCKSZE 256
- void myCallback(float *newBlockToPlay);
- waveFileIO inputFile;
- void main(){
- inputFile.read("Pfad/zu/Eingangsdatei.wav");
- AudioPlayer AP;
- AP.setSampleRate(48000);
- AP.setBlockSize(BLOCKSIZE);
- AP.setCallbackFunction(myCallback);
- AP.start();
- while(1){
- //auf Eingaben reagieren
- };
- return;
- }
- void myCallback(float *newBlockToPlay){
- float *newInputBlock
- newInputBlock=inputFile.getNextFloatBlock(BLOCKSIZE);
- myAlgorithm.computeBlock(newInputBlock, newBlockToPlay, BLOCKSIZE);
- return;
- };