Mitglied 7974
Gast
Hallo!
Ich habe mir vor Kurzem unter Java einen kleinen Synthesizer gebastelt, der mir einfach nur Sinus-, Dreieck-, Sägezahn- und Pulswellen und Rauschen erzeugt. Das ging mit Java recht einfach, auch wenn ich ein wenig googlen musste, bis ich ein Code-Fragment fand, das ich auch kapierte.
Dieser Erfolg ist mir unter Objective-C allerdings noch verwehrt geblieben und deshalb wende ich mich nun an euch Objective-C-Gurus. Was genau will ich also?
Nun, ich möchte so auf die Soundkarte zugreifen können, dass ich in Echtzeit einen Audiostream an die Soundkarte übergeben kann, welcher dann natürlich auch ausgegeben wird. Unter Java sieht das in etwa so aus, wobei ich auf Fehlerbehandlung verzichte und stellenweise eher pseudocodeartig artikuliere:
Ich hoffe, der Code zeigt euch, auf was ich hinaus will.
Wie dem auch sei, ich habe jedenfalls noch kein passendes Tutorial im Netz gefunden bzw. das CoreAudio-Tutorial von Apple einfach noch nicht kapiert. Es wäre daher echt super, wenn jemand von euch die Knoten in meinem Hirn entwirren könnte, indem er mir erklärt, wie ich den oben beschriebenen Java-Code nach Objective-C portieren könnte. Sobald der Soundkartenzugriff geklärt ist, sollte ich wieder allein zurecht kommen können.
Ich danke für jeden konstruktiven Beitrag.
Gruß,
Matthias
Ich habe mir vor Kurzem unter Java einen kleinen Synthesizer gebastelt, der mir einfach nur Sinus-, Dreieck-, Sägezahn- und Pulswellen und Rauschen erzeugt. Das ging mit Java recht einfach, auch wenn ich ein wenig googlen musste, bis ich ein Code-Fragment fand, das ich auch kapierte.
Dieser Erfolg ist mir unter Objective-C allerdings noch verwehrt geblieben und deshalb wende ich mich nun an euch Objective-C-Gurus. Was genau will ich also?
Nun, ich möchte so auf die Soundkarte zugreifen können, dass ich in Echtzeit einen Audiostream an die Soundkarte übergeben kann, welcher dann natürlich auch ausgegeben wird. Unter Java sieht das in etwa so aus, wobei ich auf Fehlerbehandlung verzichte und stellenweise eher pseudocodeartig artikuliere:
Code:
import java.sound.sampled.*;
class SoundTest {
public void synthesizer() {
/* Audioausgabeeigenschaften konfigurieren */
float sampleRate = 44100f;
int bits = 16;
int channels = 2;
/* Entsprechendes AudioFormat erzeugen und Live-Synthese starten */
AudioFormat af = new AudioFormat(sampleRate, bits, channels, true, false);
SourceDataLine sdl = AudioSystem.getSourceDataLine(af);
sdl.open();
sdl.start();
/* Nun Wellenformen erzeugen und an die Soundkarte übergeben */
for (irgend; welche; bedinungen) {
byte[] buffer = new byte[8];
byte sample = /* Über irgendeinen Algorithmus irgendeine Wellenform berechnen */;
/* Jedes buffer-Element mit sample befüllen */
sdl.write(buffer, 0, 8);
}
/* Soundkartenzugriff wieder beenden */
sdl.stop();
sdl.drain();
sdl.close();
}
}
Ich hoffe, der Code zeigt euch, auf was ich hinaus will.
Wie dem auch sei, ich habe jedenfalls noch kein passendes Tutorial im Netz gefunden bzw. das CoreAudio-Tutorial von Apple einfach noch nicht kapiert. Es wäre daher echt super, wenn jemand von euch die Knoten in meinem Hirn entwirren könnte, indem er mir erklärt, wie ich den oben beschriebenen Java-Code nach Objective-C portieren könnte. Sobald der Soundkartenzugriff geklärt ist, sollte ich wieder allein zurecht kommen können.
Ich danke für jeden konstruktiven Beitrag.
Gruß,
Matthias