この記事は3年以上前に書かれた記事です。情報が古い可能性があります。
MIDIで曲をつくる上での基礎知識。個人的な備忘。
曲データをつくる上での基本
- GM/GS/XG などのシステムリセットは、必ず曲の先頭に入れる。
- Step Time、Tick Time、Gate Time の各値の意味をおさえる。
- Step Time(ステップタイム)は、いわゆる音符の長さ。480 で 4分音符。
- 4/4拍子なら、1小節の Step Time の合計は 480 x 4 = 1920。
- Tick Time(チックタイム)は、その小節内の発音開始自刻(音符の位置)。
- 次の小節に行くと 0 開始になる。
- Gate Time(ゲートタイム)は、楽器のホールド時間。ピアノなら鍵盤を押してる時間。
- Gate Time は必ずしもその音の Step Time に一致しない。
- 例えば、4分音符(Step Time は 480)の Gate Time を 120 などにすると スターカットのような効果を得る。
- Step Time(ステップタイム)は、いわゆる音符の長さ。480 で 4分音符。
- Tempo(テンポ)は曲の進行の速さ。どれかひとつの Track の先頭に設定する。
- Tempo 管理用の無音 Track をひとつ用意しておくと良い。
- Track(トラック)と Channel(チャンネル)は別物。
- Track は打ち込みの際の便宜的な入れ物。
- Channel は実際に音を出す楽器に相当するもの。
- 例えば 2つの Track が 1つの Channel を使っていたりすることもある。
- 10 Ch (Channel)はリズムパート。ドラム、パーカッション専用チャンネル。
- GS や XG は 10 Ch 以外にもリズムパートを割り当てられる。
プログラムチェンジ
音色番号(バンク)の設定、変更。要は、その Channel の楽器を変えること。複数 Track で1つの Channel を使っている場合は、他所の Track に影響する。
初心者が誤解しがち(というか、私が初学者の頃に誤解してたこと)なのが Channel は Track ごとに割り当てられていると考えて、ある Track の音色(楽器)だけ切り替えるつもりで Channel の音色を曲の途中で変更したら、他の Track の音色も変わってしまいカオスになるというやつ。
Channel はデータ全体で共有するので、途中でプログラムチェンジする可能性のある Channel は他の Track で使用しないようにする方が良い。そうでない場合は、どの Channel をどの Track が使用しているかを意識しながらデータ作成する必要がある。
コントロールチェンジ
音色以外の様々なパラメータの変更。ボリューム、パン、ベロシティなどを数値で指定する。
- パラメータの最低値は 0。最大値は 127。(幅128)
- 上下左右がある場合は -64~63 で 0 が中央値になる。
Volume(ボリューム)
音量(そのまんま)。
大抵は、最初に設定した値をいじらない。Track ごとのボリューム制御は後述の Expression で行われることが多い。
Expression(エクスプレッション)
音量。
曲進行中に音量の上下をする場合は Volume ではなく、大抵こちらを設定する。
Velocity(ベロシティ)
強弱。
ピアノなら、強く弾いたり弱く弾いたりみたいな表現。
Modulation(モデュレーション)
音の揺れ具合。
Vibrato(ビブラート)ともいう。DAWやシーケンサによっては Vibrato と表現していることもある。MIDIで Vibrato をかける際は、この値をいじる。
Panpot(パンポット)
音の位置。
左が -64。右が 63。中央が 0。普通は 0 に初期化しておく。
Reverb(リバーブ)
音の響き具合。
いわゆる残響効果。最近はこれは MIDI でなく、オーディオ編集でやることが多いかも。
Del/Var(ディレイ)
エコーの効き具合。
いわゆる反響効果。同じ音をちょっと遅れて反復減衰させていく。やまびこ。
Chorus(コーラス)
同じ音を重ねたような効果。
同じ楽器を複数で演奏するような状況の再現。これを上げると音が重厚になる。
ピッチベンドチェンジ
Pitch Bend(ピッチベンド)は、音程を滑らかに変化させる効果。
この値は -8192 から 8192 までとる。Pitch Bend がどれだけ変化するかは Pitch Bend Sensitivity(ピッチベンドセンシティビティ)の値による。
システムエクスクルーシブ
0xF0から始まり、0xF7で終わるMIDIメッセージ。機器ごとに固有の効果があり、GMで規定されていない効果を機器側が拡張的に再現できるものだが、このデータを含む曲データは再生機器(音源)を選ぶことになる。
SOM | VendorID | DeviceID | ModelID | CommandID | Address | Data | CS | EOM | |
GS -> | 0xF0 | 0x41 | 0x10 | 0x42 | 0x12 | … | … | … | 0xF7 |
XG -> | 0xF0 | 0x43 | 0x10 | 0x4C | 0x02 | … | … | … | 0xF7 |
- SOM
メッセージの開始。0xF0固定。 - VendorID
ベンダーを識別するID。以下の通り。- Kawai : 0x40
- Roland : 0x41
- KORG : 0x42
- YAMAHA : 0x43
- CASIO : 0x44
- DeviceID
音源のID。複数の音源を使用する場合に使用するが、普通は1つなので0x10固定で。 - ModelID
GSなら0x42。XGなら0x4C。 - CommandID
GSなら0x12。XGなら0x02。 - Address
使用する機能を指示する(後述) - Data
アドレスで指定された機能の値を指示する。 - CS
チェックサム。XGには一部のメッセージを除いて不要。 - EOM
メッセージの終了。0xF7固定。
システムエクスクルーシブのメッセージでは、上記の Address で拡張機能を指定する。よく使用されるのは以下のものがある。
Function | Message |
Reverb | 0x40 0x01 0x30 |
Chorus | 0x40 0x01 0x38 |
Moduration Pitch Depth | 0x40 0x21 0x04 |
Moduration TVF Depth | 0x40 0x21 0x05 |
Moduration TVA Depth | 0x40 0x21 0x06 |
チェックサムの計算
Address部とData部の値をすべて加算した値がチェックサム対象となる。
CS値 = 128 - {( Addressの値 + Data部の値 ) % 128}
つまり、Address部とData部を加算した値を128で割ってその余りを128から引いた値。
例えば、次のリバーブを設定するメッセージのCSを計算してみる。
0xF0 0x41 0x10 0x42 0x12 0x40 0x01 0x30 0x02 CS 0xF7
Address部は 0x40 0x01 0x30
Data部は 0x02
なので 0x40 + 0x01 + 0x30 + 0x02 = 64 + 1 + 48 + 2 = 115 が値の総和。
これを128で割った余りは 115。( 115÷128 = 0 … 115 ) なので、CSは 128 – 115 = 13。16進数にして 0x0D
ということで、上記メッセージは次の通りになる。
0xF0 0x41 0x10 0x42 0x12 0x40 0x01 0x30 0x02 0x0D 0xF7
GSドラムセット
GS音源では10ch以外にドラムセットを2つ割り当てることができる。ドラムを割り当てるには最初にどのチャンネルをドラムにするかエクスクルーシブメッセージで設定しておく。(ここ参考)
以下は、GS固有のドラムセットについて。XGやその他規格の音源には必ずしも適用されない。
NO | SET | NAME | DISCRIPTION | TG |
1 | 0x00 | STANDARD 1 | 標準的なドラムセット | |
2 | 0x01 | STANDARD 2 | STANDARDセットのバリエーション | 88以上 |
3 | 0x02 | STANDARD 3 | ランダムにタイミングがずれるSTANDARDセット | 88Pro以上 |
9 | 0x08 | ROOM | ライブハウス向けドラムセット | |
10 | 0x09 | HIP HOP | ヒップホップ向けドラムセット | 88Pro以上 |
11 | 0x0A | JUNGLE | 土人のドラムセット | 88Pro以上 |
12 | 0x0A | TECHNO | テクノ音楽向けドラムセット | 88Pro以上 |
17 | 0x10 | POWER | ハードロックハウス向けドラムセット | |
25 | 0x18 | ELECTRONIC | シモンズの電子ドラムセット | |
26 | 0x19 | TR-808 | Roland ドラムマシン TR-808 のセット | |
27 | 0x1A | DANCE | ダンスミュージック向けセット | 88以上 |
28 | 0x1B | CR-78 | Roland ドラムマシン CR-78 のセット | 88Pro以上 |
29 | 0x1C | TR-606 | Roland ドラムマシン TR-606 のセット | 88Pro以上 |
30 | 0x1D | TR-707 | Roland ドラムマシン TR-707 のセット | 88Pro以上 |
31 | 0x1E | TR-909 | Roland ドラムマシン TR-909 のセット | 88Pro以上 |
33 | 0x20 | JAZZ 1 | ジャズ向けスティック使用のドラムセット | |
41 | 0x28 | BRUSH | ジャズ向けブラシ使用のドラムセット | |
49 | 0x30 | ORCHESTRA | オーケストラの打楽器セット | |
50 | 0x31 | ETHNIC | 民俗音楽で使われる打楽器のセット | 88以上 |
51 | 0x32 | KICK & SNARE | キックドラムとスネアドラムのバリエーション | 88以上 |
53 | 0x34 | ASIA | アジアの民俗音楽で使われる打楽器のセット | 88Pro以上 |
54 | 0x32 | CYMBAL & CLAPS | シンバル、ハイハットのバリエーション | 88Pro以上 |
57 | 0x38 | SFX | 効果音のセット | |
58 | 0x39 | RHYTHM FX | 打楽器的に使える効果音のセット | 88以上 |
59 | 0x3A | RHYTHM FX 2 | 打楽器的に使える効果音のセット その2 | 88Pro以上 |
128 | 0x7F | CM-64/32L | Roland CM-64/32L データ互換用のセット |