good question. could anyone run the attached app on Leopard and
send us the output?
e.g. with
javac ListMixers.java
java -showversion ListMixers
Thanks,
Florian
On 10/27/2007 12:00 AM, Yong Hyeon Yoon wrote:
> I guess Java 1.5 on Leopard is implemented differently from that of Tiger.
>
> Has anyone tested Java Sound with Java 1.5 on Leopard?
> Is it still broken?
>
> It would be very interesting to know if Java Sound on PPC with 32-bit
> JVM, and on Intel with 32-bit and 64-bit JVM are working correctly.
>
> Yong
>
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Java-dev mailing list (email@hidden)
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/java-dev/email@hidden
>
> This email sent to email@hidden
>
>
--
Florian Bomers
Bome Software
-------------------------------------------------------
Music Software, Development Tools: http://www.bome.com
Java Sound extensions, plugins: http://www.tritonus.org
The Java Sound Resources: http://www.jsresources.org
-------------------------------------------------------
Please quote this email in your reply. Thanks!
/*
* Show installed mixers and additional info
*
* @author Florian Bomers
*/
import javax.sound.sampled.*;
public class ListMixers {
private static boolean doPrintControls = true;
private static boolean doPrintFormats = true;
private static boolean doTimeAudioSystem = false;
private static boolean setBooleanPorts = false;
private static boolean setFloatPorts = false;
public static void main(String[] args) {
// parse arguments
for (int i = 0; i < args.length; i++) {
if (args[i].equals("-c")) {
doPrintControls = true;
} else if (args[i].equals("-s")) {
setBooleanPorts = true;
setFloatPorts = true;
} else if (args[i].equals("-t")) {
doTimeAudioSystem = true;
} else if (args[i].equals("-f")) {
doPrintFormats = true;
} else {
printUsage();
}
}
beforeTiming();
Mixer.Info[] aInfos = AudioSystem.getMixerInfo();
afterTiming("AudioSystem.getMixerInfo()");
for (int i = 0; i < aInfos.length; i++) {
try {
beforeTiming();
Mixer mixer = AudioSystem.getMixer(aInfos[i]);
afterTiming("AudioSystem.getMixer("+i+": "+aInfos[i]+")");
System.out.println(""+i+": "+aInfos[i].getName()+", "
+aInfos[i].getVendor()+", "
+aInfos[i].getVersion()+", "
+aInfos[i].getDescription());
printLines(mixer, mixer.getSourceLineInfo());
printLines(mixer, mixer.getTargetLineInfo());
} catch (Exception e) {
e.printStackTrace();
}
}
if (aInfos.length == 0) {
System.out.println("[No mixers available]");
}
System.exit(0);
}
public static void printLines(Mixer mixer, Line.Info[] infos) {
for (int i = 0; i<infos.length; i++) {
try {
if (infos[i] instanceof Port.Info) {
Port.Info info = (Port.Info) infos[i];
System.out.println(" Port "+info);
}
if (infos[i] instanceof DataLine.Info) {
DataLine.Info info = (DataLine.Info) infos[i];
System.out.println(" Line "+info+" (max. "+mixer.getMaxLines(info)+" simultaneously): ");
if (doPrintFormats) {
printFormats(mixer, info);
}
}
if (doPrintControls) {
Line line = (Line) mixer.getLine(infos[i]);
if (! (line instanceof Clip)) {
line.open();
}
try {
printControls(line.getControls());
} finally {
if (! (line instanceof Clip)) {
line.close();
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void printFormats(Mixer mixer, DataLine.Info info) {
AudioFormat[] formats = info.getFormats();
for (int i = 0; i < formats.length; i++) {
System.out.println(" "+i+": "+formats[i]
+" ("+formats[i].getChannels()+" channels, "
+"frameSize="+formats[i].getFrameSize()+", "
+(formats[i].isBigEndian()?"big endian":"little endian")
+")");
}
if (formats.length == 0) {
System.out.println(" [no formats]");
}
}
public static void printControls(Control[] controls) {
for (int i = 0; i<controls.length; i++) {
printControl(" ", "Controls["+i+"]: ", controls[i]);
}
if (controls.length == 0) {
System.out.println(" [no controls]");
}
}
static boolean balanceTested = false;
public static void printControl(String indent, String id, Control control) {
if (control instanceof BooleanControl) {
BooleanControl ctrl = (BooleanControl) control;
System.out.println(indent+id+"BooleanControl: "+ctrl);
if (setBooleanPorts) {
try {
Thread.sleep(500);
ctrl.setValue(!ctrl.getValue());
Thread.sleep(500);
ctrl.setValue(!ctrl.getValue());
} catch (Exception e) {}
}
}
else if (control instanceof CompoundControl) {
CompoundControl ctrl = (CompoundControl) control;
Control[] ctrls = ctrl.getMemberControls();
System.out.println(indent+id+"CompoundControl: "+control);
for (int i=0; i<ctrls.length; i++) {
printControl(indent+" ", "MemberControls["+i+"]: ", ctrls[i]);
}
}
else if (control instanceof EnumControl) {
EnumControl ctrl = (EnumControl) control;
Object[] values = ctrl.getValues();
Object value = ctrl.getValue();
System.out.println(indent+id+"EnumControl: "+control);
for (int i=0; i<values.length; i++) {
if (values[i] instanceof Control) {
printControl(indent+" ", "Values["+i+"]: "+((values[i]==value)?"*":""), (Control) values[i]);
} else {
System.out.println(indent+" Values["+i+"]: "+((values[i]==value)?"*":"")+values[i]);
}
}
}
else if (control instanceof FloatControl) {
FloatControl ctrl = (FloatControl) control;
System.out.println(indent+id+"FloatControl: "+ctrl);
if (setFloatPorts) {
try {
Thread.sleep(500);
float x = ctrl.getValue();
ctrl.setValue((float) (Math.random()*(ctrl.getMaximum() - ctrl.getMinimum()) + ctrl.getMinimum()));
Thread.sleep(1000);
ctrl.setValue(x);
} catch (Exception e) {}
//if (ctrl.getType() == FloatControl.Type.BALANCE && !balanceTested) {
// balanceTested = true;
// for (float y = -1.0f; y<=1.0f; y+=0.02) {
// ctrl.setValue(y);
// System.out.println(" Set to "+y);
// System.out.println(" res "+ctrl.getValue());
// }
//}
}
} else {
System.out.println(indent+id+"Control: "+control);
}
}
private static long startTime;
private static void beforeTiming() {
if (doTimeAudioSystem) {
//startTime = System.nanoTime();
startTime = System.currentTimeMillis();
}
}
private static void afterTiming(String s) {
if (doTimeAudioSystem) {
//long durationMicros = (System.nanoTime() * startTime) / 1000;
long durationMicros = (System.currentTimeMillis() - startTime) * 1000;
System.out.println(""+durationMicros+" microseconds used by: "+s);
}
}
static void printUsage() {
System.out.println("Usage:");
System.out.println("ListMixers [-h] [-c] [-f]");
System.out.println("-h: show this help");
System.out.println("-c: for each line, show available controls");
System.out.println("-f: for each DataLine, show available formats");
System.out.println("-t: measure the execution time of AudioSystem methods");
//System.out.println("-s: set random port controls");
System.exit(0);
}
}
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Java-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/java-dev/email@hidden
This email sent to email@hidden