Re: reading sound card output?
I realized I omitted some info: I'm only getting 3 lines showing up on
your program.
Also, I wrote the following program to see if I could get a valid
speaker port and record from it. The port was valid, but I can't
record. I assume that's because as a port the speaker is play only,
not record.
//////////////////////////////
import javax.sound.sampled.*;
import java.io.*;
public class Test {
public static void main(String args[])
{
Mixer.Info[] mixerInfo = AudioSystem.getMixerInfo();
AudioFormat audioFormat = new AudioFormat(
AudioFormat.Encoding.PCM_SIGNED,
44100.0F, 16, 2, 4, 44100.0F, false);
Port.Info portInfo = new Port.Info(TargetDataLine.class,
Port.Info.SPEAKER.getName(), false);
DataLine.Info dataLineInfo = new
DataLine.Info(portInfo.getLineClass(),
audioFormat);
Mixer mixer = AudioSystem.getMixer(mixerInfo[3]);
TargetDataLine targetDataLine = null;
try {
targetDataLine = (TargetDataLine)mixer.getLine(dataLineInfo);
targetDataLine.open(audioFormat);
} catch ( Exception e) { System.out.println("E: "+e); }
int numBytesAvailable = targetDataLine.available();
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
String exitQ = null;
targetDataLine.start();
while(true) {
byte tempBuffer[] = new byte[10000];
targetDataLine.read(tempBuffer, 0, tempBuffer.length);
System.out.println(tempBuffer.toString());
System.out.println("# bytes available = "+numBytesAvailable);
try {
exitQ = br.readLine();
} catch (IOException ioe) {
System.out.println("IO error trying read exit code!");
System.exit(1);
}
if (exitQ.charAt(0)=='e') { System.out.println("Goodbye");
System.exit(1); } //type e to exit
}
}
}