Wiem, że to naprawdę stare pytanie, ale jako początkujący programista miałem bardzo trudny czas, zastanawiając się, jak to zrobić, więc pomyślałem, że podzielę się następującym programem w stylu "cześć świat", który pobiera Javę aby zagrać pojedynczą notatkę midi, aby pomóc każdemu innemu zacząć.
import javax.sound.midi.*;
public class MidiTest{
public static void main(String[] args) {
try{
/* Create a new Sythesizer and open it. Most of
* the methods you will want to use to expand on this
* example can be found in the Java documentation here:
* https://docs.oracle.com/javase/7/docs/api/javax/sound/midi/Synthesizer.html
*/
Synthesizer midiSynth = MidiSystem.getSynthesizer();
midiSynth.open();
//get and load default instrument and channel lists
Instrument[] instr = midiSynth.getDefaultSoundbank().getInstruments();
MidiChannel[] mChannels = midiSynth.getChannels();
midiSynth.loadInstrument(instr[0]);//load an instrument
mChannels[0].noteOn(60, 100);//On channel 0, play note number 60 with velocity 100
try { Thread.sleep(1000); // wait time in milliseconds to control duration
} catch(InterruptedException e) { }
mChannels[0].noteOff(60);//turn of the note
} catch (MidiUnavailableException e) {}
}
}
Powyższy kod został utworzony przede wszystkim przez wycięcie, wklejenie i pomieszanie kodu znajdującego się w kilku samouczkach online. Oto najbardziej przydatne samouczki, które znalazłem:
http://www.ibm.com/developerworks/library/it/it-0801art38/ To świetny samouczek i prawdopodobnie zawiera wszystko, czego szukasz; jednak na początku może to być trochę przytłaczające.
http://patater.com/gbaguy/javamidi.htm Zawiera kod nieprogramowy napisany przez piętnastolatka. To była - co zaskakujące - najbardziej pomocna rzecz, jaką znalazłem.
Życzymy powodzenia. Pozdrawiam.
Jakiego samouczka przeszedłeś i jak to działa? –
Przejdź przez zasoby powiązane z [Informacje dźwiękowe Java. strona] (http://stackoverflow.com/tags/javasound/info). Istnieje również krótkie źródło, które powinno odtwarzać melodię MIDI. –
"Head First Java" autorstwa Sierra i Batesa ma na to przykładowy kod. –