MIDIの掟

ここでは、MIDIファイル製作上のルール、マナーを、MIDI Espressivoの機能と併せて()記します。
MIDIファイルを他の人に配布する際、なるべく多くの環境で、できるだけ作者と同じ音を聞いてもらう為の参考として頂ければ幸です。
基本的にはYAMAHAが作成した「XG楽曲データ製作の指針」を参考にしていますが、XGだけではなくGS、GMにも共通な項目を書いています。私の個人的な意見も入っています。

一つ注意して頂きたいのは、ここに書いているのはあくまでも「技術」の話で、「音楽」または「芸術」の話ではありません。内容についてとやかく言うつもりはなく、それを正しく伝える為に守るべき事柄です。


目次


システムセットアップは必ず入れるべし

GMシステム・オン、XGシステム・オン、GSリセットなどのシステムの初期化データは必ず入れましょう。

という、大事な役割を持っています。
これが入ってないデータは、前に演奏した設定をそのまま引き継いでしまうので、意図しない結果を生じます。
ボリュームが0になってて音が出ない、というのはまだいい方で、サスティンオンのままのチャンネルの音色が減衰系でない場合、悲惨な事になります(音が止まらない)。

<GMシステムオン> F0 7E 7F 09 01 F7

<XGシステムオン> F0 43 10 4C 00 00 7E 00 F7

<GSリセット> F0 41 10 42 12 40 00 7F 00 41 F7

なお、XGシステム・オンの場合はGMシステム・オンを先に(順序に注意!)入れておく事が推奨されています。XG非対応の音源に対する配慮です。
GM-ON XG-ON 結果
XG音源 受信する 受信する XGモード(○)
GS音源 受信する 受信しない GMモード(△)
GM音源 受信する 受信しない GMモード(△)

順番を間違えると
XG-ON GM-ON 結果
XG音源 受信する 受信する GMモード(×)
GS音源 受信しない 受信する GMモード(△)
GM音源 受信しない 受信する GMモード(△)

GSの場合はGMシステム・オンは入れない場合が多いようです。

ついでに書くと、sysEx の定義から言うと、XG,GS,GMのすべてのデータを入れてもOK、の筈なんですけど、他の会社のsysExを受信してはいけない、という決まりは別にありません。
YAMAHAの音源はGSリセットを受信してしまう場合があるので、XGとGSの両方を入れることは無意味です(最後のものが有効になります)。
GS-RESET XG-ON 結果
純粋XG音源 受信しない 受信する XGモード
GS音源 受信する 受信しない GSモード
実際のXG音源 受信する 受信する XGモード

XG-ON GS-RESET 結果
純粋XG音源 受信する 受信しない XGモード
GS音源 受信しない 受信する GSモード
実際のXG音源 受信する 受信する TG-300(GS)モード

メイン画面のラジオボタンで、XG/GSの切り替えができます。また、GMは入れるか入れないかをチェックボックスで指定します。また、XG、GSの両方が入っているデータを読み込んだ場合は、最後のデータのみを有効にします。

システムセットアップの後は必ず適度な「空白」を入れるべし

XG/GS両規格ともに、システムセットアップの後は50ms以上の空白を入れるように指示されています。
分解能が120、テンポが120なら、最初の12ティックにはノートやピッチベンド、コントローラなどを入れてはいけない、という事ですね。
実際、間を空けないでノートオンを入れてみると音がおかしくなるのが確認できます。よい子の皆さんは必ず守りましょう。
######
ほとんどのMIDIデータは、(システムではない)セットアップ情報をティック0に置いてあり、ノートオンが無ければ特に問題は発生していないようです。音源の方が処理しきれないデータを一時的に溜めておいて(バッファリングと言います)、順次処理している為だと思います。ノートオンは処理の優先順位が高いので、結果的におかしくなるのではないでしょうか。
どちらにせよ、十分な空白を空けておく方が無難です。

