microKORG2にFreeverbを移植してみた

microKORG2が届いたので、試しに既存のものからfreeverbをビルドしてみました。
API仕様を見る限り、オシレータは少々面倒そうなので、まずはfreeverbを選びましたが、拍子抜けするほどあっさり動きました。

microKORG2版のコードは、専用のブランチを作ってあります。バイナリはリリースページにあります。

GitHub - boochow/freeverb-logue at microkorg2
Korg logue SDK port of Freeverb. Contribute to boochow/freeverb-logue development by creating an account on GitHub.

NTS-1 mkII版を起点にしましたが、microKORG2版での差分は以下の通りです。

・Makefileの入れ替え
単にdummy-revfx/Makefileをコピーして来ました。

・config.mkの編集
ソースコードのリストが入る変数名が、UCSRC/UCXXSRCから”U”が落ちて、CSRC/CXXSRCになっています。また、dummy-revfx/config.mkではリンクするライブラリに-lcが追加されていたので、一応追加しておきました。

・ヘッダファイルの入れ替え
SDKのヘッダファイル構成が若干変更にあっているようで、これもdummy-revfx/のファイルを見て修正しました。C++関連のヘッダファイルには、実際には使わないものもあるかもしれませんが、精査はしていません。

・header.cの修正
インクルードするヘッダファイルに変更があります。

ヘッダ構造体に、ドキュメントには記載がないnum_presetsというフィールドがあります。このフィールドはdrumlogueには存在していましたが、NTS-1 mkII/NTS-3では削られていました。

利用できるパラメータの個数に変更があります(11個→8個)。

APIがほぼ同じなので、移植と言っても作業はこの程度で、設定変更と言ってもいいくらいの作業内容です。おそらくMODとDELAYについてもほぼ同様ではないかと思います。

オシレータについてはもっと手間がかかりそうなので、現在進行中のタスクを片付けたら試してみようと思います。

現状の疑問点は

・unit_revfx.hには

  /** Exposed parameters with fixed/direct UI controls. */
  enum {
    k_unit_revfx_fixed_param_time = 0,
    k_unit_revfx_fixed_param_depth,
    k_unit_revfx_fixed_param_mix,
    k_num_unit_revfx_fixed_param_id
  };

#define UNIT_REVFX_MAX_PARAM_COUNT (8)

という記載があるが、実際にはfixedなパラメータに紐づいたデファクトの挙動(特定のノブから操作できるとか)は無さそう

・presetが使えるのか
サンプルのコードを見ても、APIはあるようなのですが利用例はありません。microKORG2のユーザーインタフェースから考えても、どう使うのかちょっと見当が付きません。

といったあたりです。そのうち公式discordのほうに質問を投げてみようかと思います。

コメント