ON PLAY GOSUB
ON PLAY([チャンネル番号],[残バイト数]) GOSUB [行番号]
チャンネル番号のサウンドバッファ内の未演奏データが
残バイト数以下になったとき、割込を行う
残バイト数は0 - 32767
スタック領域の扱いに要注意
例 ON PLAY(1,512) GOSUB 100
PLAY (割込)
PLAY [ON/OFF/STOP]
割込の許可・禁止・停止を設定
あらかじめON PLAY GOSUBで割込条件を定義する
ON: 条件を満たすたびに定義した処理ルーチンへ分岐する
OFF: 条件を満たしても処理ルーチンへ分岐しない
STOP: 条件を満たしても処理ルーチンへ分岐しない
ただし割込条件を満たしていた事を記憶しており、
PLAY ONによって割込許可となると処理ルーチンへ分岐する
PLAY (演奏)
PLAY (CH1の演奏データ),(CH2の演奏データ)...
CHxの演奏データ省略可能で、例えばCH3とCH6だけ演奏したい場合、
PLAY ,,"O4CDEF",,,"O5CDEF" みたいに書く。
演奏データのMMLコマンド
Cn, Dn, En, Fn, Gn, An, Bn
音程指定。nにはn分音符といった音長を指定 (n=1-64)
省略時はLnで指定した音長
Ln
Cn, Dn, En, Fn, Gn, An, Bnで
音長を省略した時の音長を指定 (n=1-64)
S<アタック係数>,<ディケイ係数>,<サステインレベル>,
<リリース係数>,<サステイン係数>
エンベロープ。
省略不可で必ず5つの値を都度設定する必要あり。
左CH(3,4,5)と右CH(6,7,8)で独立して制御可能。
音量
255 ╱╲
╱┆ ╲
╱ ┆ ╲
╱ ┆ ╲_______ _______
╱ ┆ ┆ ┆╲ ↑
╱ ┆ ┆ ┆ ╲ サステインレベル
╱ ┆ ┆ ┆ ╲
0 ╱ ┆ ┆ ┆ ╲ ↓
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
┆<-A->┆<D>┆ ┆<R>┆
<-------T------->
A=(255/アタック係数) × 2msec
D=[(255-サステインレベル)/ディケイ係数] × 2msec
R=(サステインレベル/リリース係数) × 2msec
T=[120000/(音数×音長)]×(サステイン係数/255)×2msec
デフォルトは S255,0,255,255,223
On
オクターブ値。n=4-7。
Kn
指定された高さの音を発生。
O4C=1, O7B+=49 の49段階
Rn,Pn
休符 n分休符の要領で音長を指定 (n=1-64)
+/-
半音上げ/半音下げ 例 O6C+8O7E-16
.
符点音符。元の長さの1.5倍長。 例:C8.
^
前後の音長をつなぐ。例えばC8^8=C4
Tn
テンポ (n=32-255), デフォルト120。
MF/MB
PLAYの演奏形態
MF : フォアグラウンド演奏(デフォルト)
MB : バックグラウンド演奏
MFでは演奏終了後に次の命令が実行
MBではデータをバッファに格納後、すぐに次の命令へ移る
PLAY ALLOC
PLAY ALLOC (バッファ指定)
サウンドバッファの確保および初期化
PC-9801-14は8CHまであるため最大8CH分指定する。
省略は0となる。
※バッファ確保にはCLEARを併用する
N88-BASICでは CLEAR ,(BASIC内のメモリ上限+1)で表し、
CLEAR ,&H1E00ではH1E00からメモリの上限まで
サウンドバッファとして使えることを表す。
一方、DOS版N88BASICでは確保するバッファサイズを直接指定する。
例 (DISK-BASIC)
CLEAR ,&H1FDF-(16*8)
PLAY ALLOC 255,255,255,255,255,255,255,255
例 (DOS版N88BASIC)
CLEAR 16*8+32
PLAY ALLOC 255,255,255,255,255,255,255,255
★関数
STATUS PLAY
STATUS PLAY(P)
サウンドバッファの未演奏データのバイト数。
P=1-8:各CHのサウンドバッファ内の未演奏データのバイト数。
P=0:各CHの残バッファの最大値
P=負:各CHの残バッファの最小値
例 PRINT STATUS PLAY(2)
|