2013-05-09 10 views
7

Nie wiem zbyt wiele o funkcji MIDI Java. W rzeczywistości to mnie oszałamia. chciałbym jednak stworzyć tylko jedną prostą aplikację, która będzie odtwarzała jedną nutę.Początkujący MIDI - trzeba zagrać jedną nutę

Jak odtwarzać pojedynczą nutę MIDI za pomocą Java Sound?

Wsparcie dla tego w Internecie prawie nie istnieje, a ja jestem całkowicie zagubiony.

+4

Jakiego samouczka przeszedłeś i jak to działa? –

+2

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. –

+1

"Head First Java" autorstwa Sierra i Batesa ma na to przykładowy kod. –

Odpowiedz

7

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.