DataLine.Info info = new DataLine.Info(TargetDataLine.class, af);
DataLine.Info sinfo = new DataLine.Info(SourceDataLine.class, af);
try {
ByteArrayOutputStream baOut = new ByteArrayOutputStream();
TargetDataLine tl = (TargetDataLine) AudioSystem.getLine(info);
tl.open(af);
tl.start();
SourceDataLine sl = (SourceDataLine) AudioSystem.getLine(sinfo); // Neu:
// Line
// f�r
// Tonausgabe
sl.open(af); // �ffnen
sl.start(); // starten
int numBytesRead;
int durchlauf = 0;
byte[] ba = new byte[256]; // definieren und gleich einmal
// initialisieren.
while (durchlauf < 1000) {
durchlauf++;
numBytesRead = tl.read(ba, 0, ba.length);
baOut.write(ba, 0, numBytesRead);
sl.write(ba, 0, numBytesRead); // in Tonausgabe schreiben
}
baOut.close(); // close() ist wichtig, k�nnten noch Daten gepuffert
// sein
tl.stop(); // eingabe stoppen
sl.stop(); // ausgabe stoppen
tl.close(); // eingabe schliessen
sl.close(); // ausgabe schliessen
ba = baOut.toByteArray(); // ba liegt brach ruhig wieder verwenden
ByteArrayInputStream baIn = new ByteArrayInputStream(ba);
AudioInputStream stream = new AudioInputStream(baIn, af, ba.length
/ af.getFrameSize());