Я пытаюсь создать «микшерный пульт» в JAVA. В этом микшере каждый «слайдер» будет строкой, как если бы это была физическая консоль микширования. Но после моего поиска на Goo *** и прочитал oracle documentation, я действительно ничего не нашел, чтобы помочь мне.Принимая управление soundCard с помощью JAVA
Во-первых, я перечисляю доступные смесители (см. Код в конце) и, к счастью, он перечисляет все мои звуковые карты и находит строку и линию. Но тогда, что я должен делать?
Моя цель - создать «виртуальную линию», которая будет захватывать звук из любой линии (микрофона) или линейного выхода (захват звука, воспроизводимого в VLC), что позволяет мне «работать с ним», а затем повторно вводить это в другой строке. Конечно, мне придется установить для каждой строки, которая является «в» и который является «из» Примеры использования:
3 физических линий в (микрофоны) было бы поймать, то «уровень отредактирован », а затем повторно внедрен в виртуальную линию, которая будет называться« хором », и эта виртуальная линия будет повторно перенесена в мою основную физическую линию, называемую« Master level ».
песня, которую играет VLC (например, мелодия песни), которая обычно отправляется на главный «выход», как «перехват». Затем я решил установить уровень перед его повторным запуском в моем Мастера и смешать его с микрофоном. Таким образом, это позволит мне настроить уровень певца с уровнем музыки.
Итак, кто мог бы помочь мне начать и прогресс? Спасибо за вашу помощь .
Код - список, который отображает мои миксеры:
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();
}
}
}
Еще раз спасибо всем, кто не читал мой пост до конца и дать мне начало решения.
Николя
API-интерфейсы Java звучат только в текущей версии JVM. Они не могут использоваться для перехвата вывода из другой программы. –
Хорошо .. Хорошо. Так что, если я играю звук в JVM с помощью vlcj например? Поскольку это другая тема, я открыл новый вопрос (спасибо, если вы можете прочитать и помочь мне тоже): http://stackoverflow.com/questions/34394960/catching-the-sound-played-with-vlcj –