SmileBASIC 4.4.8
リファレンスマニュアル
更新日 2023/12/07
目次
- 命令概要(基本命令)
- 命令概要(表示命令)
- 命令概要(入力、サウンド、その他)
- ダイレクトモード専用命令
- 変数や配列の定義、操作に関する命令
- 制御命令
- 数学関連
- 文字列操作
- その他
- 各種入力
- 各種入力(Toy-Con)
- ファイル
- スクリーン制御
- テキストスクリーン入出力
- グラフィック
- スプライト
- レイヤー
- サウンド
- 高度な演算
- ソースコード操作
- サブプログラム
更新日 2023/12/07
・指定された配列の全要素に対して以下の演算を行う。(0 <= t < len(IN))
OUT[t]=FP[0]*IN[t]+FP[1]*IN[t-1]+FP[2]*IN[t-2]-FP[3]*OUT[t-1]-FP[4]*OUT[t-2]
・1次元配列を指定するとモノラル、2次元配列を指定するとステレオ扱いになる。
※配列のインデックスが負の場合は、モノラル又は左チャンネルはFP[5..8]、右チャンネルはFP[9..12]の値を用いる。
FP[5..12]の値は実行ごとに更新される。
・ローパスフィルタなど、主要な特性のフィルタ係数配列は BQPARAM 命令で得ることができる。
フイルタを適用した結果が格納される配列
フイルタを適用する信号が格納されている配列
フィルタ係数が格納されている配列
・配列の要素数は13以上でなければならない。
DIM OD[2,1000],ID[2,1000],FP[13] BQPARAM FP,#BQLPF,48000,8000,1/SQR(2) BIQUAD OD,ID,FP
フィルタ係数が格納される配列(長さが13以上であること)
・指定した配列の[5..12]は、この命令を実行しても変更されない
0 | #BQAPF | オールパスフィルタ | カットオフ周波数付近の位相のみが変化する |
1 | #BQLPF | ローパスフィルタ | カットオフ周波数以下が通過する |
2 | #BQHPF | ハイパスフィルタ | カットオフ周波数以上が通過する |
3 | #BQBPF | バンドパスフィルタ | カットオフ周波数を中心とした指定の周波数帯域が通過する |
4 | #BQBSF | バンドストップフィルタ | カットオフ周波数を中心とした指定の周波数帯域を遮断する |
5 | #BQLSF | ローシェルフフィルタ | カットオフ周波数以下を指定の増幅率で増幅する |
6 | #BQHSF | ハイシェルフフィルタ | カットオフ周波数以上を指定の増幅率で増幅する |
7 | #BQPEQ | ピーキングイコライザ | カットオフ周波数を中心とした指定の周波数帯域を指定の増幅率で増幅する |
入力信号のサンプリング周波数
・0はエラーとなる。
フィルタのカットオフ周波数
フィルタ種別 BPF/BSF/PEQでは帯域幅(単位:オクターブ)、それ以外ではQ値(フィルタ特性のなだらかさ)として扱う
・0はエラーとなる。
フィルタの増幅率(単位:db)。フィルタ種別 #BQLSF #BQHSF #BQPEQ の時に記述が必要。
DIM OD[1000],ID[1000],FP[13] BQPARAM FP,#BQLSF,48000,8000,1/SQR(2),3.0 BIQUAD OD,ID,FP
・指定する配列は全て同じ要素数で、要素数は2のn乗でなければならない。
・出力と入力の配列は同一でもよい。
演算結果が収容される実数部と虚数部の複素数配列
演算する実数部と虚数部の複素数配列
窓関数の値が収容されている配列
・指定した場合、入力の複素数配列に同一インデックスの要素値を乗算した後、フーリエ変換を行う。
・窓関数値配列はFFTWFN命令で得ることもできる。
DIM iR[1024],iI[1024],WF[1024] DIM oR[1024],oI[1024] FFTWFN WF,3 FFT oR,oI,iR,iI,WF
・指定する配列は全て同じ要素数で、要素数は2のn乗でなければならない。
・出力と入力の配列は同一でもよい。
演算結果が収容される実数部と虚数部の複素数配列
演算する実数部と虚数部の複素数配列
DIM iR[1024],iI[1024] DIM oR[1024],oI[1024] IFFT oR,oI,iR,iI
窓関数値を収容する配列
0 | #WFRECT | 矩形窓 |
1 | #WFHAMM | ハミング窓 |
2 | #WFHANN | ハニング窓 |
3 | #WFBLKM | ブラックマン窓 |
DIM WF[1024] FFTWFN WF,#WFHAMM
・配列の先頭から、結果格納配列の末尾まで、それぞれの要素間で演算タイプで指定された演算を行い、結果格納配列に演算結果を格納する。
・パラメータ配列の要素数が結果格納配列の要素数と異なる場合、配列の末尾まで到達したら配列の先頭に戻ってくりかえし参照する。
0 | #AOPADD | 加算(p1+p2) |
1 | #AOPSUB | 減算(p1-p2) |
2 | #AOPMUL | 乗算(p1*p2) |
3 | #AOPDIV | 除算(p1/p2) |
4 | #AOPMAD | 積和(p1*p2+p3) |
5 | #AOPLIP | 線形補間(p1*p3+p2*(1-p3)) |
6 | #AOPCLP | クランプ(p1の値をp2<=x<=p3の範囲内に丸める) |
演算結果を格納する数値配列
パラメータ1,2,3には、数値配列、もしくは通常数値を指定できる
・通常数値を指定した場合すべての要素演算にその数値が使用される。