2012-06-16 102 views
5

我正在寫一個腳本根據各個像素的RGBA值將圖片轉換爲MIDI筆記。但是,我似乎無法完成最後一步工作,即將筆記實際輸出到文件。我嘗試過使用MIDIUtil庫,但它的文檔並不是最好的,我似乎無法弄清楚。 如果有人能告訴我如何排列音符的順序(以便它們不是全部從頭開始),這將不勝感激。如何用Python編寫MIDI文件?

在此先感謝。

+0

您是否記得寫出延遲? –

回答

10

在研究樣本,像

from midiutil.MidiFile import MIDIFile 

# create your MIDI object 
mf = MIDIFile(1)  # only 1 track 
track = 0 # the only track 

time = 0 # start at the beginning 
mf.addTrackName(track, time, "Sample Track") 
mf.addTempo(track, time, 120) 

# add some notes 
channel = 0 
volume = 100 

pitch = 60   # C4 (middle C) 
time = 0    # start on beat 0 
duration = 1   # 1 beat long 
mf.addNote(track, channel, pitch, time, duration, volume) 

pitch = 64   # E4 
time = 2    # start on beat 2 
duration = 1   # 1 beat long 
mf.addNote(track, channel, pitch, time, duration, volume) 

pitch = 67   # G4 
time = 4    # start on beat 4 
duration = 1   # 1 beat long 
mf.addNote(track, channel, pitch, time, duration, volume) 

# write it to disk 
with open("output.mid", 'wb') as outf: 
    mf.writeFile(outf) 
+0

如果您使用的是Python 3,則應該用'from midiutil.MidiFile3 import MIDIFile'替換第一行。 – Cai

+0

如何添加曲目結束消息到此? – kurtosis

8

我知道這是一個古老的職位,但我是庫的作者,我想提一提,Python 2和3的支持,現在已經統一,並與谷歌代碼的消亡代碼現在託管GitHub,可以通過PIP進行安裝,即:

pip install MIDIUtil 

文件可在Read The Docs

(試圖發表評論,但我缺少點經驗。)

是當文件被寫入磁盤自動創建結束跟蹤郵件。

+2

嗨馬克。我有一個連續時間戳的文件,並且對於文件中的每個時間戳,我想播放一個音符,比如C64 Maj。沒有節奏,就像即興創作,郵票是隨機的......我怎麼將它們「按原樣」放到MIDI文件中? – ajsp