minilogue xdには外部変数として、下記のものが osc_api.sym に定義されている。
k_osc_api_version = 0x0800f000;
midi_to_hz_lut_f = 0x0800f100;
sqrtm2log_lut_f = 0x0800f360;
tanpi_lut_f = 0x0800f764;
log_lut_f = 0x0800fb68;
bitres_lut_f = 0x0800ff6c;
wt_par_lut_f = 0x08010170;
wt_par_notes = 0x08010f8c;
wt_sqr_lut_f = 0x08010f94;
wt_sqr_notes = 0x08011db0;
wt_saw_lut_f = 0x08011db8;
wt_saw_notes = 0x08012bd4;
wt_sine_lut_f = 0x08012bdc;
schetzen_lut_f = 0x08012de0;
cubicsat_lut_f = 0x08012fe4;
wavesA = 0x080131e8;
wavesB = 0x0801546c;
wavesC = 0x080174ec;
wavesD = 0x0801915c;
wavesE = 0x0801abc4;
wavesF = 0x0801ca3c;
_osc_mcu_hash = 0x0801eabc;
_osc_bl_saw_idx = 0x0801eac8;
_osc_bl_sqr_idx = 0x0801ebb0;
_osc_bl_par_idx = 0x0801ec98;
_osc_rand = 0x0801ed80;
_osc_white = 0x0801edb8;
以下、それぞれの変数について判明し次第追記:
-
k_osc_api_version- logue SDKのAPI番号が入っている?
-
midi_to_hz_lut_f- midiのノート番号と発振周波数の対応テーブル
- おそらく、マイクロチューニングを切り替えるたびに中身が変わる -> 確かめてないので違うかも
-
sqrtm2log_lut_f-
sqrt(-2*log(x))を計算するためのテーブル -
osc_apiやfx_apiにこれを使った関数が定義されているので、このテーブルを直接使うことはなさげ
-
-
tanpi_lut_f-
tan(pi*x)を計算するためのテーブル。これも直接使うことはなさげ。
-
-
log_lut_f-
log(x)を計算するためのテーブル。同上。
-
-
bitres_lut_f- bit depthの変換テーブル?
osc_bitresf関数で使用。
- bit depthの変換テーブル?
-
wt_par_lut_f- 放物線波形テーブル。
osc_parf関数で使用
- 放物線波形テーブル。
-
wt_par_notes- 不明
-
wt_sqr_lut_f- 矩形波テーブル
-
wt_sqr_notes- 不明
-
wt_saw_lut_f- ノコギリ波テーブル
-
wt_saw_notes- 不明
-
wt_sine_lut_f- サイン波テーブル
-
schetzen_lut_f-
osc_apiのソースコメントには "Schetzen saturation" と書いてある - 歪み用のテーブル?
-
-
cubicsat_lut_f-
osc_apiのソースコメントには "Cubic saturation" と書いてある - 歪み用のテーブル?
-
-
wavesA〜D- プリセットのUser OSCで使っている六種類のwavetable
- それぞれ16個の波形を格納
-
_osc_mcu_hash- マイコンに関する何かのハッシュ値を返す関数?
-
_osc_bl_saw_idx- "Get band-limited sawtooth wave index for note."とある
- バンドリミットされたノコギリ波に関連するなんかのindexを返す関数なのだが、使用例がないのでよくわからない
- どうでもいいが、引数のレンジが[0-151]なのに型が
floatなのは変
-
_osc_bl_sqr_idx- 矩形波に関すること以外は同上
-
_osc_bl_par_idx- 放物線波形に関すること以外は同上
-
_osc_rand- ランダム関数
- 0からUINT_MAXまでの整数値をランダムに返す
-
_osc_white- ホワイトノイズを返す関数(=返り値がfloatのランダム関数)