Этот простой код не производит никакого звука на нескольких машинах, которые я использовал для его тестирования. Я запускаю код из 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();
}
}
Я могу успешно получить звук, получив секвенсор, добавив MIDI-события в последовательность и воспроизведя ее, но я пытаюсь создать некоторые музыкальные эффекты в реальном времени, которые секвенсор не поддерживает.
Есть идеи?
РЕДАКТИРОВАТЬ С РЕШЕНИЕМ: Оказывается, проблема в том, что по умолчанию JRE не поставляется со звуковым банком (интересно то, что с помощью Sequencer работал, но с помощью синтезатора не ' т). Спасибо, thejmc !
Чтобы решить эту проблему, я загрузил звуковой банк с java.sun.com и поместил его в (на WinXP) C: \ Program Files \ jre1.6.0_07 \ lib \ audio (пришлось сделать аудио папка).