XGエディタ、セットアップマネージャでは、自動的に最初のイベントを50ms以上後ろから始める機能があります。

セットアップ小節は必ず入れるべし

最初の小節は、音源を初期化するためのセットアップ専用として、演奏データを入れるのは避けましょう。
ただ、私は個人的にはアウフタクト(弱起)の場合は1小節目に演奏データがあってもいいんじゃないか、と思っています。1小節空けてしまうと出だしが遅れるからです。

メニューの「Edit」→「Make Leading Bar」で、セットアップ小節を作成できます。また、セットアップマネージャを立ち上げた時に、1拍めにノートがあるとセットアップ小節を入れるかどうか訊ねます。よほどの理由がない限り「はい」を選択してください。

データの順番は明確にすべし

これはシーケンサが悪い、という話もあるのですが...バンクセレクト、RPN、NRPNの設定は順番が大事です。これらのデータが同一ティックに置いているデータは多く、とりあえず問題にはならないケースがほとんどですが、同一ティックのデータの順番を保証する、という規定はありません。
音源の負担を避ける為にも、必ず最低1ティックは空けて、順番を明確にしましょう。

セットアップマネージャは、デフォルトではすべてのデータのタイミングをずらします(チャンネル間でもデータが重複しないようにします)。

ノートオフを入れ忘れるべからず

普通、忘れようとしても忘れられるものではないと思うのですが、たまに見かけます。シーケンサのバグかもしれませんが、他のアプリケーションや音源に悪影響を与えかねない凶悪なデータになってしまいます。

なお、シーケンサによっては、リアルタイム入力時に Sustain-Off のタイミングで All-Note-Off で代用する物があるみたいです。

ファイルを読み込んだ時にノートオフがない場合、自動的に生成します。長さは、次の同じノートの直前か、曲の最後までになります。

トラック一つにチャンネル一つを厳守せよ

たまに、一つのトラックに複数のチャンネルのデータが入っている(フォーマット1で)データを見かけます。
多分操作ミスもしくはシーケンサのバグだと思うのですが、止めときましょう。


メインウィンドウにはトラック名の後ろに使用チャンネルを表示しています。ここに複数のチャンネルが表示されていたら、掟破りのしるしです。一旦フォーマット0で保存してフォーマット1に再変換すれば直るはずです。トラック名は消えてしまいますが。

テンポイベントはトラック0に入れるべし

これは、SMFで仕様になっています。
が、どうやって入れるのか、たまに他のトラックに入っているデータがあります。
当然、仕様なのでソフトによってはうまく処理できない場合があります。

ファイルを読み込んだ時にトラック0以外にテンポイベントがあった場合、トラック0に移動します。(1.24から)。

ノートのダブリは避けるべし

ノートのダブリとは、ノートオンの後で、ノートオフの前(または同じティック。同じティックのデータの前後関係は保証されない事を思い出してください)に同じ音のノートオンがある場合を指します(マルチプル・ノートオンというのが正式名称みたいです)。
音源がマルチプルノートオンに対応している場合には特に問題ありませんが、そうでない場合、あるいは他のアプリケーションによっては問題を引き起こす可能性があります。
実際、私の使っているアプリケーションで不具合が起きるものがありますし、マルティプルノートオンはまとめて一つの音と見なす、というシーケンサもあります。
通常リアルタイム入力では起きませんが、ステップ入力をおこなっている場合、同じ音が連続してある場合には注意が必要です。

データチェッカでは、ノートのダブリを検出し、ダブらないように長さを修正します。

sysExは初期化用と心得よ

sysExは、演奏中に送信してはいけない、という決まりはないのですが、バイト数が多いのと、Windowsの場合は通常のMIDIイベントと送信方法が異なる為、遅れが生じる可能性があります。
また、発音中にsysExを送信すると、音が切れたりボリュームの異常が起きる場合があります。
他のMIDIイベントで代用できるものは代用し、どうしても演奏中に変更する場合は音が出ていない時に送信するようにしましょう。演奏中に変更が必要なデータはほとんど通常のMIDIイベントで代用できるようになっている筈です。

