前回の続き(注: かなりマニアックです)。前準備は済んでいるものとする。
セットアップデータの生成
セットアップ用のデータは、コントロール・チェンジとプログラム・チェンジを組み合わせた一連のメッセージ・リストとして定義できる。
前回同様に、midoパッケージのMessageメソッドで個々のメッセージ・オブジェクトを生成し、それをリストとして繋げればよい。下例では、リスト化した一連のメッセージを変数setup_msg
に格納している*1。中身は、協会テンプレでお馴染みのセットアップ・データそのままであるが*2、説明せずともほとんど自明だと思う。
# セットアップ用データのメッセージ・リスト定義 setup_msg = [Message('control_change', channel=0, control=0, value=121, time=480), Message('control_change', channel=0, control=32, value=0, time=10), Message('control_change', channel=0, control=0, value=0, time=10), Message('control_change', channel=0, control=32, value=4, time=0), Message('program_change', channel=0, program=68, time=0), Message('control_change', channel=0, control=7, value=102, time=10), Message('control_change', channel=0, control=10, value=64, time=10), Message('control_change', channel=0, control=11, value=127, time=10), Message('control_change', channel=0, control=91, value=58, time=10), Message('control_change', channel=0, control=93, value=0, time=10), Message('control_change', channel=0, control=101, value=0, time=10), Message('control_change', channel=0, control=100, value=0, time=10), Message('control_change', channel=0, control=6, value=2, time=10), Message('control_change', channel=0, control=101, value=127, time=10), Message('control_change', channel=0, control=100, value=127, time=10)]
該当トラックへのセットアップデータの挿入
あとは上で作ったメッセージの塊をトラック・オブジェクト(メッセージのリスト)の所定の位置に挿入するだけである。前回のSysExメッセージ挿入後であれば、メタメッセージ2件とあわせて、先頭から3件飛ばした位置に差し込むことになる。これは単なるリスト操作に過ぎない。
# セットアップ・データを所定位置に挿入する track1[3:3] = setup_msg
挿入後のトラック冒頭は以下のような結果となる。
実はこのセットアップ・データの挿入に伴って一番最初のノートオン・メッセージのデルタタイムを修正する必要がある。なぜなら、セットアップ・データの送信時間だけタイミングがズレてしまうからである。これについては、次回詳述する。