2011-02-08 95 views
2

我試圖編寫一個函數來在Android上動態創建MIDI文件。由於沒有javax.sound.midi庫,我只是將字節寫出來存檔。我找到了一些很棒的指南(見下文),所以我已經能夠製作出多首midis。但是我一直無法弄清楚如何切換任何軌道的樂器,所以每個樂曲只是使用默認樂器。 我認爲從我讀取的文檔中我需要的代碼是「程序更改」,然後是程序編號。在MIDI編碼中改變樂器?

什麼我試過到目前爲止被寫出來之後到byteoutputstream陣列:

track.write((byte) 192); // 128 + 64 
track.write((byte) x); // x is the instrument number between 1-128. 

我開/關注意跟蹤信息的音符開始前把這個,但它不」除了讓midi需要很長時間才能開始,t似乎什麼都不做。我在這裏的正確軌道,還是我錯過了什麼?任何幫助表示讚賞。

http://faydoc.tripod.com/formats/mid.htm https://ccrma.stanford.edu/~craig/articles/linuxmidi/misc/essenmidi.html

回答

0

終於想通了。這只是一件簡單的事情,但我忘記了在程序更改之前加入賽道時間。一旦我添加了0字節它工作。