これまで、logue SDKを使った開発の記事をいくつか書いてきましたが、この度、drumlogueを購入しましたので、drumlogue用の新しいSDK「logue sdk 2.0」を使ってみました。
従来のlogue SDK(1.0系列)との違い
SDKの前に、まずハードウェアを見てみます。
これまでのlogue SDKでは、ターゲットのプラットフォームがSTM32だったので、組み込み開発の色が非常に濃いものになっていました。
しかしdrumlogueでは、CPUにArmV7が使われており、STM32よりもRaspberry Piに近いアーキテクチャのCPUになりました。
ハードウェアの仕様は公開されていませんが、内部の写真によると下記のような構成となっているようです。
CPU:MCIMX6Z0DVM09AB NXP i.MX6 Cortex-A7 900MHz(シングルコア)
RAM:IS43TR16128CL DDR3 SDRAM 2Gbit (256MB)
Flash:MT29F1G08ABAEAWP NAND flash 1Gbit (128MB)
prologue/minilogue xdはSTM32を何個も積んだ豪勢な構成でしたが、drumlogueではRaspberry Pi2程度のパワー(ただしシングルコア)のメインCPU×1とアナログ回路制御用のSTM32×1のシンプルなハードウェアになっています。
この大幅なアーキテクチャ変更の結果、logue SDK 2.0は1.0とは完全に別物になっています。
音声入出力やパラメータの読み取りなど、対応しなければならないイベントは大きくは変わらないので、SDKの構造には類似性はあります。
ただ、ざっと見た感じ、現状ではそういったイベントに対応するAPIのための最低限のライブラリだけが提供されており、logue SDK 1.0系にあったBiQuadフィルタやBand Limitedなウエーブテーブルなどの各種ライブラリはまだ用意されていないようです。
インストール
まずクロス開発環境のインストールです。
dockerベースの環境となっており、インストール自体はドキュメントの通りにやれば簡単に終わります。
私はUbuntu 20.04を使っていますが、これまでこの環境ではdockerを動かしていなかったので、自分をdockerグループに追加して、newgrpコマンドでカレントのグループをdockerに変更する必要がありました。

インストールが完了したら、
$ docker/run_interactive.sh
で開発環境のシェルを起動できます。このシェルからビルドを行います。
ダミーのユニットをビルドしてみる
logue SDK 2.0では、シンセサイザ、ディレイ、リバーブ、マスターエフェクトの4種類のユーザユニットを開発できます。
SDK2.0のAPIのドキュメントがまだ用意されていませんが、その代わりに骨格部分だけ実装したダミーのユーザユニットのソースが提供されていますので、これをビルドしてみます。
user@logue-sdk:~$ build drumlogue/dummy-synth
(以下同様に、
build drumlogue/dummy-delfx
build drumlogue/dummy-revfx
build drumlogue/dummy-masterfx
も実施)
これで各フォルダにdummy_xxxx.drmlgunitというファイルが出来ていれば、とりあえず開発環境は動いています。
ビルドしたバイナリファイルをdrumlogueにインストールするには、drumlogueのRECボタンを押しながら電源を入れます。
するとdrumlogueがストレージモードで立ち上がりますので、その中のUnitsフォルダの下の該当するフォルダに.drmlgunitファイルをコピーします。
完了したらdrumlogueのPLAYボタンを押すと再起動してユニットが読み込まれます。
・・・のはずなのですが、なぜかSynthユニット以外はエラーになって読み込まれませんでした。
多分操作は間違っていないと思うのですが、現状で動作確認されているユーザユニットがまだ見当たらないので、ちょっと状況を調べてみたいと思います。
ちなみに購入したdrumlogueのファームウェアは1.0.6でしたので、アップデートして1.1.0にしましたが、状況は変わりませんでした。
というわけで次回に続きます。
【2023/3/22追記】
ダミーのユニットがdrumlogueにロードできない問題ですが、単純にコードのミス(コンストラクタとデストラクタが宣言されているが定義されていない)のように思います。
これは修正してプルリクエストを投げました。
コメント