ただし、ディスプレイ系のsysExに関しては上記の限りではありませんが、これも演奏に支障がない程度に押さえるように心がけましょう。

例外的に、YAMAHAのガイドラインではフェードアウトにはMIDIマスターボリュームのsysExを使うように指定されています。確かに多くのチャンネルでボリュームコントロールを送信するよりはこっちの方がスマートですね。

<MIDIマスターボリューム>
F0 7F 7F 04 01 LSB MSB F7

XGエディタでは、sysExをファイルの先頭部分にしか配置できません(ディスプレイ系を除く)。

演奏情報のダブリは避けるべし

同じノート、同じコントロール、ピッチベンドを同一チャンネルの同一ティックに置くのは避けましょう。
ミスをやりやすいのは、

ノート
シーケンサでのコピーミス
コントロール、ピッチベンド
複数のトラックでチャンネルを共有している場合。特に各トラックにセットアップを置いてしまったデータをよく見掛けます。

という場合があります。

コントロールのダブリは音源に思いがけない効果を与えるようで、削除したらそれまで聞こえなかったパーカッションが聞こえるようになった、という経験があります。

データチェッカでは、このようなダブリを検出、削除します。

ノートオンとピッチベンド、コントロールのダブリも避けるべし

ノートの頭から、コントロールやピッチベンドの効果をかけた状態で発音したいなら、最低1ティックは前に置くべきです。何度も言いますけど、同一ティックのイベントの順番は保証されていない為、ノートオンが先になる可能性があります。MIDIはシリアル転送なので、同一ティックでもまったく同時に送信されるわけではなく、場合によってはかなり遅延が生じることになす。この結果、予想外の聴感上の不具合が現れてしまいます。
ここで特に注意しなければいけないのは、サスティンペダルです。YAMAHAのガイドラインでは、ノートオン/オフから5/480ティック以上離さなければいけない、とあります。

データチェッカでは、このようなケースを検出、修正します。

無駄なデータは極力入れる事なかれ

ここで言う無駄なデータとは、コントロールおよびピッチベンドの値が

を言います。まだまだ色々ありそうですが。
前の2つは説明の必要はないでしょう。
3つ目ですが、例えば短い間隔でモジュレーションやピッチベンドを1だけ変化させても聞き取れるわけがないですね。ピッチベンドに関してはこちらも参照してください。
無駄なだけではなく、演奏の「もたつき」を生じるので、避けるべきです。どこまでラフにするかは自分の耳に頼るしかないですが。

データチェッカでは、同一値の連続を検出し、削除します。また、ピッチベンドやコントロールを任意の割合で「間引く」機能があります。

データの集中は避けよ

掟、と言うよりも打ち込みテクニックに近いですが...

大編成のオーケストラ曲などの場合、同じティックにイベントが集中して演奏が「もたつく」場合があります。特に、小節の頭ではそれが目立ちます。これは、MIDIがシリアル転送(データを一個ずつ送る)であるために、同一ティックでも個数によってはかなり遅延が生じるためと、音源自体の処理が間に合わないため、の2つの理由によります。
前項の無駄なデータを削除してもまだもたつく場合は、思い切ってトラック間でデータををずらしてしまいましょう。
本物のオーケストラでも全員がまったく同じタイミングで音を出している訳ではないですから、かえってリアルさが増すかもしれません。
もたつきが感じられるくらいテンポが早くて音が多い場合、かなりすらしてもあまり目立たないと思います。
では、何をどのくらいずらすか、というとケースバイケースなのですが、原則として

といった所でしょうか。あとは実際に聞きながら試してみるしかないですね。

エフェクトの種類に「Time Shift」があります。これを使うと、「低い音ほど前に」などの操作ができます。

