/** * Gets the Mixer to use. Depends upon selectedMixerIndex being defined. * * @see #newProperties */ private Mixer getSelectedMixer() { if (selectedMixerIndex.equals("default")) { return null; } else { Mixer.Info[] mixerInfo = AudioSystem.getMixerInfo(); if (selectedMixerIndex.equals("last")) { return AudioSystem.getMixer(mixerInfo[mixerInfo.length - 1]); } else { int index = Integer.parseInt(selectedMixerIndex); return AudioSystem.getMixer(mixerInfo[index]); } } }
/** * Try to get a line for output to the speaker. The line is not yet opened with a specific format. * * @return a line object, or null if the line could not be created. */ public SourceDataLine getSpeakerOutputLine() { Object audioDescriptor = cbSpeakerOutput.getSelectedItem(); assert audioDescriptor instanceof Mixer.Info; Mixer.Info mixerInfo = (Mixer.Info) audioDescriptor; Mixer mixer = AudioSystem.getMixer(mixerInfo); Line.Info[] lineInfos = mixer.getSourceLineInfo(); assert lineInfos.length > 0 : "Strange, there are no more source lines for mixer: " + mixer; Line.Info lineInfo = lineInfos[0]; SourceDataLine line = null; try { line = (SourceDataLine) mixer.getLine(lineInfo); } catch (LineUnavailableException e) { e.printStackTrace(); } return line; }
/** * Try to get a line for output to the expert. The line is not yet opened with a specific format. * * @return a line object, or null if the line could not be created. */ public SourceDataLine getExpertOutputLine() { Object audioDescriptor = cbExpertOutput.getSelectedItem(); assert audioDescriptor instanceof Mixer.Info; Mixer.Info mixerInfo = (Mixer.Info) audioDescriptor; Mixer mixer = AudioSystem.getMixer(mixerInfo); Line.Info[] lineInfos = mixer.getSourceLineInfo(); assert lineInfos.length > 0 : "Strange, there are no more source lines for mixer: " + mixer; Line.Info lineInfo = lineInfos[0]; SourceDataLine line = null; try { line = (SourceDataLine) mixer.getLine(lineInfo); } catch (LineUnavailableException e) { e.printStackTrace(); } return line; }
private static void dumpMixers() { Mixer.Info[] mixerInfo = AudioSystem.getMixerInfo(); for (int i = 0; i < mixerInfo.length; i++) { Mixer mixer = AudioSystem.getMixer(mixerInfo[i]); System.out.println("Mixer[" + i + "]: \"" + mixerInfo[i].getName() + '\"'); System.out.println(" Description: " + mixerInfo[i].getDescription()); System.out.println(" SourceLineInfo (e.g., speakers):"); dumpLineInfo(" ", mixer.getSourceLineInfo()); System.out.println(" TargetLineInfo (e.g., microphones):"); dumpLineInfo(" ", mixer.getTargetLineInfo()); } }
if (audioDescriptor instanceof Mixer.Info) { Mixer.Info mixerInfo = (Mixer.Info) audioDescriptor; Mixer mixer = AudioSystem.getMixer(mixerInfo); Line.Info[] lineInfos = mixer.getTargetLineInfo(); assert lineInfos.length > 0 : "Strange, there is no more line info for mixer: " + mixer;
/** * List Mixers. Only Mixers that support either TargetDataLines or SourceDataLines are listed, depending on the value of * bPlayback. * * @param bPlayback * bPlayback */ public static void listMixersAndExit(boolean bPlayback) { out("Available Mixers:"); Mixer.Info[] aInfos = AudioSystem.getMixerInfo(); for (int i = 0; i < aInfos.length; i++) { Mixer mixer = AudioSystem.getMixer(aInfos[i]); Line.Info lineInfo = new Line.Info(bPlayback ? SourceDataLine.class : TargetDataLine.class); if (mixer.isLineSupported(lineInfo)) { out(aInfos[i].getName()); } } if (aInfos.length == 0) { out("[No mixers available]"); } System.exit(0); }
return null; Mixer mixer = AudioSystem.getMixer(mixerInfo); targetDataLine = (TargetDataLine) mixer.getLine(info); } else {
/** * List Mixers. Only Mixers that support either TargetDataLines or SourceDataLines are listed, depending on the value of * bPlayback. * * @param bPlayback * bPlayback */ public static void listMixersAndExit(boolean bPlayback) { out("Available Mixers:"); Mixer.Info[] aInfos = AudioSystem.getMixerInfo(); for (int i = 0; i < aInfos.length; i++) { Mixer mixer = AudioSystem.getMixer(aInfos[i]); Line.Info lineInfo = new Line.Info(bPlayback ? SourceDataLine.class : TargetDataLine.class); if (mixer.isLineSupported(lineInfo)) { out(aInfos[i].getName()); } } if (aInfos.length == 0) { out("[No mixers available]"); } System.exit(0); }
return null; Mixer mixer = AudioSystem.getMixer(mixerInfo); targetDataLine = (TargetDataLine) mixer.getLine(info); } else {
/** * List Mixers. Only Mixers that support either TargetDataLines or SourceDataLines are listed, depending on the value of * bPlayback. * * @param bPlayback * bPlayback */ public static void listMixersAndExit(boolean bPlayback) { out("Available Mixers:"); Mixer.Info[] aInfos = AudioSystem.getMixerInfo(); for (int i = 0; i < aInfos.length; i++) { Mixer mixer = AudioSystem.getMixer(aInfos[i]); Line.Info lineInfo = new Line.Info(bPlayback ? SourceDataLine.class : TargetDataLine.class); if (mixer.isLineSupported(lineInfo)) { out(aInfos[i].getName()); } } if (aInfos.length == 0) { out("[No mixers available]"); } System.exit(0); }
return null; Mixer mixer = AudioSystem.getMixer(mixerInfo); targetDataLine = (TargetDataLine) mixer.getLine(info); } else {
/** * List Mixers. Only Mixers that support either TargetDataLines or SourceDataLines are listed, depending on the value of * bPlayback. * * @param bPlayback * bPlayback */ public static void listMixersAndExit(boolean bPlayback) { out("Available Mixers:"); Mixer.Info[] aInfos = AudioSystem.getMixerInfo(); for (int i = 0; i < aInfos.length; i++) { Mixer mixer = AudioSystem.getMixer(aInfos[i]); Line.Info lineInfo = new Line.Info(bPlayback ? SourceDataLine.class : TargetDataLine.class); if (mixer.isLineSupported(lineInfo)) { out(aInfos[i].getName()); } } if (aInfos.length == 0) { out("[No mixers available]"); } System.exit(0); }
return null; Mixer mixer = AudioSystem.getMixer(mixerInfo); targetDataLine = (TargetDataLine) mixer.getLine(info); } else {
private static void listTargetDataLines() { out("Available Mixers:"); Mixer.Info[] aInfos = AudioSystem.getMixerInfo(); for (int i = 0; i < aInfos.length; i++) { Mixer mixer = AudioSystem.getMixer(aInfos[i]); // mixer.open(); Line.Info[] lines = mixer.getTargetLineInfo(); out(aInfos[i].getName()); for (int j = 0; j < lines.length; j++) { out(" " + lines[j].toString()); if (lines[j] instanceof DataLine.Info) { AudioFormat[] formats = ((DataLine.Info) lines[j]).getFormats(); for (int k = 0; k < formats.length; k++) { out(" " + formats[k].toString()); } } } } }
public LinePool(AudioFormat audioFormat, int size, int alwaysActive) { this.alwaysActive = alwaysActive; mixer = AudioSystem.getMixer(null); DataLine.Info lineInfo = new DataLine.Info(SourceDataLine.class, audioFormat); for (int i = 0; i < size; i++) { try { SourceDataLine line = (SourceDataLine) mixer.getLine(lineInfo); freeLines.add(line); } catch (LineUnavailableException e) { log.warn("Failed to get line from mixer", e); } } new Timer("Line cleanup", true).scheduleAtFixedRate(new TimerTask() { @Override public void run() { synchronized (LinePool.this) { for (SourceDataLine sourceDataLine : freeLines) { if (sourceDataLine.isOpen()) { sourceDataLine.close(); log.debug("Closed line {}", sourceDataLine); } } } } }, LINE_CLEANUP_INTERVAL, LINE_CLEANUP_INTERVAL); }
private static void listTargetDataLines() { out("Available Mixers:"); Mixer.Info[] aInfos = AudioSystem.getMixerInfo(); for (int i = 0; i < aInfos.length; i++) { Mixer mixer = AudioSystem.getMixer(aInfos[i]); // mixer.open(); Line.Info[] lines = mixer.getTargetLineInfo(); out(aInfos[i].getName()); for (int j = 0; j < lines.length; j++) { out(" " + lines[j].toString()); if (lines[j] instanceof DataLine.Info) { AudioFormat[] formats = ((DataLine.Info) lines[j]).getFormats(); for (int k = 0; k < formats.length; k++) { out(" " + formats[k].toString()); } } } } }
private static void listTargetDataLines() { out("Available Mixers:"); Mixer.Info[] aInfos = AudioSystem.getMixerInfo(); for (int i = 0; i < aInfos.length; i++) { Mixer mixer = AudioSystem.getMixer(aInfos[i]); // mixer.open(); Line.Info[] lines = mixer.getTargetLineInfo(); out(aInfos[i].getName()); for (int j = 0; j < lines.length; j++) { out(" " + lines[j].toString()); if (lines[j] instanceof DataLine.Info) { AudioFormat[] formats = ((DataLine.Info) lines[j]).getFormats(); for (int k = 0; k < formats.length; k++) { out(" " + formats[k].toString()); } } } } }
private static void listTargetDataLines() { out("Available Mixers:"); Mixer.Info[] aInfos = AudioSystem.getMixerInfo(); for (int i = 0; i < aInfos.length; i++) { Mixer mixer = AudioSystem.getMixer(aInfos[i]); // mixer.open(); Line.Info[] lines = mixer.getTargetLineInfo(); out(aInfos[i].getName()); for (int j = 0; j < lines.length; j++) { out(" " + lines[j].toString()); if (lines[j] instanceof DataLine.Info) { AudioFormat[] formats = ((DataLine.Info) lines[j]).getFormats(); for (int k = 0; k < formats.length; k++) { out(" " + formats[k].toString()); } } } } }
Mixer mixer = AudioSystem.getMixer(mixerInfo[ii]); data = mergeArrays( "Source",