-
Notifications
You must be signed in to change notification settings - Fork 3
How to create SPC
SuperCを用いたSPCファイルの作成手順を示します。
- 曲で使用するbrrファイルの作成
- mmlファイルの作成
- 音色設定の定義
- mmlの記述
- コンパイル
SuperCは、デフォルトの状態ではPCM波形は1種類しか持ち合わせていません。
その為、曲で使用するPCM音源をBRRデータとして作成しましょう。
BRRデータの作成に関しては、こちらのSNESBRRの使用を推奨します。
-hオプションを付与してBRRエンコードすることで、mmlcで読み込み可能なBRRファイルが生成できます。
他にもBRRファイルの作成の手段はありますが、現状ではこれが最も単純なBRR作成方法だと思います。
また、C700を使用して、AddmusicM用のBRRの作成を行うという方法でもmmlcで読み込めるBRRファイルが生成可能です。
詳細手順は、私は知りません。
また、「○○のゲーム音楽風」のSPCを作成したい場合、
該当ゲームからBRRファイルを抽出する必要がありますが、
ここでは多くについて触れません。
brrファイルの作成が完了したら、今度は曲データをmmlで作成します。
まず最初に、音色設定を記述します。
ここでは、ピッチの補正値、および音色の鳴らし方についての定義をします。
ここでいう音の鳴らし方とは、音量の増幅・減退時間の設定を指します。
この設定を変更することにより、
- だんだん音量の大きくなるストリングス
- 発音後すぐに音量が小さくなるストリングス
- 音量が最初から最後まで平均的なストリングス
を、1つの波形で表現することができます。
設定には、ADSRモード、およびGAINモードの指定があります。
GAINモードについては、正直あまり使用頻度は高くないと思うので、ここではADSRモードの設定値のみを示します。
#tone p1, p2, p3, p4, p5, p6, p7, p8, p9, p10
※注意 : 行頭で記述しないとコンパイルエラーとなります。
音色は、SuperC v0.75(2016/11/8)現在、最大64個まで定義できます。
定義した音色は、定義した順に、@0, @1, @2 ... と割り当てられます。
パラメータ | 設定内容 |
---|---|
p1 | BRRファイル名を指定します。BRRファイル名は、**"**で囲みます。 mmlファイルからの相対位置での指定となります。ちなみに、ファイル名以外にも音色の指定方法がありますが、それはここでは触れません。(コマンドの解説をご覧ください) |
p2 | ピッチ倍率を指定します。1を基点として、2で2倍、3で3倍ピッチが高くなります。0 ~ 255 の範囲で指定ができますが、あまりにも大きな値を指定すると、音源チップの制約上、正しいピッチで鳴らなくなります。 |
p3 | チューニングの設定を行います。0を基点として、1を指定すると半音音が高く(c が **c+**に)なります。-128 ~ 127 の範囲で指定します。 |
p4 | デチューンの設定を行います。0を基点として、ピッチをわずかに上下させることができます。-128 ~ 127 の範囲で指定します。 |
p5 | 音色設定をADSRモードの設定とするか、GAINモードの設定とするかを選択します。ADSRモードは 1 固定です。 |
p6 | 音色のAttak Rate(音の発音開始から最大音量に到達するまでの時間)を設定します。 |
p7 | 音色のDecay Rate(音色が最大音量に達した後、Sustain Level(後述)に達するまでの時間)を設定します。 |
p8 | 音色のSustain Level(Decayによる減退後の音量レベル)を設定します。 |
p9 | 音色のSustain Rate(Sustain Levelから減退していく音色の速度)を設定します。 |
p10 | 音色のRelease Rate(Gate消化後の音の減退速度)を設定します。Gate値はqコマンドで指定します。 |
#tone "smpl/lead_gtr.brr",5,0,0,1,15,2,5,8,20
上で定義した音色は、mml中、**@**コマンドで指定することができます。
以下に例を示します。
#tone "smpl/vah.brr", 3,0,0,1,9, 7,7,5, 16 // @0
#tone "smpl/elpi.brr", 5,0,0,1,15,7,7,16,28 // @1
#tone "smpl/lead.brr", 5,0,0,1,15,7,7,0, 18 // @2
#track 1
V192 v128 t160
@0 c4cd4e2
@1 c4d4e2
@2 c4d4e2
音色の設定を書いたら、今度はmmlを記述していきましょう。
SuperC独自の文法もありますが、そこまでクセのある文法ではないと思いますので、慣れればそこまで苦労しないと思います。
使用できるコマンドについては、別途解説ページを作成いたしますので、そちらをご覧ください。
では、ここでは一例として、簡単なmmlの一例を示します。
また、このmmlで使用されているコマンドを以下に示します。
コマンド | 内容 |
---|---|
#tone | 音色を定義します。詳細は上で説明済みの為割愛。 |
#track | mmlのトラックを指定します。v0.75現在、1~12のトラックが指定できます。各トラックは、若いトラックから順に、SPCのチャンネル0~7に割り振られます。 |
V | 全体音量のレベルを指定します。0~255の範囲で指定できます。 |
v | トラックの音量レベルを指定します。0~255の範囲で指定できます。 |
t | bpmを指定します。600くらいまで指定できます。 |
@ | 使用する音色を指定します。v0.75現在、0~63の範囲で指定できます。 |
p | パンポットを指定します。0~63の範囲で指定できます。 |
l | 音の長さを省略したときの、デフォルトの音の長さを指定します。l4 ccc は、c4c4c4に展開されます。 |
o | 音符のオクターブを指定します。0~6の範囲で指定できます。 |
q | ゲートタイムの割合レベルを指定します。1~8で指定します。 |
k | ベロシティレベルを指定します。1~16で指定します。 |
c,d,e,f,g,a,b | 音符です。cから順に ド,レ,ミ,ファ,ソ,ラ,シ となります。 |
^ | タイです。たとえば、c4^4 と書くと、c2と同じなり方となります。 |
r | 休符です。 |
> | 次の音符指定のオクターブを1オクターブ上昇させます。 |
< | 次の音符指定のオクターブを1オクターブ下降させます。 |
mmlファイルを記述したら、今度はそれをコンパイルしてみましょう。
コンパイルには、mmlcという専用のmmlコンパイラと、spccore.binというSuperCのSPCドライバプログラムが必要となります。
どちらも同じディレクトリに格納してください。
そうしましたら、コマンドライン上で以下のように打ち込んでください。
mmlc mmlファイル名 出力したいSPCファイル名
2-2. で示したmmlをコンパイルしたい場合は、以下のようになります。
mmlc hello.mml hello.spc
エラーメッセージが出力されずに、以下のようなメッセージが出力されれば、コンパイル成功となります。
Complete. Compiled in 0.007 seconds.
エラーメッセージが出力された場合は、メッセージを参考にmmlを修正し、再度コンパイルしてみてください。
例えば、
[ERROR] 2016/11/08 20:55:48.643 hello\hello.mml(line=6, col=20): Unknown character(h : 0x68).
と出力された場合、6行目 に h という文字列が紛れ込んでいるため、それを取り除いてください。
出力されたSPCを試聴して、満足いくまでmmlの修正・コンパイルを試してみてください。