よくRPGツクールはMIDIまわりのトラブルが多いと聞きます。
このページでは、MIDI関連の情報を記載する予定です。
このページでは、MIDI関連の情報を記載する予定です。
MIDI関連のトラブル
有名なのは音化け(全部PIANO化)や無音、音程やエフェクトのかかり具合の異常等です。
ググって見たところこれらの多くの問題は、Harmony.dllの仕様によるもののようです。
ググって見たところこれらの多くの問題は、Harmony.dllの仕様によるもののようです。
RPGツクール2000 ver1.51以降 及び 2003 ver1.06以降
Harmony.dllの仕様変更にともない、トラブルが激減しました。
また余談ですが、BGM(Music)にmp3ファイルの使用も可能となりました。
上記のバージョンを使っている場合、トラブルは回避されると思います。
また余談ですが、BGM(Music)にmp3ファイルの使用も可能となりました。
上記のバージョンを使っている場合、トラブルは回避されると思います。
RPGツクール2000 ver1.50以下 及び 2003 ver1.05以下
闘グラフィック表示の優先順位の仕様の変更等で過去のバージョンを分けてインストールしていらっしゃる方もいると思うので掲載しておきます。
なぜ音化けが起こるのか
RPGツクール200xでは「Harmony.dll」というファイルを使用し、MIDIデータの再生を管理しています。「Harmony.dll」は曲の再生と同時に自動的にGM Level 1で音源をリセットする仕様になっているようです。
ところが、多くの場合、MIDIファイルに初期化メッセージ(エクスクルーシブ)を挿入されています。これはMIDI製作者にとって常識だからです。
結果、「Harmony.dll」の音源の初期化処理とMIDI側の初期化処理が、ほぼ同時に行われてしまい、PC(又は音源)が処理し切れずにその後に配置してあるイベントまでもが無視されてしまうわけです。
一般的に初期化信号のあとには、トラックごとの情報(Program Change、Control Change等)が格納されているため、これらが送信されないと、全てのトラックがピアノのままになってしまいます。
結果、「Harmony.dll」の音源の初期化処理とMIDI側の初期化処理が、ほぼ同時に行われてしまい、PC(又は音源)が処理し切れずにその後に配置してあるイベントまでもが無視されてしまうわけです。
一般的に初期化信号のあとには、トラックごとの情報(Program Change、Control Change等)が格納されているため、これらが送信されないと、全てのトラックがピアノのままになってしまいます。
補足
「Harmony.dll」は曲の再生と同時に音源のリセット(GM)をかけるのですが、
その後、一番最初のノートイベント(音符)迄を高速処理しているものと思われます。
MIDI創作者が曲の先頭にリセットを挿入していない場合には音化けしないのはその為
でしょう。
しかし、この高速処理の為に音源のリセット中に音色が指定されてしまい、上記の様な
事態を引き起こしていると考えられます。
対策
- アップデートしてバージョンアップする
最も簡単かつ安全。だが他の仕様も変わるので注意。
- 音源初期化のエクスクルーシブを削除する
トラックの初期化情報は当然残します。
- MIDIデータ先頭(Meas 0 Tick 0000)にベロシティ0の無音ノートを挿入
補足にあるように、、一番最初のノートまで高速再生しますから、データの先頭に
ノートイベントがあれば、高速読み込みは無効となります。
ですが、曲の読み込み速度が若干落ちる可能性もありますので注意してください。
ノートイベントがあれば、高速読み込みは無効となります。
ですが、曲の読み込み速度が若干落ちる可能性もありますので注意してください。