Question

Il y a un "jouet" audio vraiment cool appelé ToneMatrix . Je voudrais réimplémentez comme une applet Java. Je l'ai essayé d'utiliser JFugue 's player.play avec des notes individuelles pour le son et Thread.sleep pour le moment, mais les résultats sont horrible.

JFugue cesse de répondre après le 17 (oui, vraiment, je comptais) invocation de player.play et Thread.sleep est trop irrégulière pour offrir un bon rythme.

Que recommanderiez-vous à la place? Au fond, je suis à la recherche d'un moyen simple pour générer des notes uniques de son à la volée. Ainsi, une fraction de seconde avant que le son est due à jouer, je dois pouvoir regarder les données et dire la bibliothèque audio que les notes à jouer. (Notes multiples en harmonie probablement.)

Était-ce utile?

La solution

Je suppose que tu oublies de transformer les notes hors de JFugue, ou il y a un bug qui oublie d'arrêter de jouer les notes une fois commencé.

Utilisation du MIDI est une façon de faire assez facile ce que vous parlez. Voici un peu d'un méli-mélo de méthodes utiles dans le package midi qui vous permettront de démarrer:

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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top