Этот простой код не производит никакого звука на нескольких машинах, которые я использовал для его проверки. Я запускаю код из Eclipse, но я также попытался использовать командную строку безрезультатно.
public static void main(String[] args)
{
try {
Synthesizer synthesizer = MidiSystem.getSynthesizer();
synthesizer.open();
MidiChannel[] channels = synthesizer.getChannels();
channels[0].noteOn(60, 60);
Thread.sleep(200);
channels[0].noteOff(60);
synthesizer.close();
} catch (Exception e)
{
e.printStackTrace();
}
}
Я могу успешно получить звук, получив Sequencer, добавив MIDI-последовательности в последовательность и воспроизведя последовательность, но я пытаюсь сделать некоторые музыкальные эффекты в реальном времени, которые секвенсор не поддерживает.
Любые идеи?
РЕДАКТИРОВАТЬ С РЕШЕНИЕМ: Оказывается, проблема заключается в том, что по умолчанию JRE не имеет звуковой банк (интересно, что использование Sequencer сработало, но с использованием Synthesizer didn "т). Спасибо, thejmc!
Чтобы решить эту проблему, я скачал звуковой банк из java.sun.com и разместил его в (на WinXP). C:\Program Файлы \jre1.6.0_07\lib\audio (должны были сделать аудио-папку).