⛳
logue SDK で KORG NTS-3 kaoss pad 向けのエフェクトを作りたい DSP 初心者のメモ
NTS-3 を買いました。なんかつくりたいのでメモ。
(参考)Windows で WSL 経由でビルドするときのメモ
前に書いたやつ。
参考にしたサイト
- logue SDK の NTS-3 の README
- KORG Examples
- KORG NTS-3 kaoss padのSDKを調べてみた – 楽しくやろう。
- NTS-3 kaoss pad + logue SDKでオシレータを作ってみた – 楽しくやろう。
公式の説明
編集するのは主に以下の3つのファイルです、とのことです。
-
config.mk
: プロジェクト名とかファイル構成とか -
header.c
: ユニット名、パラメータの名前や値の範囲などのメタデータ -
unit.cc
: 実際のエフェクトの実装
NTS-3 特有の機能
NTS-3 Specific Touch Event Handler という項目に説明されていますが、kaoss pad には touch event があり、そのイベントハンドラの実装が必要です。タッチの座標や、タッチのフェーズ(タッチ開始、移動、離す)の情報が渡されるみたいです。
とりあえず example を眺めてみる
KORG 社員有志によって提供されているサンプルのうち、NTS-3 向けでコードが公開されているのは3つです。3つを見比べてみたところ、
-
config.mk
: プロジェクト名だけ変更 -
header.c
: このファイルは使うパラメータに合わせてちゃんと書く必要がある -
unit.cc
: このファイルは特に変更せず、 include されているヘッダファイルの方の実装にロジックを詰め込む
という感じになっているみたいです。
SDK 側に用意されているヘッダファイル
nts-3_kaoss/common
以下には様々なヘッダファイルがあり、必要あれば include して使うことができるみたいです。中身をみつつメモっていきます。
ファイル | 説明 |
---|---|
dsp/biquad.hpp |
IIR フィルタ? |
dsp/delayline.hpp |
ディレイ |
dsp/simplelfo.hpp |
LFO |
utils/buffer_ops.h |
バッファの操作です。特に Init の中で buf_clr_f32() でバッファをクリアしてから使う、というのがお作法になってるみたいです。 |
utils/*_math.h |
数学的な演算の関数です。 |
utils/cortexm.h |
Cortex-M の命令セットが入っています。低レベルすぎるので直接使うことはあまりなさそう...? |
attributes.h |
便利 attribute。 |
macros.h |
便利マクロ。 |
fx_api.h |
エフェクター用の API。 |
osc_api.h |
オシレーター用の API。 |
runtime.h |
パラメータに指定する定数とか? |
unit_genericfx.h |
genericfx の定義。 |
unit.h 、_unit_base.c
|
ユニットのデフォルトの?定義。unit_genericfx.h に include されていて、こっちを直接使うことはなさそう。 |
osc_api.h
以下の波形が用意されています。_bl_
とか_bl2_
とかついているのは band-limited バージョン(ナイキスト周波数以上のは落とす)らしいです。
-
osc_sinf()
/osc_cosf()
(サイン波) -
osc_sawf()
(三角波) -
osc_sqrf()
(矩形波) -
osc_parf()
(サイン波の半分だけのやつ) -
osc_wave_scanf()
(「wave bank」とか書かれてるので、ウェーブテーブル?)
あとは、ディストーション用?の関数とかノイズとか。
fx_api.h
ここはエフェクター特有の API はない気がします。数学系。
Discussion