Domanda

Non è un davvero cool audio "giocattolo" chiamato ToneMatrix . Vorrei reimplementare come un applet Java. Ho provato con JFugue 's player.play con singole note per il suono e Thread.sleep per la temporizzazione, ma i risultati sono orribile.

JFugue smette di rispondere dopo il 17 (sì, davvero, ho contato) invocazione player.play e Thread.sleep è troppo irregolare per fornire un buon ritmo.

Che cosa consiglierebbe invece? Fondamentalmente, io sto cercando un modo semplice per generare singole note del suono in tempo reale. Quindi, una frazione di secondo prima che il suono è dovuto a giocare, ho bisogno di essere in grado di guardare i dati e dire la libreria audio quali note suonare. (Note multiple in armonia sono probabili.)

È stato utile?

Soluzione

La mia ipotesi è che stai dimenticando di trasformare le note via in JFugue, o c'è un bug che sta dimenticando di smettere di suonare le note una volta avviato.

Usando il MIDI è un modo abbastanza facile da fare che cosa si sta parlando. Ecco un po 'di un miscuglio di metodi utili nel pacchetto MIDI che vi consentiranno di iniziare:

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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top