ボリュームはMAX 100 と心得よ

よく、127に設定されているデータを見かけますが、ここはやはりデフォルト値である100前後にしましょう。
そうしないと、場合によっては音が割れる事があります。
一方、エクスプレッションは127が標準値です。カラオケデータでは会社によって90前後を指定される場合もあるそうですが、一般的には127でいいと思います。

ボリューム、エクスプレッションの使い分け心得

MIDI初心者がまず迷うのは、この区別ではないでしょうか。実際、やってることは同じなので何だこりゃ、と思うのも無理はないんですけど、

という事になっています。
レコーディングで考えると、演奏家が演奏するのがエクスプレッション、ミキサーが操作するのがボリュームになりますね。

これを守らなくても特に支障は無いのですが、アプリケーションによっては不都合が生じないとも限らないし、他人にデータを見られた時に「まだまだ若いな、おぬし」と侮られるので、ここはきちんと押さえておきましょう。

(補足)ボリュームもエクスプレッションも同じ、と書いてしまいましたが、ボリュームはコーラスやリバーブにもかかってしまうようです(音源に依存すると思いますが)。
演奏途中にボリュームを変化させると響きが不自然になる可能性があるので、やはりエクスプレッションを使いましょう。

調号を忘れるなかれ

調号は、演奏自体には関係ないのですが、入れておいた方が他のツールで読み込んだ場合に何かと便利です。

トリルエディタでは、トリルの音の初期値を調号を参考にして判断しています。

タイムベース考

タイムベース(分解能)の適正値について考えますと、やはり大きいことはいい事だ、という事になります。よく言われる、微妙な表現を可能にする為、と言うよりは、「スペース」をたくさん確保出来るからです。
ただ大きければいいかというとそうでもなくて、シーケンサやプレイヤーによっては大きな分解能をサポートしていない(内部で小さい分解能に変換する=結果的にダブリが発生してしまう)ものもあるので、現実的には最低120、最大480、安全を考えるなら240、というのが無難な所でしょうか。
私が初めてMIDIに触った頃はタイムベース24でしたけども(笑)。

テンポの範囲

普通に入力していると、別段気にも留めていませんでしたが、テンポの範囲はどこまで有効なのでしょうか。
SMFの規格を見ると、理論的には 3.47〜∞になります。
しかし、YAMAHAのガイドラインでは

を「厳守」とあります。XG-Level1が妥当な線でしょうか。

もっとも、私が使っているシーケンサ(CakeWalk)は280までしか入力できないので、上の方は心配ないですね。下は8.25だったので、注意が必要です。

テンポエディタでは、20〜300を入力可能です。(1.24から)

無駄なピッチベンド

無駄なデータの項目と内容が重複しますけども、ここはピッチベンドに限ったお話です。

筆者がMU-90を使って実験した所、1セント(=半音の1/100)以下の変化については音源が無視する、という事がわかりました。人間が聞いて分かる分からないの話では無い訳で、完全に無駄なデータになります。
例えば、デフォルトの状態で最低409の変化が無いとそのピッチベンドは無駄になります。
他の音源でどうなのかは分かりませんが、皆さんの情報をお待ちしています。
データのスリム化は常に心がけましょう。

エフェクトエディタでは「Min.Diff」の設定で「0.01 HalfTone」を指定すればこのようなデータを避けることができます。

ON/OFFを表わすコントローラ

コントロールチェンジイベントのうち、64〜67はON/OFFの「スイッチ」の役目を果たします。
0〜63がオフで、64〜127がオンです。
高級な音源では、例えばサスティンペダルを半分踏んだ、などという状態を再生可能なものもあるそうですが、ネットで公開するデータの場合は0と127以外の値は使わないようにするべきです。

データチェッカでは0と127以外の値を検出し、修正する事ができます。


ホームページに戻る


Copyright Mag. 2000-2001