Sibelius (v.4?..) によって作成された、「珍しい」楽器を含む MIDI ファイルがいくつかあります。メロディーが聞こえない。インストゥルメントを 0 に「リセット」する必要があると判断しました (アコースティック グランド ピアノだと思います)。
そこで、python-midiとmingusの両方を使用して Python プログラムを作成しました。これらのプログラムは MIDI 楽器を変更できましたが、どちらもリズムを劇的に変更しました。
Rosegardenはこの仕事を非常にうまく行っていますが、バッチで使用することはできません。
次に、MIDI フォーマット情報 (たとえばhereとhere ) を読み取った後、単純な Python スクリプト (以下を参照) を作成しました。このスクリプトは、一部の文字列を別の文字列に単純に置き換えます --- 0xC0[byte] を 0xC000 に置き換えます。
これで、これらの MIDI ファイルのサウンドは正常になり、すべてを聞くことができます。
それで、私の質問は---これを行うのは(何らかの意味で)「安全」ですか?どうすればより良い楽器に交換できますか? MIDI ファイルの 0xCx コマンドをより適切に「検出」するにはどうすればよいですか?
ありがとうございました!
#!/usr/bin/env python
#
import sys
import re
patt = re.compile('(\xC0|\xC1|\xC2|\xC3|\xC4|\xC5|\xC6|\xC7).')
try:
filein = sys.argv[1]
except IndexError:
print "Specify input file as an argument."
sys.exit(1)
try:
fileout = sys.argv[2]
except IndexError:
fileout = '%s-out2.mid' % filein.replace('.mid', '')
filein_data = open(filein, 'rb').read()
open(fileout, 'wb').write(patt.sub('\1\x00',filein_data))