直線上に配置

N88BASIC: MUSIC拡張命令


MS-DOS版N88BASIC(Ver1.0)
PC-9801-14用拡張機能 MUSIC.EXE で使える機能一覧
直線上に配置
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)
直線上に配置

トップ アイコン