2. 基礎編~ツクール対応MIDIデータの作り方

はじめに

基礎編ではツクールに対応したMIDIデータを制作する際のポイントを解説していきます。内容としては、1.リセット命令、2.セットアップ、3.ループの3項目です。

2-1 リセット命令

通常、MIDIデータには各フォーマットに対応したリセット命令をデータの先頭に入力します。しかし、ツクールではMIDIデータが演奏される際、ツクール側からリセット命令(GMシステムオン)が音源へ送信されています。ですからMIDIデータにリセット命令が入力されていると、ツクール、そしてMIDIデータからと、リセット命令が連続して送られることになってしまい、音色が切り替わらない等のセットアップエラーが起きてしまいます。ですからツクール用MIDIデータにはリセット命令を入力することは避けなければいけません。ただし、拡張音色を使用したい場合はこの限りではありません。その際の方法は応用編で解説しています。なお、ツクール用にMIDIデータを作る場合、特に問題が無ければ前述の内容からGM対応データで作ることをおすすめします。

2-2 セットアップ小節

通常MIDIデータを作成する際、最初の1~2小節(データによっては3~4小節ほど)はセットアップ小節として各パートの情報(ボリュームやパンなど)を設定する命令を置き、実際の演奏データはそれ以降の小節から置きますが、ツクールではそのMIDIデータの一番最初にあるノートデータ(音符の情報)の直前までをセットアップ小節として認識(その長さがどのくらいかは関係無しに)しています(このことは実証済み) GM対応のMIDIデータの場合、セットアップに必要なデータはそんなに多くありません(注)ので1小節で充分だと思います。現にサンプルのMIDIデータを作曲された北神氏も「セットアップ小節は1小節とりました」とご自身のHPで述べられてらっしゃいます。以下にセットアップの例を載せておきます。

セットアップの例

(注)GM対応のMIDIデータの場合、使用できるCCはせいぜいモジュレーション(CC1),ボリューム(CC7),パンポット(CC10),エクスプレッション(CC11),リバーブ(CC91),コーラス(CC93)(実はリバーブとコーラスはGMの規定には正式に定められていませんが、実際は対応しています)、あと他数種類くらいしかありません。

2-3 ループ

曲によってはループさせたいものもあると思います。その場合は前述のセットアップの例の中にもありますが、CC111を使います(1.4.479にあるイベントがそれです) このCCの値を0にしたものを入力して下さい。ツクールでは曲が最後まで演奏されると再び先頭から演奏されます。ここでいう先頭とはもちろんデータの先頭(1.1.0)ですので、このメッセージを入力しておかないと、曲を繰り返したい時、無音部分である1小節目が演奏されてしまいます。その時このCCを入力しておくと、曲が最後まで演奏された時このCCがある場所に戻りますので、きちんとループして聴こえます。ただ、この時戻りたいところと同TickにCC111を入力すると、音源によっては同Tickにある音(ノートイベント)を再生せずループしてしまうという不具合が起こる可能性があります。ですから上図のようにCC111は戻りたい所の1Tick前に入力しておくのが望ましいです。前図では、2.1.0にループしたいのですが誤作動の可能性を排除するため、その1Tick前である1.4.479にCC111を置いています。なお分解能480,テンポ120の時、1Tickの長さは約0.001秒ですので、1Tick前に入力することによるループのつなぎ目の問題(例えば少し間があいてループするのでは? 等)はまったくありません。

まとめ

さて、以上ツクール対応のMIDIデータを作る際のポイントを述べましたが、上記の点さえ注意しておけば、あとは通常のMIDIデータを作るのと何ら変わりはありません。MIDIデータを作ること自体はたいして難しいことではありませんので、少しでも興味をもたれた方は、制作されているゲームにオリジナルの音楽をどんどん使ってみてはいかがでしょうか? きっとオリジナリティも高まり、より「自分の作品」というイメージが強まってくると思います。