MIDIについて
[Singer Song Writer 8.0 VS 紹介][Singer Song Writer 8.0 VS MIDI 作成][Singer Song Writer 8.0 VS ドラム楽器の割り当て][Singer Song Writer 8.0 VS コントロール][Singer Song Writer 8.0 VS Audio 1][Singer Song Writer 8.0 VS オートメーション1][Singer Song Writer 8.0 VS 注意事項][Singer Song Writer 8.0 VS トーンマップ][MIDIについて]

MIDIファイルの構造とどのように演奏されるかをわかる範囲で説明します。

MIDI初期化(音源の動作モード設定)で、「XG用のMIDIを作成する場合は、XG未対応の音源のために、先頭にGM System Onを入れ、その後ろにXG System Onを入れる。GS用の場合はGS Resetを先頭に入れればよい。」と書かれていることがあります。確かに多くの音源がGS互換モードを持っておりますが、極一部の音源ではGS Resetで初期化されません。GSモードの無い一部のGM音源では初期化されず、前演奏の状態を引きずります。従ってGM System Onはやはり先頭にに入れたほうが良いでしょう。

重要!!以下十六進数の場合はHを後ろに付けて十進数と区別している場合があります。
65Hは16進数で、これを10進数表記すると101となります。16進数二桁目が6なので6×16=96、一桁目は5なので96+5=101。
※WIndows付属の電卓で[表示]メニューから関数電卓に変更すると簡単に変換できます。

16進で65と入力

10進に切替すると

一応YAMAHA XG音源はGS対応(TG300B)モードがあり、SY-XG50ソフトウェアMIDI音源も対応しています。一方Rolandの一部音源にはXG対応(隠しモード)があるそうですが、VSC-3.2(VSC-88)ソフトウェアMIDI音源は僕がテストした限り未対応のようです。

重要!!XP搭載のMicrosoft GS Wavetable SW SynthはYAMAHA XG音源のように存在しないバンクの音色を指定すると代替発音機能により似た音色が自動的に選択されて演奏されます。しかしXP以外(Vista含む)のそれでは代替発音機能はなく、全く音が出なくなります。これは代替発音機能のないGS音源でも同様です。

パソコンでMIDIファイルを開き演奏するには次のようなものが必要になります。

・シーケンサソフト・・・MIDIファイルを読み込んで音源へMIDIメッセージを送る役割をします。オーケストラでいえば指揮者のような役目をします。シーケンサソフトには編集ができるもの(いわゆるMIDI作成ソフト)と演奏専用(MIDIプレーヤー)があります。MIDIファイルにはMIDI送信メッセージ(MIDIイベントデータ)のほかにメタイベントやデルタタイムなどの情報が書かれており、この内容を解析することでテンポや調号などを表示し、またMIDIイベントを音源へと送信します。

・音源・・・シーケンサから送られたMIDIメッセージを受信してそのメッセージ内容に従って音を出したり止めたりします。MIDIファイルをそのまま受け取って演奏するようなことはありません。オーケストラの各楽器の演奏者の役割ですね。但しオーケストラでは演奏者が楽器を持ち替えたり演奏するタイミングや音を出す長さを判断しますが、音源はそのようなことをしません。あくまでも受信したメッセージに従ってプログラムナンバーを変える・音を出す・音を止める、それだけです。音をこのタイミングがきたらこれだけの長さだけ出すということはしません。 シーケンサがノートオンとノートオフの信号を送ることでMIDIファイルにあるノートの長さだけの音を出すよう制御しています。音をこの大きさで出しなさい。=>今度は音を止めなさい(強さ0で音を出しなさいというノートオンもノートオフと同じ)のようにして音の出る長さは制御されています。MIDIファイルの内容を解析するといった役割はありません。改めて考えると指揮者であるシーケンサはむしろ演奏者でもあり、音源は単なる楽器でしかないといっても過言ではないでしょう。

この音源にはパソコンの処理で行うソフトウェア音源とパソコンとケーブルで接続して使う外部MIDI音源とがあります。最近はUSBのMIDI IN/OUTインターフェースに接続する方法がほとんどですが、以前はSUPER MPU401ボードなどの専用ボードを使用したり、パソコンのGAME/MIDI端子につないでいました(USBがその昔はありませんでしたから)。外部音源の方がパソコンの処理を借りずに動作するのでパソコンのソフトウェアで利用するにはよいのですが、機器をそろえる費用負担が大きいのが難点です。ソフトウェアMIDI音源は数千円と安く、またWindowsにはMicrosoft GS Wavetable SW Synthが初めから入っているのですぐに利用できます。お金をかけた方がよい音になるのは間違いないようです。

・音を発声させるオーディオデバイスが必要です。通常パソコンにはオンボードチップでオーディオデバイスが搭載されている(マザーボード上に組み込まれている)ことがほとんどですが、オンボードで搭載されていない場合もあります。このような場合はPCIなど拡張スロットにサウンドボードを増設することになります。

・音を出す出口としてアンプやスピーカー・あるいはヘッドフォンやコンポなどが必要です。特に音の良いヘッドフォンはモニターするためにあると便利です。

この他に製作を行うためにはMIDI入力機器がアルと便利です。MIDIキーボードやシンセサイザなどをMIDI INに接続してリアルタイム/ステップ入力に使用します。ピアノは弾けないけれどもギターなら弾けるという方にはMIDIギターやギターに取り付けるMIDI変換器もあります。MIDIサックスなど管楽器や弦楽器もあるようです。製作に不可欠ということではありません。編集可能なシーケンサソフトでは音符を並べる方法やピアノロールで編集する方法などいろんなアプローチができるものが多く、楽器が演奏できない人でも音楽制作ができる環境は整っています。

※フリーウェアのMIDI作成ソフトもネットから見つけることができますが、やはり市販の評価の高いものの方が使いやすさの点では大きいと思います。


MIDIをSinger Song Writer 8.0 VSなどのシーケンサと呼ばれるソフトウェアで作成していると本当の姿が見えてきません。本当の姿が見えないと意外にもシーケンサが間違いを犯していても気がつかないでMIDIを作っているかもしれません。一部のMIDI作成ソフトでは初期化データさえ入れることができないものもあります。シーケンサが必ず正しいMIDIデータを出力してくれているとは限らないところが残念なところです。正しくないが必ずしも正常に演奏できないということではないのでお間違えなく。重大なミスはSinger Song Writer 8.0 VSでも演奏が意図通りにならないことでしょう。

Singer Song Writer 8.0 VSにおいてもGMやGM2あるいはXGやGSなどのMIDI規格によって推奨されている記述に沿っていないところがあります。

例を挙げてみましょう。

【バンク切り替えで音色指定する際、バンクセレクトMSBとバンクセレクトLSB及びプログラムチェンジは同一タイミングで置くことは避けるべきであるが、Singer Song Writer 8.0 VSのトーンマップ入力では同一タイミングになる。】

【エクスクルーシブデータはサイズが大きく、特に初期化メッセージ(システムエクスクルーシブ)を受信してから音源が実際に内部初期化完了するまで一定の時間が必要となるためエクスクルーシブデータの後次のメッセージは一定以上の間隔をあけるように推奨されている。しかしSinger Song Writer 8.0 VSではその配慮はされていないため、極端に言えば、製作者がそのことを知らない場合同一タイミング上に置くことも可能になっている。これは例えユーザーが知らなくとも一定の間隔を設けて入力修正されるよう(あるいはそのような警告が出るよう)作りこんでおくべきであろうというのが僕の意見です。】

【初期化は先頭に置くべきであるが、Singer Song Writer 8.0 VSではいとも簡単に先頭以外に入れることができる。警告も出ない。】---但し新規作成ウィザードに従って設定を済ませると先頭に初期化が、間を空けてマスターボリュームが入るようになっています。

僕の希望ですが、GM1/GM2/XG/GSについてはSinger Song Writer 8.0 VSの機能として、規格に沿ったデータ入力が行われているかを確認できるチェッカーツールがあるといいなと思います(但し勝手に自動修正をしてしまうのではなく、間違いをユーザーに通知し、自動修正を行うかどうかをユーザーが選択できるようにしていただきたい)。

下のように簡単にセットできてしまう。もっともこの場合作成者は演奏を確かめるであろうからその時点で指定した音色で演奏されないことに気がつくのであるが。

==> こんな感じに修正したいもの。

上図の右側でSTに値が入っていますが、これは次のイベントまでのステップタイムです(分解能480チックでチック数として表示されます)。表示されていなくとも問題ありません(左は表示されていませんが、Location部分で確認できますね)。

バイナリエディタで見るとバンクセレクトMSB/LSBとプログラムチェンジ(音色 鉄琴とある部分)が送信されるタイミングが同一になっている(各データの直前にあるのがそのデータを送信する間隔==デルタタイムが00H==でその値が0なので時間を空けないで次のデータを送信する)。上のSinger Song Writer 8.0 VSのステップエディタではBANK MSB/BANK LSB/Programの各Locationが同じになっているのがわかる。右はSinger Song Writer 8.0 VSのステップエディタとスコアエディタで修正したもの。Singer Song Writer 8.0 VSで修正するとRest(休憩の意)という表記が出ることがありますが、MIDIデータ上何の意味もありません。SMFとして保存して開き直すとRest表示はなくなります。

