SmileBASIC 4.4.8
リファレンスマニュアル
更新日 2023/12/07
目次
- 命令概要(基本命令)
- 命令概要(表示命令)
- 命令概要(入力、サウンド、その他)
- ダイレクトモード専用命令
- 変数や配列の定義、操作に関する命令
- 制御命令
- 数学関連
- 文字列操作
- その他
- 各種入力
- 各種入力(Toy-Con)
- ファイル
- スクリーン制御
- テキストスクリーン入出力
- グラフィック
- スプライト
- レイヤー
- サウンド
- 高度な演算
- ソースコード操作
- サブプログラム
更新日 2023/12/07
鳴らす音の種類
効果音番号 | 説明 |
---|---|
0~156 | プリセット音 |
224~255 | ユーザ波形 |
256~383 | BGM音源 |
・省略時は0。
音程の値: -32768~32767 (100で半音)
・省略時は0。
再生する音量: 0~127
・省略時は64。
パンポット: 0(左)~64(中央)~127(右)
・省略時は64。
BEEP 3
鳴らす音の種類
効果音番号 | 説明 |
---|---|
0~156 | プリセット音 |
224~255 | ユーザ波形 |
256~383 | BGM音源 |
・省略時は0。
音程の値: -32768~32767 (100で半音)
・省略時は0。
再生する音量: 0~127
・省略時は64。
パンポット: 0(左)~64(中央)~127(右)
・省略時は64。
発音後の停止・音量・ピッチ・パンポットを操作するためのハンドル:0~15
H=BEEP(152)
BEEP命令を実行して取得したハンドル
変化させるパンポットの値:0(左)~64(中央)~127(右)
H=BEEP(152) WAIT 60 BEEPPAN H,0
BEEP命令を実行して取得したハンドル
変化させる音程の値:-32768~32767
・100で半音。
H=BEEP(152) WAIT 60 BEEPPIT H,1200
BEEP命令を実行して取得したハンドル
・省略時は全効果音を停止する。
秒で指定する
・実数での指定が可能。
・0で即時停止する。
・省略時は0。
BEEPSTOP H=BEEP(152) WAIT 60 BEEPSTOP H
BEEP命令を実行して取得したハンドル
変化させる音量の値: 0~127
H=BEEP(152) WAIT 60 BEEPVOL H,16
曲番号:128~255
・省略時はすべての定義を消去する。
BGMCLEAR
・一時停止にはBGMPAUSEを利用。
再生するトラック番号:0~15
・省略時は全トラックを再開させる。
秒で指定する
・実数での指定が可能。
・0で即時再開する。
・省略時は0。
BGMCONT
対象のトラック番号: 0~15
・省略時は全トラックが対象。
変化させる音程の値:-32768~32767
・100で半音。
BGMPITCH 0,100
再生するトラック番号:0~15
・省略時は0。
・プリセット音源(0~73)。
・ユーザー定義(128~255)。
・再生する音量:0~127。
・フェードインする時間: 0~32767 秒。
BGMPLAY 128
・MMLによる再生はトラック0で行われる。
・ユーザー定義曲番号255がMMLによる曲に書き換わる。
コマンドの文字列
BGMPLAY "T120O4L4CC8D8EE8F8GA8G8E2"
・再開にはBGMCONTを利用する。
再生するトラック番号:0~15
・省略時は全トラック停止させる。
秒で指定する
・実数での指定が可能。
・0で即時停止。
・省略時は0。
BGMPAUSE
・定義した音楽はBGMPLAYで再生可能。
ユーザ定義曲番号:128~255
コマンドの文字列
BGMSET 128,"CDEFG"
・定義した音楽はBGMPLAYで再生可能。
・DATA命令を利用してMMLを内部に登録(DATA "CDEFGAB")。
・DATAの終端には数値の0を定義しておくこと。
ユーザー定義曲番号:128~255
DATAでMML文字列が登録されたラベルまたはラベル文字列
BGMSETD 128,"@MMLTOP"
対象のトラック番号:0~15
・省略時は全トラック停止する。
秒で指定する
・実数での指定が可能。
・0で即時停止。
・省略時は0。
BGMSTOP
トラック番号:0~15
値を設定・取得する変数の番号:0~7
取得した変数の値
BGMVAR 0,1,2 V=BGMVAR(0,1)
再生するトラック番号:0~15
・省略時は0。
設定する音量:0~127
BGMVOL 0,64
・エフェクタがOFFの時は音量が変化する。エフェクタをONにして使用のこと。
設定するトラック番号:0~15
・省略時は0。
設定するエフェクタ効果量:0(ドライ)~127(ウェット)
BGMWET 0,64
0 | #EFCOFF | OFF |
1 | #EFCON | ON |
0: OFF
1: ON
EFCEN 0 S=EFCEN()
0 | #EFCOFF | OFF |
1 | #EFCBATH | 風呂 |
2 | #EFCCAVE | 洞窟 |
3 | #EFCSPACE | 宇宙 |
EFCSET #EFCSPACE
0 | #EFCREFSROOM | 小さい部屋 |
1 | #EFCREFLROOM | 大きい部屋 |
2 | #EFCREFHALL | ホール |
3 | #EFCREFCAVE | 洞窟 |
4 | #EFCREFNONE | 反射音なし |
反射音の音量:0.0~1.0
反射音が減衰する時間:0~300(ミリ秒)
0 | #EFCREVROOM | 部屋 |
1 | #EFCREVHALL | ホール |
2 | #EFCREVMETAL | 金属製の回廊 |
3 | #EFCREVCAVE | 洞窟 |
4 | #EFCREVREV | リバーブ |
残響音の音量:0.0~1.0
残響音の減衰時間:100~20000(ミリ秒)
残響音の高音の減衰率:0.1~1.0(値が小さいほど急速に高音が減衰する)
残響音の音色パラメータ:0.0~1.0
エフェクタの入力音量:0.0~1.0
EFCSET #EFCREFSROOM,1,100,#EFCREVROOM,1,20000,1,0.01,0.5
・エフェクタがOFFの時は音量が変化する。エフェクタをONにして使用のこと。
BEEPに対するエフェクタの効果:0(ドライ)~127(ウェット)
BGMPLAYに対するエフェクタの効果:0(ドライ)~127(ウェット)
TALKに対するエフェクタの効果:0(ドライ)~127(ウェット)
PCMSTREAMに対するエフェクタの効果:0(ドライ)~127(ウェット)
EFCWET 64,64,64,64 EFCWET 0,0,127,0
PCMCONT
・一定周期で行われるPCMデータの送出が次回はどの配列インデックスから行われるか設定する。
PCMSTREAMで指定した配列のインデックス
PCMPOS 1024
・一定周期で行われるPCMデータの送出が次回はどの配列インデックスから行われるかを返す。
PCMSTREAMで指定した配列のインデックス
PCMPOS OUT P
PCMSTOP
PCMデータが収容されている配列。1次元配列はモノラル、2次元配列はステレオ音声として再生される。
配列はリングバッファとして扱われ、再生しながら書き換えることが可能。
再生するデータのサンプリング周波数(Hz):1~192000
・省略時は48000。
DIM PCMDATA[2,48000] PCMSTREAM PCMDATA,48000
ステレオ音声の左側のPCMデータが収容されている配列。
配列はリングバッファとして扱われ、再生しながら書き換えることが可能。
ステレオ音声の右側のPCMデータが収容されている配列。
配列はリングバッファとして扱われ、再生しながら書き換えることが可能。
再生するデータのサンプリング周波数(Hz):1~192000
・省略時は48000。
DIM PCML[48000],PCMR[48000] PCMSTREAM PCML,PCMR,48000
音量を設定するチャンネルを指定
0 | #PVLEFT | 左 |
1 | #PVRIGHT | 右 |
設定する音量:-32767~32767(負の値を指定すると位相が逆になる)
設定する音量になるまでの出力サンプル数
・省略時は0。
PCMVOL 0,0,48000
音量を設定するチャンネルを指定
0 | #PVLEFT | 左 |
1 | #PVRIGHT | 右 |
・省略時は両方。
設定する音量:-32767~32767(負の値を指定すると位相が逆になる)
PCMVOL 16384
現在の左チャンネル又はモノラル音量: -32767~32767
現在の右チャンネルの音量: -32767~32767
PCMVOL OUT L,R
録音完了/停止=0,録音中=1
RECSTART 10 WHILE RECCHK():WEND
0~RECLEN()-1
左チャンネルのサンプル値
右チャンネルのサンプル値
RECSTART 10 WHILE RECCHK():WEND FOR I=0 TO RECLEN()-1 RECDATA I OUT L,R NEXT
バッファのサンプル数
RECSTART 10 ? RECLEN() '480000
サンプル位置
RECSTART 10 WHILE RECCHK() ? RECPOS WEND
1次元配列又は2次元配列を指定する。要素数は自動で調整される
1次元配列の時は左右のサンプルの平均値。2次元配列の時は[0,x]に左チャンネル、[1,x]に右チャンネルのサンプル値
取り出すサンプルの数
・省略時はRECPOS()と同じ値。
サンプルを取り出す先頭位置
・省略時は0。
RECSTART 5 BGMPLAY 3 WHILE RECCHK():WEND BGMSTOP DIM BUF[2,1] RECSAVE BUF WAIT 60 PCMSTREAM BUF,48000 INPUT A$
・サンプリング周波数48KHzで、引数で与えた時間のあいだ録音を行う。
・指定時間後に録音が停止する。
・途中で録音を停止したい時はRECSTOPを用いる。
録音する秒数 0.1~60
RECSTART 5 BGMPLAY 3 WHILE RECCHK():WEND BGMSTOP DIM BUF[2,1] RECSAVE BUF WAIT 60 PCMSTREAM BUF,48000 INPUT A$
・サンプリング周波数48KHzで録音する(時間無制限)。
・バッファは5秒間分用意される。
・録音を停止するときはRECSTOPを用いる。
LENGTH=48000/3 DIM BUF[2,LENGTH] PCMSTREAM BUF,48000 PCMVOL 0,16384 PCMVOL 1,16384 RECSTART BGMPLAY 1 PPOS=0 WPOS=0 LOOP NPOS=RECPOS() IF PPOS!=NPOS THEN FOR I=PPOS to NPOS-1 RECDATA I OUT L,R BUF[0,WPOS]=L BUF[1,WPOS]=R WPOS=(WPOS+1) mod LENGTH NEXT PPOS=NPOS ENDIF ENDLOOP
RECSTART 10 WAIT 60*5 RECSTOP
・サブプログラム内でのみ設定可能。
設定するバランス:0(サブ側のみ)~64(メイン/サブ均等)~127(メイン側のみ)
設定したバランスになるまでの時間:0~32767(秒)
SNDMSBAL 0,3.5
現在のバランス
SNDMSBAL OUT B
・サブプログラムからの設定は無視される。
設定する音量: 0~127
設定した音量になるまでの時間:0~32767(秒)
SNDMVOL 0,1.5
現在の音量(フェード中であれば指定した時間内で変化する)
V=SNDMVOL()
'BGM/BEEP/TALK SNDSTOP
a b d e f g h i j k m n o p q(ん) r s t u w y z
by ch cl(っ:はねる音) dy gy hy ky my ny py sh ts
#(0.1秒無音)
<S数値> スピード: 0(速)~1024(遅) 標準:128
<P数値> ピッチ: 0(高)~1024(低) 標準:128
<V数値> 音量: 0(小)~128(大) 標準:128
TALK "<S128>こんにちわ。わたしは、プチコンフォーです" TALK "$<S128>koqnichiwa######watashiwa##puchikoqfoodesu"
TALKSTOP
波形を設定する楽器番号:224~255
音量が大きくなり最大になるまでの時間:0~127(値が大きくなるほど早い)
音量が最大値から小さくなり一定になるまでの時間:0~127(値が大きくなるほど早い)
音を伸ばしている時の音量:0~127(値が大きくなるほど大きい)
音量が小さくなって0になるまでの時間:0~127(値が大きくなるほど早い)
・リリースを0にするとBGMSTOPで再生音が停止できなくなるが、SNDSTOP命令で強制停止ができる。
"00"~"FF" を8ビットの1サンプルとして連続して記述(128が減算され -128~127 の値として扱われる)
16,32,64,128,256,512サンプルで指定
定義した波形の音程のノート番号を指定。
・省略時は69("O4A":オクターブ4のラ)。
WAVSET 224,127,0,0,127,"FF00"*8,69 BGMPLAY "@224O4A1"
・3号互換モード。
・サンプル長と基準音程によっては正しい音程が出ないことがある。
波形を設定する楽器番号:224~255
音量が大きくなり最大になるまでの時間:0~127(値が大きくなるほど早い)
音量が最大値から小さくなり一定になるまでの時間:0~127 (値が大きくなるほど早い)
音を伸ばしている時の音量:0~127(値が大きくなるほど大きい)
音量が小さくなって0になるまでの時間:0~127(値が大きくなるほど早い)
・リリースを0にするとBGMSTOPで再生音が停止できなくなるが、SNDSTOP命令で強制停止ができる。
波形が格納された1次元配列
・1要素を8ビットの1サンプルとして扱う。(128が減算され -128~127 の値として扱われる)
定義した波形の音程のノート番号を指定。
・省略時は69("O4A":オクターブ4のラ)。
波形の先頭位置のインデックスを指定。
・省略時は0。
波形の終端位置のインデックスを指定。
・省略時は配列の末尾。
DIM W[2048] WAVSETA 224,127,0,0,127,W,69,0,2047 BGMPLAY "@224O4A1"
・サウンドのメモリ容量が許す限りの長さの波形を収容可能(サンプル周波数 48000Hz で 80秒程度)。
・ループ設定、サンプル周波数の指定が可能。
・サンプル長と基準音程、サンプル周波数によっては正しい音程が出ないことがある。
波形を設定する楽器番号:224~255
音量が大きくなり最大になるまでの時間:0~127(値が大きくなるほど早い)
音量が最大値から小さくなり一定になるまでの時間:0~127 (値が大きくなるほど早い)
音を伸ばしている時の音量:0~127(値が大きくなるほど大きい)
音量が小さくなって0になるまでの時間:0~127(値が大きくなるほど早い)
・リリースを0にするとBGMSTOPで再生音が停止できなくなるが、SNDSTOP命令で強制停止ができる。
波形が格納された1次元配列
・1要素を符号付き16ビットの1サンプルとして扱う。
定義した波形の音程のノート番号
・省略時は69("O4A":オクターブ4のラ)。
波形のループ先頭位置のインデックス(オフセットが加味される)
・省略時は0。
波形のループ終端位置のインデックス(オフセットが加味される)
・省略時は配列の末尾。
波形のサンプル周波数(単位はHz): 1~96000。
・省略時は 28160。
配列の参照開始位置のインデックス
・省略時は0。
波形をBEEPで再生したときにループするかを指定する
・省略時は0(ループしない)。
DIM W[2048] WAVSETA 224,127,0,0,127,W,69,1024,2047,44100,0,#false BGMPLAY "@224O4A1"
再生状態を取得したいトラックの番号:0~15
・省略時は0。
0:再生していない
1:再生中
R=BGMCHK(1) PRINT R
コマンドの文字列
-1:正常
0:エラー(解釈エラーになった文字列位置)
R=CHKMML("T120O4L4CC8D8EE8F8GA8G8E2") PRINT R
FALSE=停止中、TRUE=再生中
RET=TALKCHK()