我正在尝试在 JAVA 中构建一个“混合控制台”。在这个混音器中,每个“滑块”都是一条线,就好像它是一个物理混音控制台。但是,在我搜索 Goo*** 并阅读了oracle 文档之后,我并没有真正找到任何可以帮助我的东西。
首先,我列出了可用的混音器(见最后的代码),很高兴它列出了我所有的声卡,并找到了线路输入和线路输出。但是,我该怎么办?
我的目标是创建“虚拟线路”,它将从任何线路输入(麦克风)或线路输出(捕捉 VLC 中播放的声音)捕捉声音,让我“处理它”,然后将其重新注入另一条线路. 当然,我必须为每一行设置“输入”和“输出”的使用示例:
(麦克风)中的 3 条物理线路将被捕获,然后“调整电平”,然后重新注入一条称为“合唱”的虚拟线路,这条虚拟线路将重新注入我的主要物理线路,称为“大师级”。
VLC播放的歌曲(例如歌曲的旋律),通常直接发送到主“输出”,被捕获,就像“拦截”一样。然后我决定在将它重新注入我的Master并混合之前设置级别它与麦克风。因此,它可以让我根据音乐级别调整歌手级别。
那么,谁能帮助我开始和进步呢?谢谢你的帮助。
这是列出我的混音器的代码:
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Control;
import javax.sound.sampled.Line;
import javax.sound.sampled.Mixer;
public class Mixers {
Mixers() {
try {
//List of the mixers from the system
Mixer.Info[] mixerInfo = AudioSystem.getMixerInfo();
//Characteristics of each mixer
for (Mixer.Info info : mixerInfo) {
System.out.println("\n"+info+ " - Description : "+info.getDescription());
Mixer mix=AudioSystem.getMixer(info);
//Controles available for this mixer
for (Control c:mix.getControls()) {
System.out.println ("\t Control supported by this mixer : "+c);
}
//Sources available for this mixer
for (Line.Info i : mix.getSourceLineInfo()) {
System.out.println("\t Source line available : "+i);
//Controls available for this Source
for (Control c : AudioSystem.getLine(i).getControls()) {
System.out.println ("\t\t ==> Controls supported by this source : "+c);
}
}
// TargeLines available for this mixer
for (Line.Info i : mix.getTargetLineInfo()) {
System.out.println("\t Target line available : "+i);
//Controls available for this Target
for (Control c : AudioSystem.getLine(i).getControls()) {
System.out.println ("\t\t Controls supported by this target : "+c);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
再次感谢任何阅读我的帖子直到最后并为我提供解决方案的人。
尼古拉斯