DPCM{
nnumber,"filename",rate,mode(,volume)(,next)(,offset)(,size)
note(Accidentals)octave,"filename",mode(,volume)(,next)(,offset)(,size)
}
@DPCM{
nnumber,"filename",rate,mode(,volume)(,next)(,offset)(,size)
note(Accidentals)octave,"filename",mode(,volume)(,next)(,offset)(,size)
定義する儕CMの番号を0〜254で指定してください。
儕CMの発音の際は、ノートナンバーの値を参照し、その番号の儕CMを発音します。
note | note number |
---|---|
o1c | 0 |
o1c+ | 1 |
o1d | 2 |
o1d+ | 3 |
o1e | 4 |
o1f | 5 |
o1f+ | 6 |
o1g | 7 |
o1g+ | 8 |
o1a | 9 |
o1a+ | 10 |
o1b | 11 |
o2c | 12 |
・・・ | ・・・ |
儕CMの波形を割り当てる音階を、音階で指定します。
儕CMの波形を割り当てる音階に対する臨時記号です。省略可能です。
儕CMの波形を割り当てるオクターブです。1〜8で指定してください。
割り当てる儕CMの波形ファイル(*.dmc)を指定してください。
発音するサンプリングレートです。
rate | clock | sample rate | scale(*) |
---|---|---|---|
0 | 0x0D60 | 4.182 kHz | o7c |
1 | 0x0BE0 | 4.711 kHz | o7d |
2 | 0x0AA0 | 5.264 kHz | o7e |
3 | 0x0A00 | 5.594 kHz | o7f |
4 | 0x08F0 | 6.259 kHz | o7g |
5 | 0x07F0 | 7.047 kHz | o7a |
6 | 0x0710 | 7.920 kHz | o7b |
7 | 0x06B0 | 8.364 kHz | o8c |
8 | 0x05F0 | 9.421 kHz | o8d |
9 | 0x0500 | 11.188 kHz | o8f |
10 | 0x0470 | 12.606 kHz | o8g |
11 | 0x0400 | 13.984 kHz | o8a |
12 | 0x0350 | 16.877 kHz | o9c |
13 | 0x02A8 | 21.059 kHz | o9e |
14 | 0x0240 | 24.861 kHz | o9g |
15 | 0x01B0 | 33.148 kHz | o10c |
(*) サンプルレート÷2の音程換算。振幅が小さい時に発生するノイズはこの音程になります。)
儕CMの初期ボリュームです。
0〜127の範囲で指定した場合は、波形再生開始時に$4011番地に書く初期ボリュームとなります。
-1を指定した場合は、波形再生開始時に$4011番地に何も書きません。
省略した場合は、0となります。
発音終了時に次にならすノート番号です。
バンクに対応したbin(nsd_all.bin, nsd_all2.bin)でのみ対応しています。
modeが2の場合は、必ず指定してください。
発音開始位置を指定の分だけずらします。
1で64[Byte](512[サンプル])ずれます。
省略した場合は、0となります。
発音サイズを指定します。
0を指定した場合はdmcファイルに合せたサイズで再生されます
(offsetの指定がある場合、その分だけサイズを自動で小さくします)。
1で16[Byte](128[サンプル])に相当します。
省略した場合は、0となります。
指定の各音階に、儕CMを割り当てます。
儕CMを割り当てる場合は、
#OffsetPCMコマンドにて儕CMの波形データの配置アドレスを設定してください。
儕CMは、設定したアドレスから、0xFFFFのメモリ空間に配置されます。
若しくは、#Bankコマンドを記述しバンクに対応したbin(nsd_all.bin, nsd_all2.bin)を使用して下さい。
儕CMにてIRQを使用している場合、&
(スラー)ではなく、^
(タイ)を使ってください。
&
(スラー)を利用して音を繋げた場合、繋げた先のノートナンバーに儕CMの発音中ポインタが設定され、
次のIRQではそのノートナンバーの次に示される儕CMが再生されます。
また、多くのNSFプレイヤーは、IRQに対応しておりません。
以下、2014年 1月 3日時点での対応状況です。
#OffsetPCM $C000
DPCM{
b1, "../dmc/bd.dmc",14,0,64
c2, "../dmc/bd.dmc",15,0,64
d2, "../dmc/sd.dmc",15,0,64
e2, "../dmc/sd.dmc",14,0,64
f+2, "../dmc/hhc.dmc",15,0,64
a+2, "../dmc/hho.dmc",15,0,64
c+3, "../dmc/cymbal.dmc",15,0,64
f2, "../dmc/tom.dmc",10,0,64
g2, "../dmc/tom.dmc",11,0,64
a2, "../dmc/tom.dmc",12,0,64
b2, "../dmc/tom.dmc",13,0,64
c3, "../dmc/tom.dmc",14,0,64
d3, "../dmc/tom.dmc",15,0,64
}