基礎講座2

ここからはSMML3の記述の仕方について説明していきます。

コマンド分類
SMML3はいくつかの基本コマンドを組み合わせて曲データを記述することでMA3の全機能を使うことができます。

しかし、基本コマンドだけでMML譜を記述すると実際はとても大変な作業になってしまいます。例えば、「音量を70にしろ」という命令はコントロールチェンジ7を使って、

@7,70

となります。これだけならまだマシですが、「O4CからO5Cにピッチベンドをしろ」という命令は、

@100,0 @101,0 @6,12 @38,0 O4C !0:8191,0:100,3 !0

となります。意味不明ですね(笑)そこで入力を簡単にするためSMML3ではユーザコマンドというものを用意しています。先程の「音量を70にしろ」は

V70

となり、ピッチベンドの方は

Po4C,o5C,3

となり、かーなり短くなりました!このように記述したSMML文は着メロ作成時に基本コマンドの列に内部展開されます。内部展開の意味っていうかニュアンス、憶えてて下さいね!あとでいっぱい出てきます。
んでは、それぞれの基本コマンドをまずは理解してきましょう♪

ノートメッセージ
【記号】N,[A-G]#
【引数】音長式
【解説】ノートメッセージを生成する方法は2つあります。ノートナンバー0〜127を音階としてNコマンドで直接記述する方法、そしてもう一方はOコマンドと基本音階12種(A〜G#)を組み合わせてO-1C〜O9Gとする方法です。前者をドラム音色に使い、後者をノーマル音色に使います。詳細は次項プログラムチェンジを参照してください。

プログラムチェンジ
【記号】I
【引数】0〜255
【解説】指定チャネルへの音色設定をします。ノーマル音色(0〜127)を指定した場合O-1C〜O9Gの128音階で旋律を組む事が出来ます。例えば、チャンネル0にビオラ(ID=41)を音色設定してオクターブ4からドレミファソラシド〜♪と鳴らすには、

0[I41 O4CDEFGABO+C]

という具合ですね。次にドラム音色(152〜212)を使った場合を紹介しましょう。スネアM(ID=166)で、「タンタタタン」と鳴らすには例えば、

0[I166 N4N8N8N4]

という感じになります。Nの後の数字は音長を表します。では、Nコマンド使用の際、ノートナンバーはどこに指定されているのかというとユーザコマンドに$N(環境変数)というものがあります。この値がノートナンバーになります。I166を設定した際、$N=166-128=38が自動設定されています。もちろん任意でノートナンバーを指定する事も可能です。

コントロールチェンジ
【記号】@
【引数】0〜127,0〜127
【解説】音量、音場、音の振るわせ方などMA3の制御に関する設定項目をまとめてコントロールチェンジといいます。コントロールチェンジは、コントロールナンバー(0〜127)で制御したい項目を選択して、次いで設定値(0〜127)を記述します。

例えば、コントロールチェンジ10はパンポット設定を意味します。指定チャネルのパンを右(127)に設定するには、

@10,127

とします。ちなみにパンポットもユーザコマンドがあります。この例では、

P127

と同じ意味です。コントロールチェンジは全部で128種類あるので全て書ききれませんが、基本的な項目だけ別マニュアルで説明します。


基本コマンドのピッチベンドの他にユーザコマンドのピッチベンドがあるので、以下は知識に余裕のある方だけ読んで下さい。ピッチベンドはコントロールチェンジの一種です。
SKIP

ピッチベンド
【記号】!
【引数】-8192〜8191
【初期値】0
【解説】基本は128音階ですが、ピッチベンドを使うとある音程を基準に上下-8192〜8191レベルでピッチを微妙にずらす事ができます。そして、このピッチベンドの変化幅を決定するのがピッチベンドセンス(PitchBend Sensitivity)というコントロールチェンジです。ピッチベンドセンスの初期値は2で、上下最大で±2半音でピッチをずらせることを意味します。例えば、

!8191 F

とすると、Fから2半音上の音、つまりGで発音されます。

!-8192 F

ならば、2半音下の音、つまりD#で発音されます。ピッチベンドセンスの最大値は24で、上下2オクターブのベンドが可能です。ちなみにピッチベンドセンスの設定には、音源へのパラメタ設定=RPN(Registered Parameter Number)というものを使います。ピッチベンドセンスを12(1オクターブ)にする場合、

@100,0
@101,0
@6,12

とします。@100はRPN:MSB, @101はRPN:LSB, @6はRPN Data Entryといい、@100、@101で設定したいパラメタ項目を選択して、@6のデータエントリで実際に値を代入します。


基礎講座3