=>>

ユーザーがその程度の知識を身につけて作成に臨むべきといわれるとそうなのかもしれませんが~・・・。いや正直僕も最初に作ったMIDIには初期化さえ入っていません。最初はそんなこと知らずに作るものです、高機能なソフトを使用する場合特に演奏させて聞こえたら問題ないと錯覚するものです。ちなみに最初に作ったMIDIは風の篝火(さだまさしさんのコピー曲)で、音源が前に演奏したMIDIの状態のまま演奏されるので場合によっては音が出ませんです。

あ〜Singer Song Writer 8.0 VSで勿論これらを修正することができます。ステップエデイタウィンドウで数値書き換えしてくださいな。これについてはこちらを参照ください。 

ということでMIDIデータがどうなっているか、簡単ですが見ておきましょう。

MIDIファイルはバイナリデータです。中身を見るにはバイナリエディタなどを使用しなければ見ることはできません。バイナリデータとは符号データのことで2進法で記述されています。通常はこれを16進数に直して1バイト単位で表します。

一応直接見てみたい方にバイナリエディタを置いておきます。TSXBIN・・・解凍してからTSXBIN.exeを実行すると起動します。.midファイルをドラッグ&ドロップすると見ることができます(.midファイル用のシンボルファイルが一緒に入っています)。

※TSXBINでデルタタイムを変更しないようにしてください。そのトラックの以降のデータの送信タイミングがずれることになります。試してみたい場合は別名で保存してね。

MIDIデータの場合は先頭にヘッダが付いています。ヘッダは4D 54 68 64というヘッダを示す規定値("MThd")に続いて00 00 00 06(規定値)、フォーマット形式を示す2バイトの値(00 00 or 00 01 or 00 002)、トラック数(2バイト)、時間単位(最大4バイト)というデータが並んでいます。

フォーマットはSinger Song Writer 8.0 VSにもあるMIDI保存時のフォーマット0/フォーマット1のことで、フォーマット2というものもあるらしいですが、通常使いません。フォーマット0で00 00、フォーマット1で00 01です。

時間単位も一般的には分解能という形式を用いるのがほとんどです。MIDIメッセージには必ず次のイベントまでの時間を示すデルタタイムが入っています。この情報がないとシーケンサは次のイベントを送信するタイミングがわかりませんので、必ず次のデータの前にはデルタタイムという数値が入っています(これは最大4バイト)。このデルタタイムの単位を示すものが分解能です。分解能は四分音符の長さを単位時間で示します。分解能480とあればこれは四分音符ひとつを480という値で扱うことを意味します。時間単位にはこの分解能が書き込まれています。

分解能480でデルタタイムが240ならば八分音符ひとつあけて次のイベント処理が行われることになります。MIDIプレーヤやMIDI編集ソフトがシーケンサと呼ばれるのはここにあります。時間管理はシーケンサソフトが行っているのであって、それはMIDIファイルに書かれているデルタタイムに沿って順次MIDIイベントを読み取り、そしてシンセサイザーやMIDI音源にMIDIイベントを渡しているのであって、シンセサイザーやMIDI音源は単に受け取ったデータだけを処理します。音源にMIDIファイルのデータをそのまま受け渡しているのではありません。

デルタタイムが00という部分はつまり間を空けないで、同時実行ということですね。下の画面では時間単位01 E0これは左に見えますように480(チックス)ということになります。まあ四分音符ひとつの長さの精度と受け取ることもできます。大きな数値ほど精度が高くなりますが、通常480が多く、時として960のものもあります。

上図でヘッダの後にトラック1IDが続いています。SMFではヘッダの後にトラック1から使用するトラック数分のデータが続き、最後にそのトラックの終端を示すデータで締めくくられます。フォーマット0の場合はトラックがひとつしかありませんのでデータの終端はトラック1の終わりになります。

トラックデータ

トラックデータはトラックの始まりを示す4D 54 72という規定値で書き始められます。これは"MTrk"を表します。その後ろに実データが続きます(MTrkイベントと呼ぶそうです)。この実データも当然時間管理しなければなりませんのでデルタタイムの後にイベントデータが続きます。トラック終端はFF 2F 00で示します。つまり4D 54 72 ・・・・・・・・・・・・FF 2F 00でひとつのトラックデータの集まりとなります。

トラックデータにはMIDIイベント・SysExイベント・メタイベントの3種類があります。これらイベントはデルタタイムと一緒に使われます。


MIDIイベントについて

これは実際の演奏データと思ってもいいでしょう。シーケンサなどに送られる実際のMIDIメッセージです。

==以下一部==

・ノートオフ・・・8c nn vv(3バイト)。チャンネルcのnnというノートナンバーの音を消音する。vvはベロシティだが意味はない。

・ノートオン・・・9c nn vv(3バイト)。チャンネルcのnnというノートナンバーをベロシティvvで発音する。vvが00Hの時はノートオフと同じ。

・チャンネルプレッシャー・・・Ac nn vv(3バイト)。チャンネルcのnnというノートナンバーをベロシティvvでプレッシャーする。

・コントロールチェンジ・・・Bc nn vv(3バイト)。チャンネルcのコントロールナンバーnnにvvという値を送る。MSB0に0を送る場合はBc 00 00となる(バンクセレクトMSB)。同様にLSB32に0を送る場合はBc 20 00となる(バンクセレクトLSB)。

デルタタイム Bc 00 00 デルタタイム Bc 20 00 デルタタイム Cc 48という一連の送信によってバンクセレクトと音色変更が行われる。

・プログラムチェンジ・・・Cc nn(2バイト)。チャンネルcの音色(プログラムナンバー)をnnに変更する。通常音色変更はBank Select MSBとBank Select LSBとを併用し、更にプログラムチェンジを用いて、Cc 48(ピッコロ)のように送信する。

・チャンネルプレッシャー・・・Dc vv(2バイト)。

・ピッチベンド・・・Ec mm ll (3バイト)。0の時はEc 40 00となり、-8192でEc 00 00、+8191でEc 7F7Fとなる。


SysExイベント・・・F0HかF7Hで始まるシステムエクスクルーシブメッセージの指定のこと。F7Hは通常使わない。F0Hから始まる場合は次にデータ長を示すデータが続き、実データがその後ろに続いてF7で終焉する。


メタイベント・・・演奏データに含まれない(音源に送られない)シーケンサやファイル内容表示などで便利なデータを納める部分です。曲情報やテンポ・歌詞・茶策権情報などがこれに当たります。

必ずFFHで始まります(デルタタイムは当然その前に入れておく)。トラックの終端であるFF 2F 00はメタイベントということですね。

このFFHはメタイベントだと示すもので他と重複することがありません。またMIDIイベントの8c 9c Ac Bc Dc Ecなども重複しないように定められています。このことはこれらのデータが先頭にある場合次に来るデータが何であるか判断することができますね。このようなデータ部分をステータスバイトと呼びます。

MIDIイベントでは連続する同じステータスバイトは省略できるとあります。これをランニングステータスルールというそうです。尚SysExイベントとメタイベントはランニングステータスルールは適用できません。

以下一例のみ

FF 51 03 tttttt・・・テンポです。シーケンサが演奏データを送る際のタイミングに必要ですね。分解能とデルタタイムには時間概念がありません。テンポがなければ演奏速度が決まらないんです。逆にテンポと分解能とデルタタイムによって演奏データの送信タイミングが算出されているともいえます(拍子記号の設定によってはそれも関係する)。シーケンサが速度を変更できるのは時間管理はシーケンサが握っているからに他なりません。

テンポって演奏速度ですが、通常シーケンサではBPMという表示になっています。これはビート/ミニッツ(Beat Per Minutes)のことで一分間に刻む拍数で表しています。ではMIDIデータではどうなっているかというと、四分音符の長さをどの程度にするかを数値で書き込みます。この時の単位はμ秒(マイクロ秒)です。μはミリの更に千分の一です。ミリは千分の一ですから、マイクロは百万分の一です。10のマイナス6乗ですね。この単位で四分音符の長さを決定します。

※TSXBINで時間単位を変更すると演奏速度が変わります。現在値よりも大きくすると速くなり、小さくすると遅くなります。しかし楽譜表示にずれがでますので、やらない方がいいでしょう(演奏自身には問題なし)。

BPM60ということは一分間に60拍しますね(メトロノームで速度60にしたメトロノーム記号と同じで、四分音符が一分間に刻む数で表します)。四分の四拍子の場合を考えます。60拍を60秒間で刻みますので、1拍は1秒ですね。ということは四分音符の長さは1秒ですから1000,000マイクロ秒という値が実際のテンポ値になります。

