0
音符の値からMIDIファイルを書き込むためにmusic21を使用しています。music21:音符をノートの位置でMIDIファイルに書き込む
次のコードは3つの音符を順番に書き込みます。
ただし、ノート間に「空」スペースを挿入するにはどうすればよいですか?
音符を「位置」で挿入すれば、各無音区間の位置/長さを計算する必要がなくなります。それはmusic21でも可能ですか?
import music21
from music21 import *
mt = midi.MidiTrack(1)
mt2 = midi.MidiTrack(1)
# duration, pitch, velocity
data = [[1024, 60, 90], [1024, 50, 70], [1024, 51, 120],[1024, 62, 80], ]
t=0
tLast=0
for d,p,v in data:
dt = midi.DeltaTime(mt)
dt.time = t-tLast
#add to track events
mt.events.append(dt)
me=midi.MidiEvent(mt)
me.type="NOTE_ON"
me.channel=1
me.time= None #d
me.pitch = p
me.velocity = v
mt.events.append(me)
# add note off/velocity zero message
dt = midi.DeltaTime(mt)
dt.time = d
# add to track events
mt.events.append(dt)
me=midi.MidiEvent(mt)
me.type="NOTE_ON"
me.channel=1
me.time= None #d
me.pitch = p
me.velocity = 0
mt.events.append(me)
tLast = t+d
t +=d
dt=midi.DeltaTime(mt)
dt.time = 0
mt.events.append(dt)
me = midi.MidiEvent(mt)
me.type = "END_OF_TRACK"
me.channel = 1
me.data ='' # must set data to empty string
mt.events.append(me)
mf = midi.MidiFile()
mf.ticksPerQuarterNote = 1024 # cannot use: 10080
mf.tracks.append(mt)
mf.tracks.append(mt2)
mf.open('test.mid', 'wb')
mf.write()
mf.close()
't'、' tLast'、および 'dt.time'で何をしているのか理解していますか? –
@ CL。あまりにも... – ytrewq
@CL。私はデバッグを試みましたが、tLastとtは常に同じ値に設定されていましたので、実際にt-tLastを取得することはできません.dt.timeは直接印刷されませんでした – ytrewq