初めに
音楽の書き方はASMより簡単です。よってこのページを読めば誰だってできます。
作曲からする人はいいですが、
ここに来る人はほぼ耳コピをするためでしょう。
とりあえず原曲の音源を用意しましょう。
エミュからSPC音源を取り出せるような曲ならば、そうしましょう。
その場合、ページ下で紹介されている「spcからのリッピング」が楽です。
まあ、これでは耳コピとは言わないが。
そんなものが無いなら、WAVかなんかで。
ここでは、真面目に原曲を聞いて、一音一音打ち込んでいくには
どうしたらよいかを説明します。
一応書いている人はaddmusic誕生当時から音楽作り続けている人なので
ある程度信頼できる情報だとは思います。
addmusicの使い方を理解していることを前提に進めていきます。
準備
音楽をtxtファイル上に書き、
それをツールでROMに入れるわけですから、
まずtxtファイルを用意します。
そして、こう書きましょう。
;タイトル名 #0 ;チャンネル0 #1 ;チャンネル1
「
;
」と書くと、その行の右はメモとなり、命令として扱われません。
便利なので、こうやってタイトル名などを書いておくといいでしょう。
さて、命令として#0、#1と書いたわけですが、これはチャンネルです。
#0
から下にチャンネル0の内容を、
#1
から下にチャンネル1の内容を書いていくことになります。~
ちなみに安定して鳴るチャンネルは、levelでは#0〜#3のみですから、
欠かせない音はこれらのチャンネルで鳴らすようにしましょう。
全体設定
まずは曲全体にかかわる設定をします。
これは、チャンネル0の先頭に書くだけでOKなものです。
下のように設定を書き込んで行きます。
#0 w220 t30 ;チャンネル0
ここではw(全体音量)を220に、t(テンポ)を30に設定しています。
最低限これだけで大丈夫です。
この種の設定をまとめると、
コマンド | 意味 | 備考 |
w● | 全体音量 | ●は0〜255までの数字。 |
t● | テンポ | 同じく。大きいほど速い。 |
$EF $ XX $ YY $ ZZ | エコー有効 |
XX
は、どのchにかけるか。詳細は下で。 YY は、左側のエコーの音量。 ZZ は、右側のエコーの音量。 |
$F1 $ XX $ YY $ ZZ | エコー設定 |
先に$EFが必要。 XX は、ディレイ。 YY は、フィードバック。 ZZ は、FIRフィルタの有無(0か1)。 |
$F0 | エコーOFF |
エコーは明らかに上級の物ですので(大切だけど)
最初は気にする必要はありません。
これらは、初期設定として使うだけでなく、曲の途中で変えることも出来ます。
その場合も、チャンネル0にのみ書き込めばいいです。
$EFのXXについて、もう少し詳しく説明します。
16進数の2ケタの数字、00〜FFは、
2進数に直すと00000000〜11111111の8ケタ。
2進数で右からN番目の位の数字は、
N−1番のチャンネルのエコーの有無に対応します。
つまり、右から順に#0、#1、#2、#3、…一番左は#7のエコーの有無に対応します。
それぞれを0にするとOFF、1でONです。
2進数をパソコン付属の電卓かなんかで16進数に戻してXXに入力しましょう。
基本的には、
強いエコーをかけるなら、ドラムパートだけ避ける
のがセオリーです。
各チャンネルの設定
次に、各チャンネルの初期設定を行います。
当然用意した全チャンネルの頭に書くことになります。
チャンネル0だけは、先ほど書いた全体設定に書き加えることになります。
例
#0 w220 t30 @0 v250 ;チャンネル0 #1 @2 v220 ;チャンネル1
ここでは、@(音色)とv(チャンネル音量)を設定しています。
この種の命令をまとめると、
コマンド | 意味 | 備考 |
@● | 音色 | ●番の音色を使います。 |
v● | ch音量 | 0〜255。大きいほど大音量。 |
q●▲ | ゲートタイム |
●は音の持続性。1〜7で表します。 ▲はこれまた音量で、1〜Fで表します。 |
p●,▲ | ビブラート | 音を揺らします。●が振動数、▲が振幅。 |
y● | LR位置 |
chの左右のバランスです。0〜20で表します。 10を中央として、大きいほど左、小さいほど右から聞こえます。 |
また、音色の表をこちらにも持ってきました。
番号 | コメント |
0 | ローパス気味の方形波(スクエアリード)。Hollow |
1 | ローパス気味のノコギリ波。木管楽器、ストリングスなど |
2 | 鉄琴、オルゴール系。 |
3 | 木琴 |
4 | パルスのようなノコギリ波?(Claviや1/4矩形波を連想)。癖の強い音。金管楽器、弦楽器など |
5 | ピチカートストリングス? |
6 | 6/16矩形波のような音。木管楽器、弦楽器など |
7 | スチールドラム |
8 | フラットレスベースのような音(一部音が出ないので注意) |
9 | ホンキートンクピアノ。減退音 |
10 | 打楽器。o4でマーチングドラム。タカタカってやつ。 |
11 | @1の音色のアタックを強めた音 |
12 | でっていうパーカッション。o5でエコーかけるとクロノのイントロの時計音に。 |
13 | エレピ(電気ピアノ)。ゲームオーバーの音 |
14 | スラップベース。他の使い方もあるかも |
15 | オーケストラヒット |
16 | @13を減退音にした音 |
17 | ディストーションギター。5度の倍音が強い |
18 | @1に若干アタックの癖をつけたもの |
21 | キックベース2。o3でバスドラムとしても使用可能。 |
22 | ペダルハイハット。ツッって音。 |
23 | ハイハット。ツィッって音。 |
24 | スネアみたいな |
25 | スネアみたいな |
26 | 花火 大太鼓 |
27 | メロティックタム。デュンって音。 |
28 | 27のちょい小さい音 |
29 | Power setのスネアみたいな。低音にすればティンパニっぽくなる。 |
30 | ぽ |
音を鳴らす
初期設定が終わったら、いよいよ音を鳴らしましょう。
「音を鳴らす」命令は、アルファベットのaからgです。
「
ドレミファソラシ
」の音は、順に「
cdefgab
」で表します。
それらの右に
+・-
を添えると、それぞれ♯♭になります。
また、
休符はr
で表します。
次に、その右に音の長さを添えます。
N分音符ならNです。
さらに、「
.
」を添えると符点N分音符となります。
つまり、N分音符の1.5倍の長さになるわけです。
使用例を示します。
4分音符のド なら c4
16分音符のソ♯ なら g+16
符点8分休符 なら r8.
音長に関する残りのコマンドを紹介します。
コマンド | 意味 | 備考 |
^ | タイ |
指定した長さだけ音を延ばします。 c8^16^32^64とすると、c8c16c32c64を つなげて鳴らすのと同じ長さになります。 |
{ } | 三連符 | カッコ内の音の長さが2/3になります。 |
オクターブ
一口に「ド」と言っても、
「高いド」とか「低いド」とかがありますね。
これを分けるのが「オクターブ」です。
いわゆる「普通のドレミファソラシ」というのは、
「オクターブ4のドレミファソラシ」です。
その上に、「高いドレミファソラシ」が続きますが、これはオクターブ5。
「低いドレミファソラシ」は、オクターブ3です。
もちろん、音を鳴らす時にはオクターブを指定してやらなければなりません。
コマンド | 意味 |
o● | オクターブを数値指定します。 |
> | オクターブを1上げます。 |
< | オクターブを1下げます。 |
「ドレミファソラシドー」と鳴らすには、
「ドレミファソラシ」がオクターブ4、
「最後の高いド」がオクターブ5であることを考えると、
o4 c8d8e8f8g8a8b8 > c4
これでOKです。
また、音域には限界があり、
「オクターブ1のドからオクターブ6のラ」までしか使えません。
また、音色によっては音域はもっと狭いかもしれません。
曲の終了について
いよいよaddmusicで入れることができる段階まで来ました。
#0 w220 t30 @0 v250 ;チャンネル0 o3 c8d8e8f8g8a8b8 >c4 #1 @2 v220 ;チャンネル1
こう入れてから、ツールでぶち込んで鳴らしてみましょう。
残念ながら、何一つ鳴りません。
これは、注意しておきたいミスの一つです。
「
用意したチャンネルのうち、どれか一つが終わりまで来たら、はじめに戻る
」
というのがルールです。
この場合、始まったとたんにチャンネル1が終わりとなってしまいます。
だから何も鳴らないのです。
これを防ぐために、用意したもののまだ音を置いていないチャンネルには
長い休符を置いておきましょう。これで大丈夫です。
#0 w220 t30 @0 v250 ;チャンネル0 o3 c8d8e8f8g8a8b8 >c4 #1 @2 v220 ;チャンネル1 r1r1r1r1r1r1r1r1
ところで、無設定だと、終了時に最初にループしますが、
単純なループじゃなくて、イントロがある曲は多くあります。
ABCDBCDBCDBCD…という構成の曲です。
Aがイントロ、BCDがループする部分です。
これは「
/
」を使うことで実現できます。
イントロの後にこの記号を置きましょう。
A
/
BCD
と書き込むことで、ABCDBCDBCDとループします。
以上が最低限の知識となります。
これだけで一通り曲は作れるはずです。
ここからはテクニックとなります。
基本テク
基本音長指定
「
l
」を使うと、基本音長を指定できます。
念のため書いておきますが、このlは「小文字のエル」です。
l8と書くと、「以後特に指定の無い限り、音符は8分音符」となります。
例えば、
c4 d8 e8 f8 g8 a8 b8 > c4
は、
l8
c4 defgab > c4
とできます。
最も良く使う音長をlに指定しておけば、
見やすく作りやすくなります。
ただ、サイズの節約とは関係無いようです。
ループ
[ ]n
は、カッコの中をn回繰り返す命令です。
l8 cdefcdefcdefcdefcdefcdefcdefc2
は、
l8
[
cdef
]7
c2
とスッキリ纏めることができ、
ファイルサイズも劇的に小さくなります。
というか、これを使わずに作るとサイズ大きすぎて
使い物になりません。
必ず使いましょう。
ただし、
ループの中にループは使えない
ループ命令自体が少々サイズを喰う
ことに注意しましょう。
つまり、
なるべく大きなカタマリでループを使う
ことを心がけましょう。
[cd]4 とかやっても、大してサイズは減らない上に、
これがあるために、ここを含むさらに大きなループを使えなくなります。
ループ[]←これは6バイト(ループの回数にかかわらず)
一つの音は1バイトなので[cd]4は8バイトとなる([cd]10でも8バイト)
cdcdcdcdは音8個なので8バイトとなります。
ちなみにループ再利用(*1)は一つ4バイトとなります(これも回数にかかわらず)
悪い例をあげると[cd]10aaa*1aaaなんかは2バイト損します。
そして、もう一つ。
*n
は、1つ前に出てきた[ ]をn回繰り返す命令です。
「*」はWikiでは小文字だと見にくいので大文字で書いてますが、
実際は「小文字の*」を使ってください。
例えば、○◇○△という構成を含む曲は多いものです。これを
[
○
]1
◇
*1
△
とすることで、○1つ分浮きます。
@1 v200で「ドレミファソラシド」と鳴らした後に、
@0 v220で「ドレミファソラシド」と鳴らしたい場合は、
@1 v200 [cdefgab>c<]1 @0 v220 *1
このように、普通のループではできないことが*でできます。
ただし、これを使っての音色変えでは、
音ずれのある音色(@2など)と、他の音色をはさむとおかしくなることに気をつけて下さい。
Chip
ver1.21でこの問題は修正されたようです。
Carol氏作のAddmusicを使うと、曲が変な場所でループすることがあります。
これはその曲のループの記述方式に原因があります。
変な場所でループする曲はたいてい「*」の後に数字指定が無いのです。
旧式のものはこれを「*1」とみなしていますが、Carol氏作のものはそうなっていないようです。
なので、変な場所でループする曲を見つけたら「*が怪しい!」と思って間違いないようです。
細かい表現
完成度を上げるのに必要な、重要なコマンドを紹介します。
コマンド | 意味 | 備考 |
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で指定。 |
EGリリース、アタック、チューニングは、
一度書くとその先ずっとに影響します。
使わないときは各命令のXXYYZZを全て00にしたものを
改めて命令して消しましょう。
@0や@1は、かなり単純な音です。
こういった音は、EGやフェードでの音の入り、
ビブラート、エコー等によって別物になります。
例えば、@1は何やら安い音ですが、
@1のハモリを用意して、フェードで入り方を柔らかくしてやると
ストリングスとして使えます。
このように、単品ではへちょい(?)音でも複数のチャンネルで協力して
迫力を出すことができるのです。
ハモリとは「同じ音色で違う音程」をぶつけることですが、
「同じ音程で違う音色」をぶつけるのも、
組み合わせによっては綺麗に音が融合して迫力がでます。
こういったハーモニーを使う場合は、
音量のバランス、各chのLR位置、ビブラート、フェードとかを
試行錯誤してみましょう。
結構化けます。
実は音を打ち込むことよりも、
このような微調整こそが出来を分ける、腕の見せ所なのです。
当然マリオワールド音源に限界はありますが、
「これが限界だな」と諦めない事が何よりも大切です。
コマンドに関してはここを参照してみるといいかもです。
サンプル
ここでは、
標準コマンド L16の使い道 チューニング(ループすると音が少し上がる) []、*の使い方
の使い方が分かります。分かりにくかったら編集お願いします><
初心者向けspcからのリッピング
はじめに
ここでは、初心者向けのspcからmmlへのリッピングを説明します。~spcはエミュレーターを使用し作成して下さい。
-
spcをmmlに変換
SPCtoMML V1000
ここに表示テキスト
-
mmlの編集
mmlが出来てもまだすぐにSMWに挿入できるわけではありません。編集しやすい様にスクリプトを使います。
攻略Wikiの人のページにある[http://mario.ellize.com/g3/mml.cgi tinymmで生成したMMLを見やすくするスクリプト]
そこでmmlを見やすくします。結果をメモ帳にでもコピペして保存してください。拡張子は.txtでいいです。
MMLプレイヤで聞いてみましょう。(個人的にmmlクリップボードプレイヤがいいです。)
SMWで正しく再生させるために[>]と[<]の入れ替えをします。メモ帳内のものを全部入れ替えましょう。軽量化のあとでも構いませんが。
軽量化については上に詳しく書かれているのでそちらを参考にして行いましょう。
mml編集ツール「MML Editor」の使い方
スクリプトが消滅してしまったわけですが、それにとって変わるソフトが「MML Editor」です。
初心者でもかなり簡単にMMLを編集できます。
ダウンロードは[http://bin.smwcentral.net/44457/MML_Editor_V2.1.zip こちら](V2.1)
-
テスト再生(簡易版)
画面上で選択した部分をメロディで奏でてくれます。ちょっと雑ですがw
要はMMLプレイヤの事ね。
-
オクターブを上げる/下げる
その名の通り、全体のオクターブを1上げて(下げて)くれます。「音程が高/低すぎます」のエラーが出た時に試してみると最高にちょうどいい。
-
tinymmバグ修正
"<"と">"を入れ替えます。上記にあるバグの事だね。
-
簡易テンポ変換ツール
midなどに使用されるテンポと、addmusic向けのテンポを相互変換できます。何かと使える。
-
ADSR作成ツール
more.asmを追加するとできる、「ADSR」なるものを簡単に編集できます。
詳しくは[http://vip.rgr.jp/sm4wiki/?cmd=read&page=Lunar%20Magic%2F%E9%9F%B3%E6%A5%BD%E4%B8%8A%E7%B4%9A 音楽上級]を参照のこと。
-
mml書式変換ツール
tinymmで変換したmmlを、Carol氏のaddmusicの書式に自動変換してくれます。
あと、各トラックの先頭に"o4"をつけてくれます。
これであの忌々しい「音程が高/低すぎます」のエラーはほぼ回避されることでしょう。
「基本情報」タブでは、全体設定や各チャンネルの設定をグラフィカルに見ることができます。 編集はできないけどw
エラー解説
addmusicで音楽挿入の際に出るエラーの解説です。
エラー名 | 解説 | 対処法 |
音程が高/低すぎます | エラー名通りの状況です、たぶん一番目にするエラーです | その行でo1とかo6とかあるとよく出ますので、oの数字を増減させたりするといいでしょう |
オクターブの指定が不正です | オクターブ(o)の表記の仕方が違ってます | リッピングするとよくo7とか入ったりするので下げるなりしましょう |
ループ回数の値が不正です | ループ表記が違っています | [ か ] のどちらかを忘れてたり、ループ回数を入れるのを忘れています |
誤った数値指定です(10進数) | ↑のループ回数を入れ忘れると一緒に出るエラーです | ちゃんとループ回数を入れましょう |
ROM名.smc が見つかりません。 | 一生懸命探しましたが見つかりませんでした | ちゃんとaddmusic内にsmcを置きましょう |
あとがき
あと、これは自分が初めてspcから音楽を挿入した方法ですので間違いなどあるかもです。発見したら勝手になおしちゃいましょう。