Mutable Instruments BraidsをNTS-1 mkIIで動かす

昨年drumlogueに移植したBraidsを、NTS-1 mkIIへ移植しました。

Braidsそのものについては以前の記事で触れていますので、詳しくは書きませんが、Mutable Instrumentsのユーロラックモジュールで、全47種のオシレータを搭載しています。ハードウェアはSTM32F103で、波形合成はすべてソフトウェアで行われています。GitHubで全ソースコードが公開されています

Mutable InstrumentsのBraidsをDrumlogueで動かす
Braidsは、フランスのMutable Instruments社がかつて販売していたユーロラックモジュールのデジタルシンセサイザです。今回、これをlogue SDKを使ってdrumlogueに移植してみました。名前は「Lillian」です...

drumlogueに移植した際にlogue SDK v2のAPIで動くようにはなっていますが、NTS-1 mkIIは1ユニット48KBのサイズ制限がありますので、そのままではロードできません。(drumlogue版は128KBほどあります。)そのため、いろいろ試行錯誤して、オシレータの順序を変更しないようにしつつオシレータのカテゴリの違いもある程度意識して、最終的に以下の5つのオシレータに分割しました。

・バーチャルアナログ系オシレータ
・デジタル系オシレータ
・レゾネータ系およびパーカッションオシレータ
・ウエーブテーブルオシレータ
・ノイズジェネレータ

分割の際のネックになったのは、ウエーブテーブルオシレータが使用しているサイズが大きなテーブル、およびレゾネータ用のディレイラインバッファでした。これらのオシレータは相対的にコードに割けるスペースが小さくなったため、利用できるオシレータの数が少なくなっています。

テーブルには、フィルタのパラメータやサイン波の波形など、複数のオシレータで利用されるものと、特定のオシレータでのみ利用されるものがあり、#ifで細かく場合分けしました。また、コードや構造体定義についても上記の分割に沿って#ifで場合分けしています。文字列定数などもすぐスペースを取ってしまうため、できるだけ不要なものは取り除くようにしました。

drumlogue版では2つのエンベロープジェネレータを内蔵させて、単体で音色変化・音量変化が行えるようにしましたが、NTS-1版では外部にVCF/VCAがありますので、内蔵エンベロープは削除しました。

一方NTS-1 mkII版の新機能としては、外部の音声信号でFM変調できるようにしました。FM変調自体はBraidsにもともとある機能です。もちろんNTS-1の内蔵LFOからのピッチモジュレーションも使えます。

また、LFOによるShapeモジュレーションについては、主要な2つの音色パラメータおよびFM変調のレベルのいずれかをモジュレーションできるようにしました。さらに、NoteONからモジュレーションが始まるまでの遅延時間を設定できるようにしています。

移植に際しては、他にこちらで書いたバグに悩まされたりしましたが、オシレータを分割することができたあとは割とスムーズに進みました。元のBraidsのコードが大変綺麗なのと、APIが(細かな差分があるとはいえ)drumlogueと共通性があるのが大きかったと思います。

****

ちなみに私はBraidsのノイズジェネレータが結構好きです。単にノイズを生成するのではなく、ノイズをちょっと料理したオシレータで、なかなか普通のシンセでは作りにくい音だったりします。

上の動画は試作版で、ネーミングがdrumlogue版と同じLILLIANのままですが、正式なネーミングはLILLIANのサブセット版ということでLilyにしました。バイナリはGumroadで無料配布しています。カバー画像は、NTS-1 mkIIの黒・白・金の配色をイメージしています。なおソースコードはそのうちGitHubで公開予定です。

Lily: macro oscillator for NTS-1 mkII
Lily is a set of user oscillator units for Korg NTS-1 mkII.Main featuresThe macro oscillator models from Mutable Instrum...

【2024/5/8追記】ソースコードは下記で公開しています。

GitHub - boochow/eurorack_nts-1_mkii
Contribute to boochow/eurorack_nts-1_mkii development by creating an account on GitHub.

コメント