Skip to content

How to create SPC

boldowa edited this page Dec 2, 2016 · 3 revisions

SPCファイルの作成手順

SuperCを用いたSPCファイルの作成手順を示します。

  1. 曲で使用するbrrファイルの作成
  2. mmlファイルの作成
    1. 音色設定の定義
    2. mmlの記述
  3. コンパイル

1. 曲で使用するbrrファイルの作成

SuperCは、デフォルトの状態ではPCM波形は1種類しか持ち合わせていません。
その為、曲で使用するPCM音源をBRRデータとして作成しましょう。

BRRデータの作成に関しては、こちらのSNESBRRの使用を推奨します。
-hオプションを付与してBRRエンコードすることで、mmlcで読み込み可能なBRRファイルが生成できます。

他にもBRRファイルの作成の手段はありますが、現状ではこれが最も単純なBRR作成方法だと思います。
また、C700を使用して、AddmusicM用のBRRの作成を行うという方法でもmmlcで読み込めるBRRファイルが生成可能です。
詳細手順は、私は知りません。

また、「○○のゲーム音楽風」のSPCを作成したい場合、
該当ゲームからBRRファイルを抽出する必要がありますが、 ここでは多くについて触れません。

2. mmlファイルの作成

brrファイルの作成が完了したら、今度は曲データをmmlで作成します。

2-1. 音色設定の定義

まず最初に、音色設定を記述します。
ここでは、ピッチの補正値、および音色の鳴らし方についての定義をします。

ここでいう音の鳴らし方とは、音量の増幅・減退時間の設定を指します。
この設定を変更することにより、

  • だんだん音量の大きくなるストリングス
  • 発音後すぐに音量が小さくなるストリングス
  • 音量が最初から最後まで平均的なストリングス

を、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

2-2. mmlの記述

音色の設定を書いたら、今度はmmlを記述していきましょう。

SuperC独自の文法もありますが、そこまでクセのある文法ではないと思いますので、慣れればそこまで苦労しないと思います。

使用できるコマンドについては、別途解説ページを作成いたしますので、そちらをご覧ください。

では、ここでは一例として、簡単なmmlの一例を示します。

hello.zip(mml + brr / 1KB)

また、この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オクターブ下降させます。

3. コンパイル

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の修正・コンパイルを試してみてください。