2017-09-01 63 views
0

我一直在閱讀Head First Java,這是練習製作音序器和演奏midi的代碼。事情是,我沒有聽到我通過帖子搜索的任何東西,我聽說有一個soundbank.gm文件,我得到和放置什麼都沒有。無法確定它是我的代碼還是我的個人電腦,因爲本書尚未解釋所有這些內容。Program not not produce Midi sound

import javax.sound.midi.*; 
public class MiniMiniMusicApp { 
    public static void main(String[] args){ 
     MiniMiniMusicApp mini = new MiniMiniMusicApp(); 
     mini.play(); 
    } 

    public void play(){ 
     try{ 
      Sequencer player = MidiSystem.getSequencer(); //get a sequencer 
      player.open(); //open it 
      Sequence seq = new Sequence(Sequence.PPQ, 4); 
      Track track = seq.createTrack(); //ask the sequence for a track; 
      ShortMessage b = new ShortMessage(); //Put some midi events into the Track. 
      b.setMessage(128,1,44,100); 
      MidiEvent noteOff = new MidiEvent(b, 16); 
      track.add(noteOff); 
      player.setSequence(seq); //give the Sequence to the sequencer 
      player.start(); // press play. 
      Thread.sleep(2000); 
      player.close(); 
     }catch(Exception ex){ 
      ex.printStackTrace(); 
     } 
    } 
} 

回答

1

您錯過了note_on。例如:

ShortMessage b = new ShortMessage(); 
b.setMessage(144, 0, 60, 127); 
MidiEvent noteOn = new MidiEvent(b, 2); 
track.add(noteOn); 

// Here's your note_off 
ShortMessage b1 = new ShortMessage(); 
b1.setMessage(128, 1, 44, 100); 
MidiEvent noteOff = new MidiEvent(b1, 16); 
track.add(noteOff); 
+0

我有點困惑我會把這個noteOn,如果它之前或之後noteOff?編輯沒關係我得到它的工作 – Jude