初めに
音楽に関しては最近色々と開発が行われ、
元祖addmusicではできないこともできるようになってきました。
自由になるにつれ、打ち込みも難しくなるわけですが…
というわけで、通常ありえない曲をガンガン作って
C のド肝を抜いてやりましょう。
目次
復習
とはいえ、元祖addmusicでもできることは案外多かったわけです。
基本的な書き方はLunar Magic/音楽の書き方でやった物として、
細かい表現コマンドをまとめてみました。
補足
XX時間かけて…という表現が出てきますが、
『16進数で言う$30が、4分音符の長さ』だと覚えておきましょう。
前回載せた物
コマンド | 意味 | 備考 |
$EF $ XX $ YY $ ZZ | エコー有効 |
XX
は、どのchにかけるか。 YY は、左側のエコーの音量。 ZZ は、右側のエコーの音量。 |
$F1 $ XX $ YY $ ZZ | エコー設定 |
先に$EFが必要。 XX は、ディレイ。 YY は、フィードバック。 ZZ は、FIRフィルタの有無(0か1)。 |
$F0 | エコーOFF | |
v● $E8 $ XX $ YY | 音量フェード | XX 時間かけて、音量を●から YY に滑らかに変化。 |
$EB $ XX $ YY $ ZZ | EGリリース |
XX
時間後に、
YY
時間かけて 音程が$ ZZ だけ滑らかに変化。 |
$EC $ XX $ YY $ ZZ | EGアタック |
XX
時間後に、
YY
時間かけて 音程が$ ZZ ズレているのを戻す。 |
$EE $ XX | チューニング |
この先の全音符の音程をわずかに上昇。 100で半音。0〜FFで指定。 |
前回載せてない物
コマンド | 意味 | 備考 |
$DC $ XX $ YY | LR位置フェード |
yのフェードバージョンです。 XX 時間掛けてLR位置を YY にまで持っていきます。 yでは10進数(0〜20)でしたが、ここでは16進数(0〜14)に直して下さい。 |
$E3 $ XX $ YY | テンポフェード |
tのフェードバージョンです。 XX 時間掛けてテンポを YY にまで持っていきます。 tでは10進数でしたが、ここでは16進数に直して下さい。 |
$EA $ XX | ビブラート微調整 |
ビブラート周期を XX に変えてから、あらかじめpで指定した 本来の周期に戻して行きます。 |
DDコマンド
コマンド | 意味 | 備考 |
$DD $ XX $ YY $ ZZ | 音程スライド |
直前の音or休符orタイに突入してから
XX
時間後に、 YY 時間かけて音程を$ ZZ にまで持っていく。 |
音程を滑らかに変えるコマンドには$EBや$ECがありましたが、
あれは
効果音によって消えてしまう
という致命的欠点があるので、
一般的にはこちらが使われます。
しかし面倒なのはこの$ZZです。
音程を数値指定しなければならないので、
ちょっと説明します。
まずは下の対応表を見てください。
bgm.txtからの引用 ;C # D # E F # G # A # B ;----------------------------------- o1 ;80 81 82 83 84 85 86 87 88 89 8A 8B o2 ;8C 8D 8E 8F 90 91 92 93 94 95 96 97 o3 ;98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 o4 ;A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF o5 ;B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB o6 ;BC BD BE BF C0 C1 C2 C3 C4 C5
例えばo4のeなら、A8となります。
しかしこのままだと一部の音色にズレがあるので、
以下の表に従って計算してズレを直して下さい。
@2 | -5 |
@9 | +5 |
@15 | -8 |
表に無い音色はそのままでOK。
あと、このコマンドとタイを使うことで
スラーを再現できます。
例えば@1 o4 c8d8e8f8g4 の音と音を滑らかにつなぐには、
o4
c8
^8 $DD $00 $01 $A6 ;滑らかにd8へつなぐ
^8 $DD $00 $01 $A8 ;e8へ
^8 $DD $00 $01 $A9 ;f8へ
^4 $DD $00 $01 $AB ;g4へ
とすればいいです。
小ワザ
上記のように指定が面倒な$ZZ、実はちょっとしたテクを使うとわざわざ直接数値を指定する必要がなくなったりしちゃいます。
$ZZの部分を、その前に発音する音と同じ長さにそろえ、音程だけ変えたものを置いてやると、あら不思議!変換されるときちんと滑らかにつないでくれます。
※ただし、この方法はaddmusicの変換仕様を利用したものなので、addmusicのバージョンによりできなかったりする場合があるかもしれません。
具体的に、上の例をこの表記法で書き直すと、
o4
c8
^8 $DD $00 $01 d8 ;滑らかにd8へつなぐ
^8 $DD $00 $01 e8 ;e8へ
^8 $DD $00 $01 f8 ;f8へ
^4 $DD $00 $01 g4 ;g4へ
と、このようになります。
"$DD $00 $01"の部分をCarol氏のaddmusicのマクロ機能で適当な文字に置き換えてやると更にスッキリします。
"%S= $DD $00 $01 " ;置換マクロ定義
o4
c8
^8 %S d8 ;滑らかにd8へつなぐ
^8 %S e8 ;e8へ
^8 %S f8 ;f8へ
^4 %S g4 ;g4へ
この方式で注意すべきは、$ZZに代わって置いたd8やe8は、実際にそれ単音で鳴るわけではない、ということです。
あくまでも$ZZの代わりのダミーのノートです。
Carol氏のaddmusicでの追加機能
readme読めば済む話なので軽く流します。
コマンド | 意味 | 備考 |
;title=曲名 | 曲名指定 | これに従ってmscファイルが生成されます |
=数字 | 音長直接指定 | 1分音符の長さを192として、数値指定します。10進数 |
"G=「内容」" | コマンド定義 |
以後、Gというコマンドで「内容」を呼び出せるようになります。 H以降の大文字アルファベットも同様に定義できます。 A〜Fは16進数でも使われてるので避けるべきです。 ただしこれは、mmlをスッキリさせるための物であり、 サイズ節約とは関係ありません。 |
最も重要なのは、ラベルループです。
例えば、(1)[cdefgab>c<]2 としておけば、
以後(1)数字とするだけで
cdefgab>c<を呼び出すことができます。
数字は繰り返し回数です。
呼び出す側は定義側より後に来なければなりません。(mml上で)
しかしそれさえ満たせば、チャンネルをまたいでもOKです。
例えば#0で定義したループを#1や#2で用いることだってできます。
MORE.bin SDXについて
これはSMWのサウンドドライバを改造するものです。
通常@20以降の打楽器を鳴らしている間に効果音が鳴ると、
次の音色変更まで音が消えてしまいます。
そのへんが解決されます。
ほか、新たにいくつかのコマンドが使えるようになります。
挿入の注意点
MORE.binは「サウンドドライバの追加プログラム」
MORE.asmは「ゲーム開始時にMORE.binの内容をサウンドドライバに適用するための65c816」
となっており別物です。
わかりにくくてすみません。
やることはMORE.asmとMORE.binを同じ階層に置いておき、
MORE.asmをxkasで挿入するだけです。
このときMORE.binも勝手に挿入されます。
もし上手く行かないなら、以下の点を確認してください。
- Romi氏のaddmusicを使ってないか?(音色がへんになる)
- 昔の$00 $00 $00 $05がついていない方のMORE.asmを使ってないか?(起動しない)
- more.asmと同じディレクトリにbinの方も置いてあるか?(挿入キャンセル)
- more.asmで!Loc1 !Loc2 !Loc3を設定し忘れていないか?(起動しない)
ADSRと波形
今まで音色音色と言ってきましたが、
音色は波形とADSRで決まります。
ADSRとは音の入り方、響き方の設定です。
例えば@1と@11と@18は同じ波形を使っていますが、
ADSRが違うために少し違った聞こえ方をしています。
通常@で音色を指定するとき、
あらかじめ決められた波形とADSRのセットが読み込まれます。
よって波形とADSRを自由に決めるには新たなコマンドが必要です。
波形指定
コマンド | 意味 |
$E5 $ XX $ YY | 波形番号直接指定 |
XX
に、使いたい波形番号+$80の値を代入し、
YY
に、音程のズレを代入。
@では決められた「波形番号とADSRのセット」が呼び出されますが、
こちらでは波形番号を直に指定することができます。
とはいえ、後でやる波形追加をやらないならば不要です。
なぜなら、既存の波形を使うときは、@で波形を選び
その後ADSRだけ変えればいいからです。
しかし@では12番の波形までしか指定できないので、
13番以降に波形を追加したときにはコイツが必要となるわけです。
新しい波形では、cできちんとドの音が鳴る保障がありません。
だから
YY
の数を弄って調整する必要があります。
ADSR指定
コマンド | 意味 |
$ED $ XX $ YY | ADSR直接指定 |
まずは下の図を見てください。
たいていの楽器を録音してみると、上のように
はじめに鋭く音が鳴り、その後スーと引いていきます。
ADSRを指定すれば、こういった形状を勝手に再現してくれます。
①は鳴りはじめから最大音量に行くまでの時間です。(赤)
その後一気に音量を下げることで鋭さを表現します。(青)
このとき下げるのにかける時間を②で指定し、
どこまで下げるかを③で指定します。
その後は音をゆっくり引いていきます。(緑)
最大音量の1/10になるまでにかける時間を④で指定します。
コマンドの$
XX
で①と②を指定します。
コマンドの$
YY
で③と④を指定します。
その前に、下の表(sndtech.txtのコピペ)を見てみましょう。
ADSRパラメータ ┌―─┬───―――――──┐┌─―┬───―――――──┐┌─―┬─────―――――┐ │①│0→max ││②│max→③ ││④│1→t/10 │ │ │ の時間││ │ の時間 ││ │ の時間 │ ├―─┼───――――――─┤├─―┼─────―――――┤├─―┼────―――――─┼─―┬───―――――──┐ │ O│4.1 sec. ││ 0│1.2 sec. ││ 0│ ∞ SEC. │10│1.2 sec. │ │ 1│2.6 ││ 1│740 msec. ││ 1│ 38 │11│880 msec. │ │ 2│1.5 ││ 2│440 ││ 2│ 28 │12│740 │ │ 3│1.0 ││ 3│290 ││ 3│ 24 │13│590 │ │ 4│640 msec. ││ 4│180 ││ 4│ 19 │14│440 │ │ 5│380 ││ 5│110 ││ 5│ 14 │15│370 │ │ 6│260 ││ 6│ 74 ││ 6│ 12 │16│290 │ │ 7│160 ││ 7│ 37 ││ 7│9.4 │17│220 │ │ 8│ 96 │└─―┴───―――――──┘│ 8│7.1 │18│180 │ │ 9│ 64 │┌─―┬─――─┐ │ 9│5.9 │19│150 │ │ A│ 40 ││③│ 比 │ │ A│4.7 │1A│110 │ │ B│ 24 │├―─┼─――─┤ │ B│3.5 │1B│ 92 │ │ C│ 16 ││ O│1/8 │ │ C│2.9 │1C│ 74 │ │ D│ 10 ││ 1│2/8 │ │ D│2.4 │1D│ 55 │ │ E│ 6 ││ 2│3/8 │ │ E│1.8 │1E│ 37 │ │ F│ 0 ││ 3│4/8 │ │ F│1.5 │1F│ 18 │ └─┴───――――――──┘│ 4│5/8 │ └─―┴──―――――───┴─―┴───―――――──┘ │ 5│6/8 │ │ 6│7/8 │ │ 7│ 1 │ └─―┴─―――┘ 注)sec.とはsecond、つまり「秒」のことです。 msec.とはミリ秒、つまり「0.001秒」のことです。
例えば、①の長さを0.38秒(380msec)にしたいなら、
表より①=5となります。
$
XX
には、②の10倍に①を足したものを代入します。
たとえば、①=E、②=6としたいならば、$
XX
を6Eとすればいいのです。
(6x10=60 → 60+E=6E)
$
YY
には、③の20倍に④を足したものを代入します。
たとえば、③=5、④=1Dとしたいならば、$
YY
をBDとすればいいのです。
(5x2=A → Ax10=A0 → A0+1D=BD)
-
MML Editorを使ってのADSR指定
このソフトにある「ADSR作成ツール」を使うと、上記の作業をすべて自動でやってくれます。これはすごい。
ダウンロードはこちら(V2.1)
-
まず、ツールからADSR作成ツールを起動します。
するとこんな画面が出てきます。
オレンジ色の長さというのは、上でいう①のことで、
②が紫色、③が灰色の点線、④が水色です。
-
4つ並んでいるコンボボックスに、それぞれの数値をミリ秒単位で選択します。
+選択したら、「時間→コマンド」ボタンをクリックします。すると、上のグラフが先ほど選択した数値に変化したのがわかります。そして、右下にある小さいテキストボックスに、EDコマンドが自動入力されます。
逆に、EDコマンドをグラフや数値にすることも可能です。
その場合は、テキストボックスにEDコマンドをコピペして、「コマンド→時間」をクリックします。
すると、そのコマンドのグラフが上に表示されます。
波形追加ツールSMWSについて
SMWSとは、偉大なるsmkdan氏が開発した波形追加ツールです。
ダウンロードはこちら
概要
音関連を担当するARAMは大きく分けて、
・プログラム
・曲データ
・波形データ
から構成されています。
SMWでは、起動間もなくプログラムと波形データがARAMに送り込まれますが、
これらはその後書き換えられることはありません。
ゲーム全体を通して、ひとつの波形セットを使っているのです。
しかし他のゲームでは曲ごとに異なる波形セットを使っていたりします。
これを実現するのがSMWSです。
Level毎に別々の音色セットを使うことができるようになります。
導入
あらかじめSMWSを適用するROMをバイナリエディタで開き、
$400バイト程度の空きスペースを探し、スタート地点のPCアドレスをメモしておきます。
SMWS.exeを起動し、File→Openで導入の済んでいないROMを読み込むと、
メインコードを挿入する場所を聞かれます。
ここにさっきメモしておいたアドレスを入れましょう。
また、ここで物凄く分かりやすい説明がなされております。