0~255
SBVOLUME 128
0~255: 音量
V=SBVOLUME()
0~255
VOLUME 128
0~255: 音量
V=VOLUME()
鳴らす音の種類: 0~5 省略時: 1
| 0 | Beep | 単純なビープ音 | 
| 1 | Square | エラー音 | 
| 2 | Button-correct | 決定音 | 
| 3 | Button-incorrect | キャンセル音 | 
| 4 | Put | カーソル音 | 
| 5 | Button-Start | スタート音 | 
再生する音量: 0~255 省略時: 128
BEEP 3
値を設定するレジスタの番号: 0~255
設定する値: 0~255
SOUND 15,240
設定値を読み出すレジスタの番号: 0~255
現在の設定値: 0~255
V=SOUND(12)
8チャンネル同時発声可能な波形メモリ音源です。
レジスタの割り当ては以下の通りです。
| レジスタ番号 | Ch. | 
| 0x00-0x07 | Ch.0 | 
| 0x08-0x0F | Ch.1 | 
| 0x10-0x17 | Ch.2 | 
| 0x18-0x1F | Ch.3 | 
| 0x20-0x27 | Ch.4 | 
| 0x28-0x2F | Ch.5 | 
| 0x30-0x37 | Ch.6 | 
| 0x38-0x3F | Ch.7 | 
| 0x40-0x7F | (Reserved) | 
| オフセット | 機能 | 
| +0 | Freq0/FreqSet | 
| +1 | Freq1 | 
| +2 | Freq2 | 
| +3 | Freq3 | 
| +4 | Volume | 
| +5 | WaveSel | 
| +6 | (Reserved) | 
| +7 | PhaseReset | 
レジスタFreq3~Freq0に書き込む32ビット値 R は、以下の式で求めます。
 R = 5592.4 * f(Hz)
Freq3: 周波数設定の31-24ビット目。Freq0に書き込むまで発音に反映されません。
Freq2: 周波数設定の23-16ビット目。Freq0に書き込むまで発音に反映されません。
Freq1: 周波数設定の15-8ビット目。Freq0に書き込むまで発音に反映されません。
Freq0: 周波数設定の7-0ビット目。このレジスタに書き込んだ時点でFreq3~Freq0に設定した値が発音に反映されます。
Volume: 音量です。(0~255)
WaveSel: 波形を選択します。(0-7)
PhaseReset: 書き込むと位相がリセットされます。(値はなんでもよい)
| レジスタ番号 | 波形番号 | 
| 0x80-0x8F | Wave0 | 
| 0x90-0x9F | Wave1 | 
| 0xA0-0xAF | Wave2 | 
| 0xB0-0xBF | Wave3 | 
| 0xC0-0xCF | Wave4 | 
| 0xD0-0xDF | Wave5 | 
| 0xE0-0xEF | Wave6 | 
| 0xF0-0xFF | Wave7 | 
起動直後はWave0~7全てに矩形波が設定されています。
1つの波形は32サンプルです。(16バイト)
1サンプルは4ビットリニアです。(2の補数表現)
0b1000(-8)~0b0000(0)~0b0111(7)
1バイトの下位4ビット→上位4ビットの順で再生されます。
以下にサンプルプログラムを示します。
C=69 E=C+4 G=C+7 vol 0,0:vol 1,0:vol 2,0 freq 0,note(C):vol 0,255 wait 45 freq 0,note(E):vol 0,255 wait 45 freq 0,note(G):vol 0,255 wait 45 vol 0,0 wait 60 freq 0,note(C):vol 0,255 freq 1,note(E):vol 1,255 freq 2,note(G):vol 2,255 wait 90 vol 0,0:vol 1,0:vol 2,0 end def note(no) return 440.0*pow(2.0,(no-69)/12.0) end def freq ch,f R%=5592.4*f sound ch*8+3,(R%>>24) and 255 sound ch*8+2,(R%>>16) and 255 sound ch*8+1,(R%>> 8) and 255 sound ch*8+0,R% and 255 end def vol ch,v sound ch*8+4,v end