四分の四拍子・BPMがXの時は・・・1分は60×1000,0000ですから、これをXで割ると四分音符ひとつの長さがマイクロ秒で算出されます。この計算でどうしても割り切れない場合がありますので、シーケンサではテンポをBPMで表している以上誤差が生じます。大抵は有効桁数以下を切捨てして最終的にBPM値を出しているようです。先の図でテンポが79.53となっているのはそんな理由からです。

・FF 58 04 nn dd cc bb・・・拍子記号

・FF 59 02 sf mi・・・調号。sfには、♯や♭の数が入る。正数なら♯の数、負数なら♭の数を表す。 ハ長調(つまり♯も♭もない)の場合は0。 miは長調か短調かを表すフラグで、0なら長調、1なら短調。

イ長調の場合・・・FF 59 02 03 00   イ長調(A Major)はシャープ3つなので03H。

ハ短調の場合・・・FF 59 02 FD 01   FDHは-3。ハ短調(C Minor)はフラット3つ。

※TSXBINでSINに表示を切り替えると符号付き(+-)十進数で見ることができます。

調号はこのように覚えた・・・by TAXI。音楽専門過程を学んだ人は読まないで・・・(/ω\) ハジカシー。

シャープが増えるごとに・・・。※赤は主音にシャープがつくので嬰がつく。

長調の場合、ハ=>ト=>ニ=>イ=>ホ=>ロ=>=>。まあトニイホロヘと覚えています。

短調の場合、イ=>ホ=>ロ=>=>=>=>=>イ。覚えていないです。トニイホロヘから二つ下の音名を見つけます、あはは。

フラットが増えるごとに・・・。※赤は主音にフラットがつくので変がつく。

長調の場合、ハ=>ヘ=>=>=>=>=>=>

短調の場合、イ=>ニ=>ト=>ハ=>ヘ=>=>=>

で規則性見つけました?

ハ<=>ト<=>ニ<=>イ<=>ホ<=>ロ<=>へ<=>ハ。イ<=>ホ<=>ロ<=>ヘ<=>ハ<=>ト<=>ニ<=>イ。

Sharpが3つ付いた長調の曲はイ長調。でイはAなので英名でA Majorとなります。Sharpが5つ付いた長調の曲は嬰へ長調。へはFなので英名でF# Majorとなります。

調号の位置でわかるんだけどね、ドとラの位置の音名。一番右にあるSharpがシになるのであった。一番右にあるFlatがファなのであった。

 


以下今まで説明のものと重複しますが復習を兼ねて再度MIDIファイルの構造を見ていきましょう。実はこの構造が少しは理解できていないとMIDIの規格書や仕様書を読んでもなかなか意味が理解できないのであります。

MIDIファイル・・・これはテキストファイルではありませんので、テキストエディタで開いても意味不明な記号でしか見ることができません。テキストファイルではないということはバイナリデータということです。バイナリとは2進法という意味で、MIDIデータは2進数のデータの集合体ということです。このデータの内容には意味がこめられています。2進数ではデータの内容を見るのが大変なので8ビットを1バイトとして1バイト単位にまとめて表示してみるとわかりやなります。またこの時2進数ではなく16進数表記で表す方法をパソコンでは行います。1バイトデータは16進数では二桁の数値になります。00〜FFになります。

このバイナリデータを表示・編集することができるソフトをバイナリエディタといいます。ここではMIDIファイルの閲覧に便利なバイナリエディタを紹介しておきます。

TSXBIN(tsxbn400.lzh)・・・MIDIのシンボル表示をしてくれるバイナリエディタです。右クリロックして保存し、解凍後に中にあるTSXBIN.exeを実行すると起動します。MIDIファイルを読み込むかドラッグ&ドロップすると開けます。

TSXBINでMIDIファイルを開いた画面。左にMIDIシンボルが、右に16進数(HEX)でデータの内容が表示されていますね。最左にある5桁の16進数はデータの位置を示すアドレス(番地)です。先頭データが00000番地からになります。番地(アドレス)も16進数表記になっていますね。一番右側はテキストに表した場合の表示です。
BITボタンを押すと2進数表示になります(これが真のデータの姿)。


ではまずSMFの意味から。SMFはスタンダードミディファイルの略で、MIDIファイルの一般的な形式で書かれたデータをいいます。通常MIDかSMF拡張子が付きます。基本的には理解できないコードは無視できる構造(現在あるコードと絶対重複しないコード構造)になっているため、将来拡張が行われても重複あるいは混乱することがないよう工夫されるとあります。

SMFの大まかなデータ構造は次の通りです。

・ヘッダデータ
・トラック1データ・・・コンダクタートラック(指揮トラックとも)
・トラック2データ〜以降トラックの数だけ続く。

トラック1には演奏以外のデータを入れておくのが通常で、実際の演奏データはトラック2から入れるのが一般的。Singer Song Writer 8.0 VSではM1トラックに混在してデータが入っているように見えるが、これはSinger Song Writer 8.0 VSがそのように表示しているだけで、実際にSMFに書き出すとトラック1には演奏データはなく、トラック2から演奏データが入っていることがわかる。従ってSinger Song Writer 8.0 VSでM16だからトラック数は16だと思ったら大間違い。SMF実データは17かそれ以上になる(メタイベントなどがMトラックにあるとその分トラックは増える)。Singer Song Writer 8.0 VSのステップエディタやXG WORKSのリストウィンドウでも同一トラックに入っているように見えるがこれはあくまでもシーケンサ上のお話。SMF保存すると演奏データと演奏以外のデータが混在しないよう書き出される。


ヘッダ・・・ヘッダ先頭は必ず4D 54 68 64で始まります。これはMThdという値を示し、SMFファイルだということを示します。この後ろには実データの大きさ(データバイト数)が入りますが、これは必ず6です(フォーマットで2バイト・トラック数で2バイト・時間単位で2バイト使用します)。次にくるのはフォーマット方法を示すもので、現在00 00か00 01か00 02のいずれかです。最後に時間単位がきます。

フォーマット・・・SMFのフォーマット形式を示します。00 00はフォーマット0、00 01はフォーマット1、00 02はフォーマット2です。フォーマット2は特殊な部類に入りますので割愛します。

フォーマット0・・・1本のトラックに全チャンネルの情報を押し込める形式です。

フォーマット1・・・同期演奏される複数のトラックで構成され,、大抵はシーケンサのひとつのトラックに対して SMFデータのひとつのトラックが対応するようになる。 「トラック」 と呼ばれるものが順番にバイナリ化されて並べられたフォーマット。 トラック構成を保存しつつSMF化したい場合はこの形式を用いる。 通常はこのフォーマット1を用いた方が後々編集しなおす際に便利です。

トラック数・・・これは説明いりませんね。トラック数がいくつあるかです。

時間単位・・・これは少し難しいですが、ここでは一般的な四分音符ひとつあたりの分解能として表現するタイプだけ説明します。四分音符ひとつの長さを分解能という形で数値表現します。分解能の単位はティックで、例えば十進数で分解能480ティックであれば四分音符ひとつの長さを480ティックとすると規定することになります。480は16真数で01 E0となります。480ティックの分解能である場合二部音符の長さは960ティックで、03 C0ですね。八分音符は240ティックで、 00 18になります。

尚これで四分音符の長さはティック単位では解釈できますが、では時間はどのくらい?となるとまだ解釈できませんね。1ティックが何秒とか四分音符を何秒にするかとかとにかく基準になる時間を設けないと計算できません。これは後から説明するテンポ情報が重要になります。


トラックデータ

トラックデータはトラックの開始を示す4D 54 72 6BというMTrk値で始まります。トラックの終端はFF 2F 00というメタイベントです。これは後述します。トラックはトラックの開始であるMTrkの後に実データ長がきて、その後に実データがずらりと続くことになります。

実データ長・・・そのトラックの実データのバイト数です。上では1351バイトとなっていますね。

実データ・・・MTrkイベントで構成されます。MTrkイベントには[デルタタイム]+イベントデータという構成がいくつもつながります。イベントデータにはMIDIイベント・SysExイベント・Metaイベントがあります。

デルタタイム・・・これは直前のイベントと次のイベントの間隔を示す時間で先にあったティックで示します。このデルタタイムを元にシーケンサは送信タイミングを把握できるというわけですね。あくまでも前のイベントから次のイベントへの間隔ですので、一箇所で書き換えると以降の送信タイミングがずれていくので注意が必要です。バイナリエディタでは変更しない方がよいでしょう。分解能480ティックの場合でデルタタイムが240の場合は次のイベントは前のイベントの240ティック(八分音符分の長さ)後に行われるということになります。しかしまだ時間という単位は出てきませんねぇ。次のイベントが同時実行される場合はデルタタイムは 00になります。尚デルタタイムは可変長です。


メタイベント・・・シーケンサやSMFに便利な、演奏データに含まれない情報 (テンポ、曲タイトル等)を納めるのに用いるイベント。基本的に、ステータスバイトFFで始まり、次にイベントタイプを表すバイトが続き、さらに可変長形式で格納されたデータ長が続き、最後にデータ自体が続く。

