複数の出力を備えたサウンドカードがあり、ALSAを使用してそれらを2つの別々のステレオチャンネルにマッピングしています。構成は正常に機能し、たとえばスピーカーテストを使用してオーディオを再生できます。
ここで、AudioSystem APIを使用して、これら2つのステレオ出力をJavaプログラムで使用したいと思います。ただし、stereo1とstereo2はMixerInfoを使用して表示されません。
私は、JavaがAudioSystemAPIを使用して公開する「デバイス」をどのように決定するかを本当に理解していません。私は現在、Ubuntu11.10システムでこれをテストしています。
これは、使用されるasound.confです。
#/etc/asound.conf
pcm_slave.fourchannels {
pcm "hw:0,0"
channels 4
}
pcm.stereo1 {
type plug
slave.pcm {
type dshare
ipc_key 87882222
slave fourchannels
bindings [ 0 1 ]
}
}
pcm.stereo2 {
type plug
slave.pcm {
type dshare
ipc_key 87882222
slave fourchannels
bindings [ 2 3 ]
}
}
これは、使用可能な入力と出力を表示するために使用しているコードです。
Mixer.Info[] mixers = AudioSystem.getMixerInfo();
for (Mixer.Info mixerInfo : mixers) {
System.out.println("Found Mixer: " + mixerInfo);
Mixer m = AudioSystem.getMixer(mixerInfo);
Line.Info[] sourceLines = m.getSourceLineInfo();
for (Line.Info li : sourceLines) {
System.out.println(" Found source line: " + li);
try {
m.open();
} catch (LineUnavailableException e) {
System.out.println(" Line unavailable.");
}
}
Line.Info[] targetLines = m.getTargetLineInfo();
for (Line.Info li : targetLines) {
System.out.println(" Found source line: " + li);
try {
m.open();
} catch (LineUnavailableException e) {
System.out.println(" Line unavailable.");
}
}
}