前回の続き(注: かなりマニアックです)。今回は既存メッセージのMIDIチャネルを変更するが、要領は前回のデルタタイム修正とほぼ同じである。
Studio One で書き出したSMFの大きな問題
Studio One (Prime版)で Presence XT を使ってMIDI打ち込み再生した楽曲をSMFに書き出した場合、すべてのトラックのMIDIチャネルが"0"のままとなる*1。
どうやら Presence XT は Kontakt のようなマルチチャネル出力に対応していないようなので、音色(概ねトラックに等しい)毎に出力MIDIチャネルを変える設定はできないと見受ける(下記チュートリアル参考)。
一括でチャネル値を変えるには
基本的な考え方は、デルタタイムの変更と同じで、対象トラックを構成する全メッセージの中でチャネル属性を持ったものにつき、そのチャネルの値を所望の値に置き換えるだけである。下例では、track1
中のチャネルを"10"(Domino表記上はチャネル11)に変更している。
# チャネル変更のための関数 def modify_channel(track, channel): for msg in track: if hasattr(msg, "channel"): msg.channel = channel # 上記関数を呼び出してチャネル修正 modify_channel(track1, 10)
実行結果は、当然ながら下記の通りとなる(冒頭メッセージのみ例示)。
*1:SMFのデータ上はゼロ・ベースの0〜15レンジ。Dominoに読み込むとチャネル1となる。