Вопрос

Есть очень крутая аудио "игрушка" под названием ТонМатрикс.Я хотел бы переопределить его как Java-апплет.Я пробовал использовать JFugue's player.play с отдельными нотами для звука и Thread.sleep по времени, но результаты ужасны.

JFugue перестает отвечать после 17-го (да, действительно, я посчитал) вызова player.play и Thread.sleep слишком нерегулярно, чтобы обеспечить хороший ритм.

Что бы вы порекомендовали вместо этого?По сути, я ищу простой способ генерировать отдельные звуковые ноты на лету.Таким образом, за долю секунды до начала воспроизведения звука мне нужно просмотреть данные и сообщить аудиотеке, какие ноты воспроизводить.(Вероятно наличие нескольких нот в гармонии.)

Это было полезно?

Решение

Я предполагаю, что вы забываете отключить ноты в JFugue, или есть ошибка, из-за которой вы забываете прекратить воспроизведение нот после запуска.

Использование MIDI — довольно простой способ сделать то, о чем вы говорите.Вот небольшая смесь полезных методов в пакете MIDI, которые помогут вам начать:

Synthesizer synth = MidiSystem.getSynthesizer();
synth.open();
MidiChannel midiChannel = synth.getChannels()[0];
midiChannel.allNotesOff();
currentInstrument = synth.getAvailableInstruments()[index];
System.out.println("Switching instrument to #" + index + ": " + currentInstrument.getName());
synth.loadInstrument(currentInstrument);
midiChannel.programChange(currentInstrument.getPatch().getBank(), currentInstrument.getPatch().getProgram());
midiChannel.noteOn(noteNumber, velocity);
midiChannel.noteOff(noteNumber);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top