今回は皆さんが何気なく使っているであろう、Microsoft Wavetable GS SW SynthというGM音源の攻略をしましょう。
まず、GM音源とは何なのかを知りましょう。
GM音源のGMとは、General MIDIの略称で、1991年に"米国 MIDI Manufacturers Association(通称:MMA)"と
"社団法人 音楽電子事業協会(通称:AMEI)"が定めたMIDI規格に属する仕様です。
このGeneral MIDIとは、数多くあるMIDI音源間において、メーカーや機種に制限されることなく、音源の動作や
音色配列を共通化し、音源に左右されないMIDIデータの制作・配布を行うためのフォーマット(仕様)です。
それでは、General MIDIの仕様を確認してみましょう。
| 最大同時発音数 | 24音 |
| パート数 | 16チャンネル うち10チャンネルはドラムセット専用 |
| 音色数 | 128音色、1ドラムセット(ドラムセット内には47種類の音色) |
| コントロール ナンバー |
要素 | 解説 | サクラでのコマンド |
|---|---|---|---|
| 1 | モジュレーション | 音にビブラート効果を与える | M(0〜127), Modulation(0〜127) |
| 6 | データエントリー(MSB) | RPNデータのMSB値を設定 | DataMSB(0〜127), Y(0〜127) |
| 7 | ボリューム | パート音量の設定 | MainVolume(0〜127), V(0〜127) |
| 10 | パン | 音の定位を設定 | Panpot(0〜127), P(0〜127) |
| 11 | エクスプレッション | ボリューム値を相対変化させる | Expression(0〜127), EP(0〜127) |
| 38 | データエントリー(LSB) | RPNデータのLSB値を設定 | y38,(0〜127) |
| 64 | ホールド1 | ダンパーのオン(0〜63)、オフ(64〜127)を切り替える | y64,(0〜127), ペダル, 放す |
| 100 | RPN(LSB) | RPNのLSB値を設定 | y100,(0〜127) |
| 101 | RPN(MSB) | RPNのMSB値を設定 | y100,(0〜127) |
| 120 | オールサウンドオフ (対応を推奨) | 発音中の音全てを消音させる | y120,0 |
| 121 | オールリセットコントローラ | コントロールの値を初期値に戻す | y121,0 |
| 123 | オールノートオフ | 発音中の音を消音させる(ダンパー中の物は除く) | y123,0 |
| 124 | オムニオフ | 同上 | y124,0 |
| 125 | オムニオン | 同上 | y125,0 |
| RPNナンバー MSB,LSB |
要素 | 説明 | サクラでのコマンド |
|---|---|---|---|
| 0,0 | ピッチベンドセンシティビティー | ピッチベンドで変化する最大値を設定(0〜12(半音)) | PitchBendSensitivity(0〜12), BR(0〜12) [stdmsg.hが必要] RPN(0,0,0〜12) |
| 0,1 | ファインチューン | -100〜100centの範囲でピッチを調整する | FineTune(0〜127) [stdmsg.hが必要] RPN(0,2,0〜127) |
| 0,2 | コースチューン | -12〜12(半音)の範囲でピッチを調整する | CoarseTune(52〜76) [stdmsg.hが必要] RPN(0,2,52〜76) |
| 127,127 | RPN Null (対応を推奨) | RPNが何も選択されていない状態にする | RPN(127,127,0) |
| システムエクスクルーシブ | 要素 | 説明 | サクラでのコマンド |
|---|---|---|---|
| F0 7E 7F 09 01 F7 | GM System On | いわゆるGMリセットです | ResetGM; [stdmsg.hが必要] SysEx=$F0,$7E,$7F,$09,$01,$F7; |
| F0 7E 7F 09 02 F7 | GM System Off | GM以外のモードを持っている音源で モードを戻すときに使用。 通常は使いません。 |
SysEx=$F0,$7E,$7F,$09,$02,$F7; |
以上がGeneral MIDIの仕様です。音色に関しては説明するまでもないと思いますので解説しません。
この音源はマイクロソフト社と、GS音源などで有名なシンセサイザーメーカーのRoland社が提携して開発した音源です。
(Windows95が出た頃にRolandが発売したVSC-55というソフトウェアシンセサイザーが基礎になっていると思われます)
この音源はGM音源ようなGS音源のような微妙な音源です。GM音源を名乗るために必要な命令に一部対応していなかったり、
GS音源に必要なエフェクトやフィルターを搭載していなかったりします^^;
また、オフィシャルなマニュアルが存在しないようです。Windowsのヘルプやマニュアルなどには何も書かれていません。
無い物は仕方ないのでネット上で調べてみました^^;
| 互換性 | GS(音色配列のみ), GM Level1 |
| パート数 | 16 |
| 最大発音数 | 32音くらい? |
| 音色数 | GS: 226音色+9ドラムセット GM: 128音色+1ドラムセット(GS部に内包) |
| フィルター | なし |
| エフェクト | なし |
| コントロール ナンバー |
要素 | 解説 | サクラでのコマンド |
|---|---|---|---|
| 0 | バンクセレクト(MSB) | バンクセレクトのMSB値を設定 | y0,(0〜127) |
| 1 | モジュレーション | 音にビブラート効果を与える | M(0〜127), Modulation(0〜127) |
| 6 | データエントリー(MSB) | RPNデータのMSB値を設定 | DataMSB(0〜127), Y(0〜127) |
| 7 | ボリューム | パート音量の設定 | MainVolume(0〜127), V(0〜127) |
| 10 | パン | 音の定位を設定 | Panpot(0〜127), P(0〜127) |
| 11 | エクスプレッション | ボリューム値を相対変化させる | Expression(0〜127), EP(0〜127) |
| 32 | バンクセレクト(LSB) | バンクセレクトのLSB値を設定 この音源では0で固定です |
y32,0 |
| 38 | データエントリー(LSB) | RPNデータのLSB値を設定 | y38,(0〜127) |
| 64 | ホールド1 | ダンパーのオン(0〜63)、オフ(64〜127)を切り替える | y64,(0〜127), ペダル, 放す |
| 100 | RPN(LSB) | RPNのLSB値を設定 | y100,(0〜127) |
| 101 | RPN(MSB) | RPNのMSB値を設定 | y100,(0〜127) |
| 120 | オールサウンドオフ (非対応) | 発音中の音全てを消音させる | 非対応 |
| 121 | オールリセットコントローラ (非対応) |
コントロールの値を初期値に戻す | 非対応 |
| 123 | オールノートオフ | 発音中の音を消音させる(ダンパー中の物は除く) | y123,0 |
| 124 | オムニオフ (非対応) | 同上 | 非対応 |
| 125 | オムニオン (非対応) | 同上 | 非対応 |
| 126 | MONO | そのパートでの同時発音数を1音に設定 | y126,0 |
| 127 | POLY | MONOモードの解除 | y127,0 |
| RPNナンバー MSB,LSB |
要素 | 説明 | サクラでのコマンド |
|---|---|---|---|
| 0,0 | ピッチベンドセンシティビティー | ピッチベンドで変化する最大値を設定(0〜12(半音)) | PitchBendSensitivity(0〜12), BR(0〜12) [stdmsg.hが必要] RPN(0,0,0〜12) |
| 0,1 | ファインチューン (非対応) | -100〜100centの範囲でピッチを調整する | 非対応 |
| 0,2 | コースチューン (非対応) | -12〜12(半音)の範囲でピッチを調整する | 非対応 |
| 127,127 | RPN Null (非対応) | RPNが何も選択されていない状態にする | 非対応 |
| システムエクスクルーシブ | 要素 | 説明 | サクラでのコマンド |
|---|---|---|---|
| F0 7E 7F 09 01 F7 | GM System On | いわゆるGMリセットです | ResetGM; [stdmsg.hが必要] SysEx=$F0,$7E,$7F,$09,$01,$F7; |
| F0 7F 7F 04 01 7F (00〜7F) F7 | Master Volume | マスターボリュームの設定 | SysEx=$F0,$7F,$7F,$04,$01,$7F,($00〜$7F),$F7; |
| F0 41 10 42 12 40 00 7F 00 41 F7 | GS Mode Set | いわゆるGSリセットです | ResetGS; [stdmsg.hが必要] SysEx=$F0,$41,$10,$42,$12,$40,$00,$7F,$00,$41,$F7; |
| F0 41 1x 15 nn sum F7 | USE FOR RHYTHM PART | ドラムセットを1つ以上使う場合に設定します | GS_RHYTHM(0〜2) [gs.hが必要] |
非対応と書いた物はGM音源として備えていなければならない機能です。ご覧の通りいくつかの命令に対応していません^^;
追加された命令はバンクセレクトとモノ・ポリモードの設定です。
モノモードとは、指定したチャンネルで同時に1音しか発音できないようにする命令です。
管楽器など同時に1音しか出すことのできない楽器に設定したりします。
ポリモードは普通の状態(和音が鳴らせる)と思って貰って構いません。
バンクセレクトはこの音源で追加された音色を使う為の命令です。
バンクセレクトの使い方を説明する前に、この音源の音色を見てみましょう。
|
|
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
以上がこの音源が持つ音色です。背景の色がオレンジの物はこの音源で追加された音色です。
音色ナンバー1のPiano 1を見てみましょう。Piano 1、Piano 1w、Piano 1dと3種類もありますね。
Piano 1wの横を見てみましょう。001,008とあります。
最初の"001"が音色ナンバーです。次の"008"が先ほど書きましたバンクセレクトの値になります。
よって、Piano 1wの音色を使う際には、コントロールチェンジ0のバンクセレクトを使って「y0,8 @1」と書けば良いわけです。
サクラで実際に試してみましょう。しかし、困ったことに音色はそのままでは変化しません。
この音源は何もしない状態ではGM音源モードになっており、バンクセレクトを受け付けません。
そこで、GSモードの機能を使うよ〜と宣言してあげなくてはいけません。宣言する為にはGSリセットを使います。
SysEx=$F0,$41,$10,$42,$12,$40,$00,$7F,$00,$41,$F7;
このようにエクスクルーシブを使いますが、パッと見ただけでは分かり難いので関数を使いましょう。
gs.hをインクルードして、ResetGS;を使えばOKです。
※サクラに現在同梱されているgs.hはバージョンが古いので、こちらの物をサクラのIncludeフォルダに上書き保存してください。
ダウンロードする際はリンクの上で右クリックを押して「対象をファイルに保存」を選んでください。
保存先にサクラのIncludeフォルダを指定して上書き保存すればOKです。
Include(gs.h);
ResetGS; r4 //GSリセット
この命令はMMLのなるべく先頭の方(演奏が始まる前)に書いてください。
なお、この命令には多少の時間が必要ですので4分休符を入れてください。
サンプルとして以下を示します。コピー&ペーストでサクラのエディタに貼り付けて再生してみてください。
Include(gs.h);
ResetGS; r4 //GSリセット
y0,0 @81 c1 //Square Wave
y0,8 @81 c1 //Sine Wave
y0,0 @82 c1 //Saw Wave
y0,8 @82 c1 //Doctor Solo
音色が変わったのがわかったでしょうか?この音源の追加音色はこのようにして使います。
なお、「y0,8 @81」と書くのは面倒なので、サクラではこれらを1つにまとめることができます。
「y0,8 @81」の代わりに「@81,8」と書いてみてください。同じように音色が変化するハズです。
Include(gs.h);
ResetGS; r4 //GSリセット
@5,0 'cfa'1^1 //E.Piano 1
@5,8 'cfa'1^1 //Detuned EP 1
@123,3 c1^1 //Wind
@126,5 c1^1 //Siren
SFXに分類される音色ナンバー121〜128には面白い効果音が追加されていますのでチェックしてみると良いでしょう。
| ノート ナンバー |
1:STANDARD | 9:ROOM | 17:POWER | 25:ELECTRONIC | 26:TR-808 | 33:JAZZ | 41:BRUSH | 49:ORCHESTRA |
|---|---|---|---|---|---|---|---|---|
| 27 | High Q | Closed Hi Hat | ||||||
| 28 | Slap | Pedal Hi Hat | ||||||
| 29 | Scratch Push | Open Hi Hat | ||||||
| 30 | Scratch Pull | Ride Cymbal | ||||||
| 31 | Sticks | |||||||
| 32 | Square Click | |||||||
| 33 | Metronome Click | |||||||
| 34 | Metronome Bell | |||||||
| 35 | Kick Drum 2 | Jazz BD2 | Jazz BD2 | Concert BD2 | ||||
| 36 | Kick Drum 1 | MONDO Kick | Elec BD | 808 Bass Drum | Jazz BD1 | Jazz BD1 | Concert BD1 | |
| 37 | Side Stick | 808 Rim Shot | ||||||
| 38 | Snare Drum 1 | Gated SD | Elec SD | 808 Snare Drum | Brush Tap | Concert SD | ||
| 39 | Hand Clap | Brush Slap | Castanets | |||||
| 40 | Snare Drum 2 | Gated SD | Brush Swirl | Concert SD | ||||
| 41 | Low Tom 2 | Room Low Tom 2 | Room Low Tom 2 | Elec Low Tom 2 | 808 Low Tom 2 | Timpani F | ||
| 42 | Closed Hi Hat | 808 CHH | Timpani F# | |||||
| 43 | Low Tom 1 | Room Low Tom 1 | Room Low Tom1 | Elec Low Tom 1 | 808 Low Tom 1 | Timpani G | ||
| 44 | Pedal Hi Hat | 808 CHH | Timpani G# | |||||
| 45 | Mid Tom 2 | Room Mid Tom 2 | Room Mid Tom 2 | Elec Mid Tom 2 | 808 Mid Tom 2 | Timpani A | ||
| 46 | Open Hi Hat | 808 OHH | Timpani A# | |||||
| 47 | Mid Tom 1 | Room Mid Tom 1 | Room Mid Tom 1 | Elec Mid Tom 1 | 808 Mid Tom 1 | Timpani B | ||
| 48 | High Tom 2 | Room Hi Tom 2 | Room Hi Tom 2 | Elec Hi Tom 2 | 808 Hi Tom 2 | Timpani c | ||
| 49 | Crash Cymbal 1 | 808 Cymbal | Timpani c# | |||||
| 50 | High Tom 1 | Room Hi Tom 1 | Room Hi Tom 1 | Elec Hi Tom 1 | 808 Hi Tom 1 | Timpani d | ||
| 51 | Ride Cymbal 1 | Timpani d# | ||||||
| 52 | Chinese Cymbal | Reverse Cymbal | Timpani e | |||||
| 53 | Ride Bell | Timpani f | ||||||
| 54 | Tambourine | |||||||
| 55 | Splash Cymbal | |||||||
| 56 | Cowbell | 808 Cowbell | ||||||
| 57 | Crash Cymbal 2 | Concert Cymbal 2 | ||||||
| 58 | Vibra Slap | |||||||
| 59 | Ride Cymbal 2 | Concert Cymbal 1 | ||||||
| 60 | High Bongo | |||||||
| 61 | Low Bongo | |||||||
| 62 | Mute High Conga | 808 High Conga | ||||||
| 63 | Open High Conga | 808 Mid Conga | ||||||
| 64 | Low Conga | 808 Low Conga | ||||||
| 65 | High Timbale | |||||||
| 66 | Low Timbale | |||||||
| 67 | High Agogo | |||||||
| 68 | Loe Agogo | |||||||
| 69 | Cabasa | |||||||
| 70 | Maracas | 808 Maracas | ||||||
| 71 | Short Hi Whistle | |||||||
| 72 | Long Low Whistle | |||||||
| 73 | Short Guiro | |||||||
| 74 | Long Guiro | |||||||
| 75 | Claves | 808 Claves | ||||||
| 76 | High Wood Block | |||||||
| 77 | Low Wood Block | |||||||
| 78 | Mute Cuica | |||||||
| 79 | Open Cuica | |||||||
| 70 | Mute Triangle | |||||||
| 81 | Open Triangle | |||||||
| 82 | Shaker | |||||||
| 83 | Jingle Bell | |||||||
| 84 | Bell Tree | |||||||
| 85 | Castanets | |||||||
| 86 | Mute Surdo | |||||||
| 87 | Open Surdo | |||||||
| 88 | --- | Applause | ||||||
※ 空白の欄はSTANDARDと同じ音色です。
| ノート ナンバー |
57:SFX |
|---|---|
| 39 | High Q |
| 40 | Slap |
| 41 | Scratch Push |
| 42 | Scratch Pull |
| 43 | Sticks |
| 44 | Square Click |
| 45 | Metronome Click |
| 46 | Metronome Bell |
| 47 | Guitar Sliding Finger |
| 48 | Guitar Cutting Noise (DOWN) |
| 49 | Guitar Cutting Noise (UP) |
| 50 | String Slap of Double Bass |
| 51 | Fl.Key Click |
| 52 | Laughing |
| 53 | Screaming |
| 54 | Punch |
| 55 | Heart Beat |
| 56 | Footsteps1 |
| 57 | Footsteps2 |
| 58 | Applause |
| 59 | Door Creaking |
| 60 | Door |
| 61 | Scratch |
| 62 | Windchime |
| 63 | Car-Engine |
| 64 | Car-Stop |
| 65 | Car-Pass |
| 66 | Car-Crash |
| 67 | Siren |
| 68 | Train |
| 69 | Jetplane |
| 70 | Helicopter |
| 71 | Starship |
| 72 | Gun Shot |
| 73 | Machine Gun |
| 74 | Lasergun |
| 75 | Explosion |
| 76 | Dog |
| 77 | Horse-Gallop |
| 78 | Birds |
| 79 | Rain |
| 80 | Thunder |
| 81 | Wind |
| 82 | Seashore |
| 83 | Stream |
| 84 | Bubble |
以上がドラムセットの一覧です。GM音源ではドラムセットが1つしか決められていませんでしたが、この音源では9つ持っています。
なお、ドラムセットは音色のようなバンクを持っていませんのでバンクセレクトは使いません。
追加されたドラムセットの音色を簡単に聴いてみましょう。以下をサクラにコピー&ペーストして再生してみてください。
Include(gs.h);
ResetGS; r4 //GSリセット
CH(10)
@1 Sub{o4 c+1 } Sub{o3 [7 f+8] a+8} o3 [2 c4 'cd'4] Sub{o3 [6 f+8] r4 } o3 [2 c4 : 'cd'4] a16 g16 f8 r4
@9 Sub{o4 c+1 } Sub{o3 [7 f+8] a+8} o3 [2 c4 'cd'4] Sub{o3 [6 f+8] r4 } o3 [2 c4 : 'cd'4] a16 g16 f8 r4
@17 Sub{o4 c+1 } Sub{o3 [7 f+8] a+8} o3 [2 c4 'cd'4] Sub{o3 [6 f+8] r4 } o3 [2 c4 : 'cd'4] a16 g16 f8 r4
@25 Sub{o4 c+1 } Sub{o3 [7 f+8] a+8} o3 [2 c4 'cd'4] Sub{o3 [6 f+8] r4 } o3 [2 c4 : 'cd'4] a16 g16 f8 r4
@26 Sub{o4 c+1 } Sub{o3 [7 f+8] a+8} o3 [2 c4 'cd'4] Sub{o3 [6 f+8] r4 } o3 [2 c4 : 'cd'4] a16 g16 f8 r4
@33 Sub{o4 c+1 } Sub{o3 [7 f+8] a+8} o3 [2 c4 'cd'4] Sub{o3 [6 f+8] r4 } o3 [2 c4 : 'cd'4] a16 g16 f8 r4
@41 Sub{o4 c+1 } Sub{o3 [7 f+8] a+8} o3 [2 c4 'ce'4] Sub{o3 [6 f+8] r4 } o3 [2 c4 : 'ce'4] a16 g16 f8 r4
@49 Sub{o4 c+1 } Sub{o3 [7 f+8] a+8} o3 [2 c4 'cd'4] Sub{o3 [6 f+8] r4 } o3 [2 c4 : 'cd'4] a16 g16 f8 r4
次のサンプルではドラムセット全ての音を確認できます。
Include(gs.h);
ResetGS; r4 //GSリセット
Tempo(120) CH(10) r16 V(127) r16 EP(127) r16 q100 h0 l4 v127
Int Num = 27; Int VNum = 1; Str Nt = {n_}; Str Vc = {@_};
[8
Vc = {@_};
Vc.s({_},VNum);
Vc;
Num = 27;
[62
Nt = {n_};
Nt.s({_},Num);
Nt;
Num++;
]
If(VNum==26){
VNum = 33;
}Else{
If(VNum==25){
VNum = 26;
}Else{
VNum = VNum + 8;
}
}
]
@57 l2
Num = 39;
[46
Nt = {n_};
Nt.s({_},Num);
Nt;
Num++;
]
また、この音源ではドラムセットを同時に2つまで使うことができます。
GSリセット同様にエクスクルーシブで設定しますが、解説すると難しくなるので関数でお手軽に済ませてしまいます。
Include(gs.h);
ResetGS; r4 //GSリセット
TR(1) CH(10)
GS_RHYTHM(1) r8 //チャンネル10をドラムマップ1に変更
@25 o3 [2 c4 'cd'4] [2 c4 : 'cd'4] a16 g16 f8
TR(2) CH(11)
GS_RHYTHM(2) r8 //チャンネル11をドラムマップ2に変更
@26 Sub{o4 c+1 } o3 [7 f+8] a+8 [6 f+8] o4 c+1
このように、GS_RHYTHM(値)を使います。この関数の値は0〜2です。
"0"で通常の楽器に、"1"でドラムマップ1つ目、"2"でドラムマップ2つ目を使うことを宣言します。
GSリセット同様に、この命令の後には必ずある程度の休符が必要です。16分休符か8分休符を使うと良いでしょう。
加えて、音色を変更する際は必ずこの関数の後に行ってください。関数の前で音色を指定しても有効になりません。
また、この命令を使うことで全チャンネルをドラムセットにしたり、全チャンネルを楽器にしたりすることもできます。
如何でしたでしょうか?
音色はサクラの音色タブからしか選んだことがないって方が多いのではないでしょうか?
このようにMicrosoft GS Wavetable SW Synthには音色タブに表示されている以外の音色があります。
皆さんもこれらの音色を使いこなしてステップアップしてみてください!
なお、近い内にサクラの音色タブでもこれらの音色が選べるようになる予定です。乞うご期待ください。
最後にMicrosoft GS Wavetable SW Synth用のテンプレートMML(雛型)を置いておきます。
曲を作る際にこれを使ってみてください。