Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java Sound API - capturing microphone

I have been reading up on the Sound API for Java for a couple of days I am unable to make sense of it. I am decent programmer, I just having difficulty getting my head around the API.

I have been trying to capture audio from my microphone and display a wave graph in real time.

I am having trouble capturing audio, they say in the tutorial to do this, but I cant seem to get it to work.

Any suggestions and help would be much appreciated, a line by line answer would be ideal.

Please and thank you.

import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.DataLine; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.TargetDataLine;  public class FindLine {   public static void main (String[] args){    AudioFormat format = new AudioFormat(22000,16,2,true,true);   TargetDataLine line;   DataLine.Info info = new DataLine.Info(TargetDataLine.class,        format); // format is an AudioFormat object   if (!AudioSystem.isLineSupported(info)) {       // Handle the error ...    }   // Obtain and open the line.   try {       line = (TargetDataLine) AudioSystem.getLine(info);       line.open(format);   } catch (LineUnavailableException ex) {       // Handle the error ...    }  }  } 
like image 724
myusuf3 Avatar asked Sep 14 '10 01:09

myusuf3


People also ask

How do I access my microphone in Java?

try { line = (TargetDataLine) AudioSystem. getLine(info); line. open(format); } catch (LineUnavailableException ex) { // Handle the error ... } } }

How do you record audio in Java?

Obtain a TargetDataLine object which represents an input data line from which audio data can be captured, using the method getLineInfo(DataLine.Info) of the AudioSystem class. Open and start the target data line to begin capturing audio data. Create an AudioInputStream object to read data from the target data line.

What is Java Sound API?

The Java Sound API specification provides low-level support for audio operations such as audio playback and capture (recording), mixing, MIDI sequencing, and MIDI synthesis in an extensible, flexible framework.

What is audio capturing?

Capturing refers to the process of obtaining a signal from outside the computer. A common application of audio capture is recording, such as recording the microphone input to a sound file.


1 Answers

This will get you the default one set by your OS.

AudioFormat format = new AudioFormat(8000.0f, 16, 1, true, true); TargetDataLine microphone = AudioSystem.getTargetDataLine(format); 

To select a particular input device (TargetDataLine) it is better to enumerate the mixers and filter the name of the Mixer you want.

 Mixer.Info[] mixerInfos = AudioSystem.getMixerInfo();  for (Mixer.Info info: mixerInfos){   Mixer m = AudioSystem.getMixer(info);   Line.Info[] lineInfos = m.getSourceLineInfo();   for (Line.Info lineInfo:lineInfos){    System.out.println (info.getName()+"---"+lineInfo);    Line line = m.getLine(lineInfo);    System.out.println("\t-----"+line);   }   lineInfos = m.getTargetLineInfo();   for (Line.Info lineInfo:lineInfos){    System.out.println (m+"---"+lineInfo);    Line line = m.getLine(lineInfo);    System.out.println("\t-----"+line);    }   } 
like image 188
DannyM Avatar answered Oct 20 '22 04:10

DannyM