ここから midi ファイルをダウンロードしました: Taylor Swift - You Belong With Me.mid
次に、アコースティック バス ドラム パートのみを抽出します。つまり、この曲の出力アコースティック バス ドラム.mid が必要です。
私は music21 ライブラリを使用して midi ファイルを解析しました。以下は私のコードです。
from music21 import *
import os
fp = os.path.join(common.getSourceFilePath(), 'midi', 'testPrimitive', 'Taylor Swift - You Belong With Me.mid')
mf = midi.MidiFile()
mf.open(fp)
mf.read()
mf.close()
s = midi.translate.midiFileToStream(mf)
partStream = s.parts.stream()
for p in partStream:
print p.partName
次に、出力は
Saxophone
None
Electric Bass
None
None
Electric Guitar
None
None
None
Banjo
Banjo
Banjo
StringInstrument
Piano
どれがパーカッションなのかわからない… パーカッションのパートがわかったら、そのパートのアコースティックバスドラムを抽出して、アコースティックバスドラム.midファイルとして出力したい。誰かがそれを行う方法を教えてもらえますか? ありがとうございました
[編集] 以下のコードを使用しました。
from music21 import *
import os
fp = os.path.join(common.getSourceFilePath(), 'midi', 'testPrimitive', 'Taylor Swift - You Belong With Me.mid')
mf = midi.MidiFile()
mf.open(fp)
mf.read()
mf.close()
for n in range(len(mf.tracks)):
for c in mf.tracks[n].getChannels():
if c == 10:
print n
出力は 14 です。これは、mf.tracks[14] がパーカッションであることを意味します。次に、ピッチ番号が 35 または 36 の部分を抽出する必要があります。
次に、以下のコードを使用しました:
for n in range(len(mf.tracks[14].events)):
if mf.tracks[14].events[n].pitch == 35 or mf.tracks[14].events[n].pitch == 36:
print n
それから多くのアウトプットがあります。次は何をしようか考え中です。