あくまでもシーケンサに必要な情報であって音源に送信されないものです。演奏データではなく曲情報や歌詞・それにシーケンサが演奏データを送るのに必要なテンポ(演奏速度)などが含まれます。演奏速度度とはシーケンサがMIDIイベントを音源に送るタイミングを図るのに必要なもので、音源は関知しません。音源はあくまでもシーケンサから送られてきたMIDIイベントを即実行するだけです。

メタイベントはこのようにシーケンサが必要な情報であって、これがあることでテンポを表示させたり歌詞を表示させることができます。譜面表示ではノートナンバーに対し臨時記号ではなく調号で表示させることができるのもメタイベントに調号情報が含まれているからです(ない場合は調号なしですね)。

メタイベントにはいろんなタイプが規定されていますがここでは代表的なものだけ取り上げておきます。

メタイベントは必ずFFで始まるステータスバイトから始まります。ステータスバイトとは以降のデータの種類を示すバイトで、MIDIイベントで言えばコントロールチェンジなどではBnから始まります。Bnならコントロールチェンジだってわかるわけですね。ちなみにBnのnは送信チャンネル番号です。

・シーケンス名・・・曲名です。FF 03の後にデータが続きます。

・拍子・・・FF 58 04 nn dd cc bb    nnは拍子の分子。ddは拍子の分母。nnはそのまま数値で示しますが、ddは次のようになっています。

・調号・・・FF 59 02 sf mm・・・sfは♯あるいは♭の数で、付かない場合は00になります。♯の場合は正数で♭の場合は負数で表します。0は00で、正数は00〜7Fまで(0〜127まで)で、負数は80〜FFまで(-128〜-1まで)です。♭ひとつ付く場合はFFですね。mmは長調か短調かを示します。00なら長調、01なら短調です。

・テンポ・・・ここでやっと時間概念が出てきました。シーケンサはこのテンポがあることで時間管理してMIDIイベントを送信できることになります。


上の画像でわかりますが、トラック1の終端がFF 2F 00であり、その後トラック2の開始4D 54 72 6Bからトラック2のデータが続きます。こちらはコンダクタートラックではなくMIDIメッセージが連なります。

SysExイベント・・・いわゆるシステムエクスクルーシブメッセージを送信するものです。これにはステータスバイトがF0のものとF7のものがありますが、ここでは通常用いるF0についてだけ触れます。

形式:F0 データ長 転送データ F7

SysExイベントは音源の初期化や音源固有の設定を行うために送信するメッセージで、音源側は受け取ると動作モードを変えるなどを行います。

データ長は転送データとF7という1バイトデータを合計したバイト数です。実際に音源に送られるデータはこの内容すべて(F0 データ長 転送データ F7まで)。F7は終わりを示すステータスバイトで、EOX(エンドオブエクスクルーシブ)ともいいます。

さて上のF0 0A 41 10 42 12 40 00 7F 00 41 F7ですが、GS RESETシステムエクスクルーシブで、これを受け取った音源はGS対応の場合GSモードに切り替わります。0Aがデータ長を示す10バイトであることはお分かりですね(41 10 42 12 40 00 7F 00 41 F7の10バイト)。

次のF0 0A 41 10 42 12 40 00 04 78 44 F7もエクスクルーシブでGSマスターボリュームですが、データセットという送信方法を使用しています(Singer Song Writer 8.0 VS)。詳しくはRoland音源のMIDIインプリメンテーションをお読みください。


MIDIイベント・・・MIDIチャンネルに送られるメッセージで演奏データです。

例えば次のようなものがあります。

・ステータスバイトが8n・・・ノートオフ。8n kk vv(3バイト)でnチャンネルのノートナンバーkkを消音する。vvはなんでも同じ。

・ステータスバイトが9n・・・ノートオン。9n kk vv(3バイト)でnチャンネルのノートナンバーkkの音をヴェロシティ値vvで発音する。vvが00の時はノートオフに同じ。

・ステータスバイトがAn・・・ポリフォニックキープレッシャー。An kk vv(3バイト)で発音中のチャンネルnのノートナンバーkkの音に対し、ヴェロシティ値がvvのプレッシャー情報を送信する。鍵盤を押している状態で更にヴェロシティ値vvで鍵盤を押しなおす。

・ステータスバイトがBn・・・コントロールチェンジ。Bn cc nn(3バイト)でチャンネルnのコントロールナンバーccにnnの値を送信する。

・ステータスバイトがCn・・・プログラムチェンジ。Cn vv(2バイト)でチャンネルnにプログラムナンバーvvを送信する(音色を変える)。

・ステータスバイトがDn・・・チャンネルプレッシャー。Dn vv(2バイト)でチャンネルnに対し、プレッシャー情報を送信する。

ステータスバイトがEn。ピッチベンド。En mm ll(3バイト)でチャンネルnにピッチベンド値llmmを送信する。


ここからは一つ一つの内容をもう少し細かく見ていきます。

システムエクスクルーシブ(SysEx)メッセージ・・・シンセサイザーや音源などの電子楽器は、メーカーによってその設計方式や機能が異なり、楽器固有の音色情報やその伝達方式などをMIDI規格で統一することはほぼ不可能である。こうした情報の送受信を可能にしたものが、システム・エクスクルーシブ・メッセージ(以後 Sys Ex.)である。このデータ送信には16進数が使用される。Sys Ex.はデータ量が大きく、リアル・タイムでの送信にはむかない。送信するデータは、曲頭に1〜2小節程度の空白小節をつくって配列すべきであろう。
また、Sys Ex.だけのチャンネルを作成しておけば、エフェクト・データなどを高度に管理することができる。

Sys Ex.はメーカー独自の情報領域であり、任意のパラメーターを操作するためには、メーカーが指定するパラメーターのアドレスに一定の書式で送信しなくてはならない。

なお、このMIDIメッセージで送受信を行う場合、デバイスナンバーと呼ばれる専用のチャンネルが、送信側の機器と受信側の機器で一致している必要がある。ただし、GMシステムオンなどユニバーサルメッセージと呼ばれているシステムエクスクルーシブメッセージの場合には、デバイスナンバーの設定は不要。SysExイベントがMIDIイベントと異なるのは、ステータスバイトの後に可変長のデータ長が格納される。

※以下は主なもののみ。

【モード変更メッセージ】音源をGM1/GM2/GS/XGなどのモードに初期化、あるいはこれらモードから他のモードに切り替えるためのメッセージ。

【ユニバーサルシステムエクスクルーシブ】

Singer Song Writer 8.0 VSではエクスクルーシブ入力ツールを使用すると予めよく使用されるタイプのものは挿入できます。これはエクスクルーシブマクロで追加することもできます。音源特有の設定などを手入力する場合はエクスクルーシブエディタで入力します。


コントロールチェンジ・・・ステータスバイトがBnで始まるメッセージ。nは送信先チャンネル。この後ろにコントロールナンバーと送信値がくっつく。チャンネル毎にあれこれの設定をするためのメッセージで、0〜119 までの 120 個が割り当てられています。 120から上はモード・メッセージとして使われています。コントロールチェンジには連続可変タイプとスイッチタイプがあります。尚コントロールチェンジをコントローラということもある。

※以下CC#はコントロールチェンジナンバーで、データ長は不要。


NRPN・・・コントロール・チェンジには、NRPN(ノン・レジスタード・パラメーター・ナンバー)と呼ばれる、機器固有の機能を設定できる拡張領域が用意されています。本機ではNRPNの使用によって、音色のパラメーターなどを変化させることができます。
実際の使用にあたっては、まずNRPN(コントローラー・ナンバー98および99、順番はどちらからでもよい)を送信して制御するパラメーターを指定し、その後データ・エントリー(コントローラー・ナンバー6)で指定パラメーターの値を設定します。一旦NRPNのパラメーターが指定されると、その後同一チャンネルで受信するデータ・エントリーは全てそのパラメーターに対する変更値とみなされます。誤動作を防止するために、必要なパラメーターとその値の設定が終わったら、RPNヌル(RPN 7FH 7FH)を設定することをお勧めします。参考資料「●実際のMIDIメッセージの例」<例4>メッセージの例を参照してください。なお、本機ではNRPNに対するデータ・エントリーの下位バイト(コントローラー・ナンバー38)は無視します。これらのNRPNに対応するデータ・エントリーは上位バイト(コントローラー・ナンバー6)のみを送信することによって可能です。

NRPNは、コントロール・チェンジの拡張領域を制御するメッセージである。
この拡張領域にはビブラート、イコライザー、フィルター、ドラム・セットアップなどのパラメーターが用意され、一定の書式で送信することにより、パラメーターの設定をリアルタイムに変更することができる。
NRPNはデータ量が小さく、曲中にデータを配置してもシーケンサーの稼働に支障をきたすことがない。
また、送信がSystem Exclusive Messageよりはるかに簡便なため、音源の各パラメーター編集には最適である。

