Frage

Es ist ein wirklich cooles Audio "Spielzeug" genannt ToneMatrix . Ich möchte es als Java-Applet neu zu implementieren. Ich habe versucht mit JFugue 's player.play mit einzelnen Noten für Ton und Thread.sleep für Timing, aber die Ergebnisse sind schrecklich.

JFugue reagiert nicht nach dem 17. (ja, wirklich, ich gezählt) Aufruf von player.play und Thread.sleep zu unregelmäßig ist, einen guten Rhythmus zu liefern.

Was würden Sie empfehlen, stattdessen? Grundsätzlich bin ich der Suche nach einem einfachen Weg, einzelne Noten von Sound on the fly zu generieren. So ein Bruchteil einer Sekunde vor dem Ton ist aufgrund zu spielen, muss ich an die Daten anschauen zu können und die Audio-Bibliothek sagen, was zu spielenden Noten. (Mehrere Notizen in Harmonie sind wahrscheinlich.)

War es hilfreich?

Lösung

Meine Vermutung ist, Sie zu vergessen, die Noten in JFugue auszuschalten, oder es gibt einen Fehler, der die Noten einmal begonnen zu stoppen vergessen zu spielen.

Verwendung von MIDI ist eine ziemlich einfache Art und Weise zu tun, was du redest. Hier ist ein bisschen wie ein Sammelsurium von nützlichen Methoden in dem Midi-Paket, das Sie erhält begonnen:

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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top