を使用して、MIDIファイルからアコースティックバスドラムを抽出しますこの曲のは、私はここからMIDIファイルをダウンロードしたmusic21ライブラリ
私は私のコードで以下、MIDIファイルを解析するmusic21ライブラリを使用:後...私は打楽器である1かわからない
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ファイルとして出力したいと思います。それを行う方法を教えてもらえますか?ありがとう
mf.tracksは、[14]が、その後、私はそのピッチ番号部分を抽出するためにパーカッション必要があることを意味して出力が14である
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
[編集]私はコードの下に使用 、 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
そして多くの出力があります。私は次に何をすべきか考えています。
music21のパーカッションサポートはこの時点でかなり不足しています、私は恐れますが、開発者としてかつてのパーカッショニストとして... –