NRPNは、
Controller Number99(MSB)Controller Number98(LSB)でパラメーターのアドレスを指定し、Controller Number6(Data Entry)に更新させたいデータを入力して送信する。
これらのデータは誤作動防止のため、分解能・四分音符=480のシーケンサーの場合で、少なくとも10
チックス(Ticks)程度の時間をおいて送信したい。
送信順位は、
Controller Number99・Controller Number98・Controller Number6が望ましい。
また、ひとつのチャンネルに複数のデータ・エントリーが存在した場合、音源はこれを最後に受信したNRPNのものとして扱う。
したがって、チャンネル内にいくつかの異なるNRPNを点在させる場合は、そのつどそれぞれ
Controller Number99・Controller Number98・Controller Number6の順に送信しなければならない。

Non Registered Parameter Number(ノン レジスタード パラメーター ナンバー)のこと。MIDIのコントロールチェンジに含まれるメッセージで、フィルターやEG(エンベロープ ジェネレーター)を操作して音色をエディットしたり、ドラムボイスの各リズム楽器ごとのピッチ(音の高低)やレベル(音量)をエディットするなど、MIDIを通して音色をエディットする際に使われる。

 ※ 相対変化のパラメーターは、プリセットされている値を基準(40H)として相対的に変化します。下記は十進数表記です。

ビブラート・レイト(Vibrato Rate)・・・ビブラートの速さを設定する。(相対変化)

【入力書式】
MSB=
Controller Number99=1・・・NRPN MSB。Bn 63 01
LSB=Controller Number98=8・・・NRPN LSB。Bn 62 08
MSB=Controller Number6=mm(0<-64>〜64<0>〜127<+63>) ・・・DataEntry MSB。Bn 06 mm

Vibrato(ビブラート)【音】・・・音を上下にゆりうごかすこと。

ビブラート・デプス(Vibrato Depth)・・・ビブラートの深さを設定する。値を小さくすれば浅く、大きくすれば深くなる。 (相対変化)

【入力書式】
MSB=
Controller Number99=1・・・NRPN MSB。Bn 63 01
LSB=Controller Number98=9・・・NRPN LSB。Bn 62 09
MSB=Controller Number6=mm(0<-64>〜64<0>〜127<+63>) ・・・DataEntry MSB。Bn 06 mm

ビブラート・ディレイ(Vibrato Delay)・・・ビブラートがかかり始めるまでの時間を設定する。値を小さくすれば早く、大きくすれば遅くなる。 (相対変化)

【入力書式】
MSB=
Controller Number99=1・・・NRPN MSB。Bn 63 01
LSB=Controller Number98=10・・・NRPN LSB。Bn 62 0A
MSB=Controller Number6=mm(0<-64>〜64<0>〜127<+63>) ・・・DataEntry MSB。Bn 06 mm

Delay・・・音の遅延時間を設定する。

LPF カットオフ・フリケンシー(LPF Cutoff Frequency)・・・LPFはある一定の周波数帯域から下の帯域だけを通過させるフィルターである。TVFカットオフ周波数(相対変化)
カットオフ・フリケンシーとは通過させる周波数のポイントをいう。
値を大きくすれば高い周波数帯域を通すことになるので音質は明るく硬くなり、逆の場合の音質は柔らかく暗くなる。

【入力書式】
MSB=
Controller Number99=1・・・NRPN MSB。Bn 63 01
LSB=Controller Number98=32・・・NRPN LSB。Bn 62 20
MSB=Controller Number6=mm(0<-64>〜64<0>〜127<+63>)・・・DataEntry MSB。Bn 06 mm

シンセサイザーで使用されるフィルター(ある一定の周波数帯域だけを通過させるろ過機)には、LPF(Low Pass Filter)とHPF(High Pass Filter)の二種類がある。
LPFはある一定の周波数帯域から下の帯域だけを通過させ、HPFはある一定の周波数帯域から上の帯域だけを通過させる。
このフィルターをかけるポイントの周波数を、カットオフ・フリケンシーという。

LPF レゾナンス/YAMAHA VL70-m(LPF Resonanse)・・・カットオフ・フリケンシーに近い周波数のレベルを上げる。
アナログ・シンセ特有の、かなりクセのある音を作りだすことができる。

Controller Number99=1・・・NRPN MSB。Bn 63 01
Controller Number98=33・・・NRPN LSB。Bn 62 21
Controller Number6=mm(0<-64>〜64<0>〜127<+63>)・・・DataEntry MSB。Bn 06 mm

LPF EG デプス/YAMAHA(LPF EG Depth) 【入力書式】

【入力書式】
Controller Number99=1・・・NRPN MSB。Bn 63 01
Controller Number98=34・・・NRPN LSB。Bn 62 22
Controller Number6=mm・・・DataEntry MSB。Bn 63 mm

HPF カットオフ・フリケンシー/YAMAHA(HPF Cutoff Frequency)・・・ハイパス・フィルターでカットする周波数帯域をパートごとに設定する。

【入力書式】
Controller Number99=1・・・NRPN MSB。Bn 63 01
Controller Number98=36・・・NRPN LSB。Bn 62 24
Controller Number6=mm(0<-64>〜64<0>〜127<+63>) ・・・DataEntry MSB。Bn 06 mm

EQ ベース・ゲイン/YAMAHA(EQ Bass Gain)

【入力書式】
Controller Number99=1・・・NRPN MSB。Bn 63 01
Controller Number98=48・・・NRPN LSB。Bn 62 30
Controller Number6=mm(0<-64>〜64<0>〜127<+63>)・・・DataEntry MSB。Bn 06 mm

EQ トレブル・ゲイン/YAMAHA(EQ Treble Gain)

【入力書式】
Controller Number99=1・・・NRPN MSB。Bn 63 01
Controller Number98=49・・・NRPN LSB。Bn 62 31
Controller Number6=mm(0<-64>〜64<0>〜127<+63>) ・・・DataEntry MSB。Bn 06 mm

EQ ベース・フリケンシー/YAMAHA(EQ Bass Frequency)

【入力書式】
Controller Number99=1・・・NRPN MSB。Bn 63 01
Controller Number98=52・・・NRPN LSB。Bn 62 34
Controller Number6=mm(04<32Hz>〜40<2.0KHz>)・・・DataEntry MSB。Bn 06 mm

EQ トレブル・フリケンシー/YAMAHA(EQ Treble Frequency)

【入力書式】
Controller Number99=1・・・NRPN MSB。Bn 63 01
Controller Number98=53・・・NRPN LSB。Bn 62 35
Controller Number6=mm(28<500Hz>〜58<16.0KHz>) ・・・DataEntry MSB。Bn 06 mm

EG アタック・タイム(EG Attack Time)・・・音の立ち上がりの速さを設定する。 TVA&TVFエンベロープ・アタック・タイム(相対変化)鍵盤を弾いた瞬間から、音量が最大値になるまでの時間をいう。

【入力書式】
Controller Number99=1・・・NRPN MSB。Bn 63 01
Controller Number98=99・・・NRPN LSB。Bn 62 63
Controller Number6=mm(0<-64>〜64<0>〜127<+63>)・・・DataEntry MSB。Bn 06 mm

EG ディケイ・タイム(EG Decay Time)・・・音が立ち上がってからサスティーン・レベルに達するまでの時間を設定する。TVA&TVFエンベロープ・ディケイ・タイム(相対変化)。エンベロープ・ジェネレーターで、最大音量からサスティーン・レベルに変化するまでの時間をいう。

サスティーン・・・サステインペダルを踏んだときの効果を出すためのMIDIコントロールチェンジのこと。コントロールナンバーは64番。サステインをオンにすると、鍵盤を放しても(ノートオフの状態になっても)発音中の音が保持される。ホールド1と同じ。

【入力書式】
Controller Number99=1・・・NRPN MSB。Bn 63 01
Controller Number98=100・・・NRPN LSB。Bn 62 64
Controller Number6=mm(0<-64>〜64<0>〜127<+63>) ・・・DataEntry MSB。Bn 06 mm

EG リリース・タイム(EG Release Time)・・・鍵盤をはなしてから音が消えるまでの時間を設定する。 TVA&TVFエンベロープ・リリース・タイム(相対変化)適度な長さのリリース・タイムをあたえることで、広がりのある残響音をつけることができる。

【入力書式】
Controller Number99=1・・・NRPN MSB。Bn 63 01
Controller Number98=102・・・NRPN LSB。Bn 62 66
Controller Number6=mm(0<-64>〜64<0>〜127<+63>)・・・DataEntry MSB。Bn 06 mm

ドラム LPF カットオフ・フリケンシー/YAMAHA(Drum LPF Cutoff Frequency)

【入力書式】
Controller Number99=20・・・NRPN MSB。Bn 63 14
Controller Number98=rr(Drum Note Number)ドラム・インストゥルメントのノート・ナンバー・・・NRPN LSB。Bn 62 rr
Controller Number6=mm(0<-64>〜64<0>〜127<+63>) ・・・DataEntry MSB。Bn 06 mm

