logue SDK で KORG NTS-3 kaoss pad 向けのエフェクトを作りたい DSP 初心者のメモ

2024/07/08に公開

NTS-3 を買いました。なんかつくりたいのでメモ。

https://www.korg.com/jp/products/dj/nts_3/

(参考)Windows で WSL 経由でビルドするときのメモ

前に書いたやつ。

https://zenn.dev/yutannihilation/articles/559aa818d65a30

参考にしたサイト

公式の説明

編集するのは主に以下の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