ドラム LPF レゾナンス/YAMAHA(Drum LPF Resonance

【入力書式】
Controller Number99=21・・・NRPN MSB。Bn 63 15
Controller Number98=rr(Drum Note Number)ドラム・インストゥルメントのノート・ナンバー・・・NRPN LSB。Bn 62 rr
Controller Number6=mm(0<-64>〜64<0>〜127<+63>)・・・DataEntry MSB。Bn 06 mm

ドラム EG アタック・レイト/YAMAHA(Drum EG Attack Rate)

【入力書式】
Controller Number99=22・・・NRPN MSB。Bn 63 16
Controller Number98=rr(Drum Note Number)ドラム・インストゥルメントのノート・ナンバー・・・NRPN LSB。Bn 62 rr
Controller Number6=mm(0<-64>〜64<0>〜127<+63>) ・・・DataEntry MSB。Bn 06 mm

ドラム EG ディケイ・レイト/YAMAHA(Drum EG Decay Rate)

【入力書式】
Controller Number99=23・・・NRPN MSB。Bn 63 17
Controller Number98=rr(Drum Note Number)ドラム・インストゥルメントのノート・ナンバー・・・NRPN LSB。Bn 62 rr
Controller Number6=mm(0<-64>〜64<0>〜127<+63>)・・・DataEntry MSB。Bn 06 mm

ドラム・インストゥルメント・ピッチ・コース(Drum Instrument Pitch Course)(相対変化)・・・ドラム・ボイスのピッチを、半音単位で上下に設定するパラメーター。

【入力書式】
Controller Number99=24・・・NRPN MSB。Bn 63 18
Controller Number98=rr(Drum Note Number)ドラム・インストゥルメントのノート・ナンバー・・・NRPN LSB。Bn 62 rr
Controller Number6=mm(0<-64>〜64<0>〜127<+63>)・・・DataEntry MSB。Bn 06 mm

ドラム・インストゥルメント・ピッチ・ファイン/YAMAHA(Drum Instrument Pitch Fine)・・・ドラム・ボイスのピッチを微調整するパラメーター。

【入力書式】
Controller Number99=25・・・NRPN MSB。Bn 63 19
Controller Number98=rr(Drum Note Number)ドラム・インストゥルメントのノート・ナンバー・・・NRPN LSB。Bn 62 rr
Controller Number6=mm(0<-64>〜64<0>〜127<+63>) ・・・DataEntry MSB。Bn 06 mm

ドラム・インストゥルメント・レベル(Drum Instrument Level) ドラム・インストゥルメントTVAレベル(絶対変化)。ドラム楽器の個別レベル設定。

【入力書式】
Controller Number99=26・・・NRPN MSB。Bn 63 1A
Controller Number98=rr(Drum Note Number)ドラム・インストゥルメントのノート・ナンバー・・・NRPN LSB。Bn 62 rr
Controller Number6=mm(0〜127)・・・DataEntry MSB。Bn 06 mm

ドラム・インストゥルメント・パンポット(Drum Instrument Panpot)(絶対変化)。ドラム楽器の個別パンポット。

【入力書式】
Controller Number99=28・・・NRPN MSB。Bn 63 1C
Controller Number98=rr(Drum Note Number)ドラム・インストゥルメントのノート・ナンバー・・・NRPN LSB。Bn 62 rr
Controller Number6=mm(00<random>.01<Left-63>〜64<Center>〜127<Right+63>) ・・・DataEntry MSB。Bn 06 mm

ドラム・インストゥルメント・リバーブ・センド・レベル(Drum Instrument Reverb Send Level) (絶対変化)。ドラム楽器の個別リバーブレベル。

【入力書式】
Controller Number99=29・・・NRPN MSB。Bn 63 1D
Controller Number98=rr(Drum Note Number)ドラム・インストゥルメントのノート・ナンバー・・・NRPN LSB。Bn 62 rr
Controller Number6=mm(0〜127) ・・・DataEntry MSB。Bn 06 mm

ドラム・インストゥルメント・コーラス・センド・レベル(Drum Instrument Chorus Send Level)(絶対変化)。ドラム楽器の個別コーラスレベル。

【入力書式】
Controller Number99=30・・・NRPN MSB。Bn 63 1E
Controller Number98=rr(Drum Note Number)ドラム・インストゥルメントのノート・ナンバー・・・NRPN LSB。Bn 62 rr
Controller Number6=mm(0〜127)・・・DataEntry MSB。Bn 06 mm

ドラム・インストゥルメント・ディレイ・センド・レベル(Drum Instrument Delay Send Level)(絶対変化)。ドラム楽器の個別ディレイレベル。

【入力書式】
Controller Number99=31・・・NRPN MSB。Bn 63 1F
Controller Number98=rr(Drum Note Number)ドラム・インストゥルメントのノート・ナンバー・・・NRPN LSB。Bn 62 rr
Controller Number6=mm(0〜127)・・・DataEntry MSB。Bn 06 mm

ドラム HPF カットオフ・フリケンシー/YAMAHA(Drum HPF Cutoff Frequency)

【入力書式】
Controller Number99=36・・・NRPN MSB。Bn 63 24
Controller Number98=rr(Drum Note Number)ドラム・インストゥルメントのノート・ナンバー・・・NRPN LSB。Bn 62 rr
Controller Number6=mm(0<-64>〜64<0>〜127<+63>) ・・・DataEntry MSB。Bn 06 mm

ドラム EQ ベース・ゲイン/YAMAHA(Drum EQ Bass Gain)

【入力書式】
Controller Number99=48・・・NRPN MSB。Bn 63 30
Controller Number98=rr(Drum Note Number)ドラム・インストゥルメントのノート・ナンバー・・・NRPN LSB。Bn 62 rr
Controller Number6=mm(0<-64>〜64<0>〜127<+63>)・・・DataEntry MSB。Bn 06 mm

ドラム EQ トレブル・ゲイン/YAMAHA(Drum EQ Treble Gain)

【入力書式】
Controller Number99=49・・・NRPN MSB。Bn 63 31
Controller Number98=rr(Drum Note Number)ドラム・インストゥルメントのノート・ナンバー・・・NRPN LSB。Bn 62 rr
Controller Number6=mm(0<-64>〜64<0>〜127<+63>)・・・DataEntry MSB。Bn 06 mm

ドラム EQ ベース・フリケンシー/YAMAHA(Drum EQ Bass Frequency)

【入力書式】
Controller Number99=52・・・NRPN MSB。Bn 63 34
Controller Number98=rr(Drum Note Number)ドラム・インストゥルメントのノート・ナンバー・・・NRPN LSB。Bn 62 rr
Controller Number6=mm(04<32Hz>〜40<2.0KHz>) ・・・DataEntry MSB。Bn 06 mm

ドラム EQ トレブル・フリケンシー/YAMAHA(Drum EQ Treble Frequency)

【入力書式】
Controller Number99=53・・・NRPN MSB。Bn 63 35
Controller Number98=rr(Drum Note Number)ドラム・インストゥルメントのノート・ナンバー・・・NRPN LSB。Bn 62 rr
Controller Number6=mm(28<500Hz>〜58<16.0KHz>) ・・・DataEntry MSB。Bn 06 mm

 

NRPN Data-entry Roland GS YAMAHA XG
MSB LSB MSB LSB function data range function data range
01H 08H mmH - Vibrato Rate mm:0EH-40H-72H (-50-0-+50) Vibrato Rate mm:00H-40H-7FH (-64-0-+63)
01H 09H mmH - Vibrato Depth mm:0EH-40H-72H (-50-0-+50) Vibrato Depth mm:00H-40H-7FH (-64-0-+63)
01H 0AH mmH - Vibrato Delay mm:0EH-40H-72H (-50-0-+50) Vibrato Delay mm:00H-40H-7FH (-64-0-+63)
01H 20H mmH - TVF Cutoff Frequency mm:0EH-40H-72H (-50-0-+50) Filter Cutoff Frequency mm:00H-40H-7FH (-64-0-+63)
01H 21H mmH - TVF Resonance mm:0EH-40H-72H (-50-0-+50) Filter Resonance mm:00H-40H-7FH (-64-0-+63)
01H 24H mmH -     HPF Cutoff Frequency mm:00H-40H-7FH (-64-0-+63)**
01H 25H mmH -     HPF Resonance (reserved) mm:00H-40H-7FH (-64-0-+63)**
01H 30H mmH -     EQ BASS mm:00H-40H-7FH (-64-0-+63)**
01H 31H mmH -     EQ TREBLE mm:00H-40H-7FH (-64-0-+63)**
01H 32H mmH -     EQ MID-BASS (reserved) mm:00H-40H-7FH (-64-0-+63)**
01H 33H mmH -     EQ MID-TREBLE (reserved) mm:00H-40H-7FH (-64-0-+63)**
01H 34H mmH -     EQ BASS Frequency mm:00H-40H-7FH (-64-0-+63)**
01H 35H mmH -     EQ TREBLE Frequency mm:00H-40H-7FH (-64-0-+63)**
01H 36H mmH -     EQ MID-BASS Frequency (reserved) mm:00H-40H-7FH (-64-0-+63)**
01H 37H mmH -     EQ MID-TREBLE Frequency (reserved) mm:00H-40H-7FH (-64-0-+63)**
01H 38H          
-           Reserved for EQ**  
01H 3FH          
01H 63H mmH - TVF&TVA Envelope Attack Time mm:0EH-40H-72H (-50-0-+50) EG Attack Time mm:00H-40H-7FH (-64-0-+63)
01H 64H mmH - TVF&TVA Envelope Decay Time mm:0EH-40H-72H (-50-0-+50) EG Decay Time mm:00H-40H-7FH (-64-0-+63)
01H 66H mmH - TVF&TVA Envelope Release Time mm:0EH-40H-72H (-50-0-+50) EG Release mm:00H-40H-7FH (-64-0-+63)
               
14H rrH mmH -     Drum Filter Cutoff Frequency mm:00H-40H-7FH (-64-0-+63)
15H rrH mmH -     Drum Filter Resonance mm:00H-40H-7FH (-64-0-+63)
16H rrH mmH -     Drum EG Attack Rate mm:00H-40H-7FH (-64-0-+63)
17H rrH mmH -     Drum EG Decay Rate mm:00H-40H-7FH (-64-0-+63)
18H rrH mmH - Drum Instrument Pitch Coarse mm:00H-40H-7FH (-64-0-+63) Drum Pitch Coarse mm:00H-40H-7FH (-64-0-+63)
19H rrH mmH -     Drum Pitch Fine mm:00H-40H-7FH (-64-0-+63)
1AH rrH mmH - Drum Instrument TVA Level mm:00H-7FH (0-MAX) Drum Level mm:00H-7FH (0-Max)
1BH              
1CH rrH mmH - Drum Instrument Panpot mm:00H, 01H-40H-7FH (Random, L-Center-R) Drum Pan mm:00H, 01H-40H-7FH (Random, L-Center-R)
1DH rrH mmH - Drum Instrument Reverb Send Level mm:00H-7FH (0-MAX) Drum Reverb Send Level mm:00H-7FH (0-Max)
1EH rrH mmH - Drum Instrument Chorus Send Level mm:00H-7FH (0-MAX) Drum Chorus Send Level mm:00H-7FH (0-Max)
1FH rrH mmH - Drum Instrument Delay Send Level mm:00H-7FH (0-MAX) Drum Variation Send Level mm:00H-7FH (0-Max)
24H rrH mmH -     Drum HPF Cutoff Frequency mm:00H-40H-7FH (-64-0-+63)**
25H rrH mmH -     Drum HPF Resonance (reserved) mm:00H-40H-7FH (-64-0-+63)**
30H rrH mmH -     Drum EQ BASS mm:00H-40H-7FH (-64-0-+63)**
31H rrH mmH -     Drum EQ TREBLE mm:00H-40H-7FH (-64-0-+63)**
32H rrH mmH -     Drum EQ MID-BASS (reserved) mm:00H-40H-7FH (-64-0-+63)**
33H rrH mmH -     Drum EQ MID-TREBLE (reserved) mm:00H-40H-7FH (-64-0-+63)**
34H rrH mmH -     Drum EQ BASS Frequency mm:00H-40H-7FH (-64-0-+63)**
35H rrH mmH -     Drum EQ TREBLE Frequency mm:00H-40H-7FH (-64-0-+63)**
36H rrH mmH -     Drum EQ MID-BASS Freq. (reserved) mm:00H-40H-7FH (-64-0-+63)**
37H rrH mmH -     Drum EQ MID-TREBLE Freq. (reserved) mm:00H-40H-7FH (-64-0-+63)**
38H rrH          
-           Reserved for EQ**  
3FH rrH          
40H rrH mmH -     Drum VELOCITY PITCH SENS. mm:00H-0FH (0-15)**
41H rrH mmH -     Drum VELOCITY LPF CUTOFF SENS. mm:00H-0FH (0-15)**
rr : drum instrument note number

 


RPN・・・まずRPN(コントローラー・ナンバー100・・・RPN LSBおよび101・・・RPN MSB、順番はどちらからでもよい)を送信して制御するパラメーターを指定し、その後データ・エントリー(コントローラー・ナンバー6・・・DataEntry MSB, 38・・・DataEntry LSB)で指定パラメーターの値を設定します。一旦RPNのパラメーターが指定されると、その後同一チャンネルで受信するデータ・エントリーは全てそのパラメーターに対する値の変更とみなされます。誤動作を防止するために、必要なパラメーターとその値の設定が終わったら、RPNヌルを設定することをお勧めします。

MIDI規格でその機能が定義されている拡張パラメーターである。NRPNとおなじように、音源の各パラメーターをリアルタイムで制御することができる。

Registered Parameter Number(レジスタード パラメーター ナンバー)のこと。MIDIのコントロールチェンジに含まれるメッセージで、ピッチベンドセンシティビティや、マスターチューニングなど、特殊なパラメーターをコントロールする際に使われる。

RPN MSB(コントロールナンバー101)、RPN LSB(コントロールナンバー100)で変更したいパラメーターを指定した後、データインクリメント/デクリメントでパラメーターの値を設定する。

RPNが設定されると、その後同じチャンネルで受信するデータエントリーは、設定したRPNの値として処理される。このメッセージを使ってコントロールした後は、一旦パラメーターナンバーをNull(7FH,7FH)に設定し直して誤操作を防止することが望ましい。

ピッチベンド・センシティビティー(Pitch Bend Sensitivity)・・・ピッチ・ベンド・レンジを半音単位で設定する。2オクターブの設定が可能。ということはData Entryのとりうる値は0〜24ということです。
ピッチ・ベンドは0を基点に、−8192〜+8192の範囲で設定できる。
半音ステップで2オクターブまで指定可能です。

ピッチベンドの上下範囲に対し、半音いくつ分の幅をもたせるかを設定する。例えばPitch Bend Sensitivity(Picth Bend Range)が12である場合、半音12個分つまりは1オクターブの幅があることになります。ピッチベンドを8192にすると元の音は1オクターブ高い音になり、-8192では1オクターブ低くなります。8192をピッチベンドレンジで割ると半音上下させるために必要なピッチベンド値が算出できます。ピッチベンドレンジが12の場合、i8192÷12≒693ですので、半音上げるためにはピッチベンドは693にすればいいことになります。全音(半音二つ分)上げるには約1365にすればいいことになります。尚ピッチベンドレンジのデフォルト値は音源やシーケンサの多くが2になっています。グリサンドやスライド奏法など大きく音の高さを変える場合は12または24にするといいでしょう。

【入力書式】
Controller Number101=0・・・RPN MSB。Bn 65 00
Controller Number100=0・・・RPN LSB。Bn 64 00
Controller Number6=mm(0〜24) ・・・DataEntry MSB。Bn 06 mm

マスター・ファイン・チューニング(Master Fine Tuning)・・・・チャンネルごとのピッチの微調整を行うメッセージ。
入力データはオフセット値として、元のデータ(
64<0>)に加算される。

【入力書式】
Controller Number101=0・・・RPN MSB。Bn 65 00
Controller Number100=1・・・RPN LSB。Bn 64 01
Controller Number6=mm(0<-64>〜64<0>〜127<+63>) ・・・DataEntry MSB。Bn 06 mm
Controller Number38=ll(0<-64>〜64<0>〜127<+63>) ・・・DataEntry LSB。Bn 26 ll

マスター・コース・チューニング(Master Coarse Tuning)・・・±2オクターブのピッチ設定ができる。

【入力書式】
Controller Number101=0・・・RPN MSB。Bn 65 00
Controller Number100=2・・・RPN LSB。Bn 64 02
Controller Number6=mm(40<−24>〜64<0>〜88<+24>) ・・・DataEntry MSB。Bn 06 mm

RPN ヌル(RPN null)・・・RPNとNRPNの設定をすべて解除するメッセージ。
ひとつのチャンネルにさまざまなRPNとNRPNが存在する場合、データ・エントリーの認識をめぐる誤作動を防止するため、データ・エントリー値の後には、ヌルを入力したい。

RPNおよびNRPNが指定されていない状態にします。RPNヌルに設定後受信したデータ・エントリーは無視します。(RPNヌルの設定にはデータ・エントリーの送信は不要です。)既に設定済みの設定値は変化しません。

【入力書式】
Controller Number101=127・・・RPN MSB。Bn 65 7F
Controller Number100=127 ・・・RPN LSB。Bn 64 7F

 

RPN function Roland GS Yamaha XG initial value
MSB LSB MSB LSB
00H 00H pitch bend sensibility 02H -
00H 01H fine tuning 40H 00H
00H 02H coase tuning 40H -
00H 03H tuning program select       -
00H 04H tuning bank select       -
00H 05H (moduration sensibility)        
7FH 7FH null - -

 


DataEntry・・・MIDIコントロールチェンジの一種。コントロールナンバーは 6 番(Data Entry MSB)と38番(Data Entry LSB)で、この2つの値の組み合わせによってパラメーターの数値を設定する。主にRPNやNRPNで指定したパラメーターの数値を変更するときに使う。上の場合はコントロールチェンジ38のData Entry LSBは使用していない(必ず組み合わせなければならないわけではなく、DataEntry MSBだけを使用するものも多い。つまり0〜127の値で十分なもの)。


LSB(エル・エス・ビー)【midi】・・・下位バイト。Least Significant Byte。
コントロール・チェンジを送信する場合、MSB(上位バイト)とLSBを組み合わせることで送信精度を高めることができる。
よく使用されるController Number0〜11はMSBであり、そのLSBは32〜43である。
また、NRPNの送信に用いるController Number99、RPNの送信に用いるController Number101はMSBであり、そのLSBは98、100である。

Least Significant Byteの略名で、MIDIコントロールチェンジのデータを2バイトに分けて送信する際の、データバイトの下位バイトのことを意味する。

MSB・・・Most Significant Byteの略名で、MIDIコントロールチェンジのデータを2バイトに分けて送信する際の、データバイトの上位バイトのことを意味する。LSBを組み合わせしない場合はMSBだけで使用する。

※1バイトは2進数8桁の数値であり、一番下位にあるビットをLSB(Least Significant Bit)といい、一番上にあるビットをMSB(Most Significant Bit)という。1バイトの数値の場合のLSBを第0ビット、MSBを第7ビットと言います。00101011であれば一番左が第7ビット目、一番右が第0ビット目です。ちなみに00101011は16進数で2B、十進数で43です。16進数一桁で2進数14桁を表せますので、00101011は 0010と1011に分けてそれぞれ16進数で表します。これが1バイト。1KBは1024バイト、1MBは1024KB、1GBは1024MBです。


MIDI用語ミニメモ

Quantize(クォンタイズ)【midi】・・・リアルタイムで打ち込んだデータの、リズムのずれを修正する機能。またはその作業。

音名(Pitch Name)【音】・・・オクターブ内の12個の音につけられた固定的名称。
ピアノの白鍵にあたるものを幹音、それがシャープやフラットなどによって半音変化したものを
派生音という。
国によって幹音の名称は異なるが、その比較は以下のとおり。

日本---ハ・ニ・ホ・ヘ・ト・イ・ロ
英米---C・D・E・F・G・A・B
伊仏---Do(Ut)・Re・Mi・Fa・Sol・La・Si
独-----C・D・E・F・G・A・H

MIDIではMiddle Cを60として、その上下の各鍵盤ごとに0〜127の番号が音名として割り当てられている。

チャンネル(Channel)【midi】・・・MIDI規格では、音源は16個のチャンネルをもつよう規定している
互換性を保つため、10チャンネルはドラムに割り当てられる。
MIDIインターフェースに複数の音源を接続すれば、チャンネル数はその分ふえることになる。

ドラム・ノート(Drum note)【midi】・・・MIDIチャンネル10に指定されたドラム音。各鍵盤ごとに異なる楽器音が割り当てられている。
NRPNでそれらの音を編集できる。

セント(cent)【音】・・・半音を100分した音程。100セントが半音。

トニック(Tonic)【音】・・・スケールのはじまりの音。その調の根音(根音=コードを構成する主音)。
この音名が調名になる。

ノート・シフト(Note Sift)【midi】・・・チャンネルごとの音程を、半音単位で設定するパラメーター。
通常、上下2オクターブの設定が可能である。
ベース・ギターやピアノでNote Number36以下の鍵盤を使用する場合、ノート・シフトを1オクターブ低く設定しなければならない。

ノート・ナンバー(Note Number)【midi】・・・MIDIキーボードの各鍵盤につけられた番号。
Middle C(ト音記号下第一線)を60として、その上下の鍵盤半音ごとに0〜127の数字が割り当てられる。

ベロシティ(Velocity)【midi】・・・本来の意味は速度。MIDIでは音の強さをいう。
実際の打ち込みでは、この値の100ぐらいを中心に上下させ、音に表情をつける。なぜなら初めから最大値127で作成すると後から抑揚をつけるためより大きくしたい場合に困るからである。

Program Change・・・音色(楽器音)の切り替えを行なう場合に送信するメッセージ。 Cn xxのメッセージ。nは送信先チャンネル・xxはプログラムナンバー。これは2バイトデータになります。

【入力書式】
Bank Select MSB Controller Number0(mm=0〜127)
Bank Select LSB Controller Number32(mm=0〜127)
Program Number(mm=0〜127)

バリエーション・・・YAMAHAで下記を指す。

@バリエーション・・・XGに対応した音源では音色が0から127まで(メーカーによっては1から128まで)用意されているが、その一つ一つにバリエーションと呼ばれる別タイプの音色が用意されており、特定のコントロールチェンジのナンバーで呼び出すことができる。例えばギターのバリエーションの中には表のプログラムナンバーには無いマンドリンやウクレレなどが用意されている。ようするにGM1に規定される音色に対し、バリエーションとしてバンク切り替えすることで類似音色を選べるということか。要するにGM音色に対応するバンク0にある音色を基本トーン(Capiatal Toneと呼ばれることもある)とし、その拡張音色がバンク0以外にセットされており、その音色をCapital Toneに対してバリエーショントーンと呼ぶ。類似音色になっていないバンクもある(まあ特殊なバンクでSFX系/パーカッション系の音色がそのバンクにセットされていることが多い)。

※Capital・・・資本

Aバリエーションエフェクト・・・XG音源で採用されているエフェクト機能で、リバーブやコーラス以外にディレイやロータリースピーカー、オートパン、アンプシミュレーター、オートワウなど多彩なエフェクトプログラムが用意されている。システムエフェクトとしてもインサーションエフェクトとしても使用可能。RolandのGS音源にもこっそり隠し機能として対応しているものがある。


音色とバンクセレクト

GS音源の場合はBANK SELECT MSBを使用してバンクの切替を行います。BANK SELECT LSBはというと、拡張マップの互換音源マップ切替を行うのに使用されます。例えばSC-88Proの場合は、SC-88Proマップ・SC-88マップ・SC-55マップ・デフォルトマップという切替を行うときにBANK SELECT LSBを使用します。音源マップによって拡張音色数が異なります。ドラムについても同様にドラムマップが音源ごとに異なりますので、上位機種の場合は下位互換マップに合わせるときにBANK SELECT LSBを使用します。ドラムの場合はBANK SELECT MSBの値は常に00Hです。

XG音源では、BANK SELECT LSBによって拡張音色(バリエーショントーン)のバンク切替をします。BANK SELECT MSBはVIOCEマップ選択になります。例えばMU-50ではBANK SELECT MSBが00Hで通常のキャピタルトーンとそれに付随する拡張音色であるバリエーショントーンのマップになります。
BANK SELECT MSBが40H(64)ではSFXトーンとしての音色が入っています。BANK SELECT MSBが7EH(126)はドラムのSFXマップになります。BANK SELECT MSBが7FH(127)でドラムマップになります。XG音源ではXG System Onを受信後にBANK SELECT MSBが7EH(126)または7FH(127)を指定するとドラムパートになります。逆にチャンネル10にBANK SELECT MSBを00Hや40Hにしてもメロディトーンにはなりません。

GSの場合は通常チャンネル10でドラムパートになります。XGのようにBANK SELECT MSBやBANK SELECT LSBでチャンネル10以外をドラムパートにすることはできません。(GS System Exclusiveを使用することで変更することも可能・・・GSではドラムマップを同時に二つセットする個ことも可能)。

XG/GS共にすべてのパートをドラムパートにすることもできます。これはリズム楽器だけの音楽を作成するときのために役立ちます。


VIstaのMIDI音源---Micorosoft GS Wavetable SW Synth

VistaではMIDIマッパーがなくなりました。そのため規定のMIDI音源デバイスを変更する仕組みがなくなりました(レジストリをいじると可能です)。この規定のMIDI音源デバイスを変更する方法は「Vista Default MIDI Out Device変更方法」をご覧ください。

またVista標準搭載のソフトウェアMIDIシンセサイザ「Micorosoft GS Wavetable SW Synth」で、一部環境において
・「XPの同じ音源では聞こえていった音色がVistaのそれではならなくなった音色がある」
・「一部の音色で音程がおかしい」
という不都合が発生しているようですが、これについてはマイクロソフトからアナウンスされていますので、お心当たりの方は下記を参照ください。
Windows Vista-based コンピュータで Microsoft GS Wavetable シンセサイザ を使用すると、問題が発生することがあります。
Vista Service Pack 1でこの問題は解消されています。

 


[Singer Song Writer 8.0 VS 紹介][Singer Song Writer 8.0 VS MIDI 作成][Singer Song Writer 8.0 VS ドラム楽器の割り当て][Singer Song Writer 8.0 VS コントロール][Singer Song Writer 8.0 VS Audio 1][Singer Song Writer 8.0 VS オートメーション1][Singer Song Writer 8.0 VS 注意事項][Singer Song Writer 8.0 VS トーンマップ][MIDIについて]