見出し画像

NTS-1の開発メモ

やること

  • Logue-sdkの開発環境の構築

  • サンプルのオシレータのビルド

前提条件

MacBook Air M1
macOS Big Sur 11.6
Logue-sdk
Korg NTS-1 (firm v1.1)

環境構築

オフィシャルのチュートリアルに従います。

チュートリアルにある通りにターミナルを開き、任意の場所にLogue-sdkのリポジトリ一式をダウンロードします。
ダウンロードができたらlogue-sdkの階層に移動し、アップデートを行います。

$ git clone https://github.com/korginc/logue-sdk.git
$ cd logue-sdk 
$ git submodule update --init 

これでSDKの準備ができました。
続いてビルドに必要なツールをインストールしていきます。

  • GNU Arm Embedded Toolchain(マイコン開発のツール)

  • logue-cli Command Line Utility(パソコンとLogueシンセの通信を行うためのツール)

Macだとインストールが必要なのはこの二つです。
ターミナルでは今、Logu-sdkの中にいますのでまずはtools/gccのディレクトリに移動します。

$ cd tools/gcc
$ ls
README.md		get_gcc_msys.sh
get_gcc_linux.sh	get_gcc_osx.sh

ターミナルでtools/gccの階層に移動した状態でlsのコマンドを叩いてフォルダの中身を確認します。シェルスクリプトが何個か格納されているのがわかります。
macOSなので

$ sh get_gcc_osx.sh

このようにコマンドを打ってGNU Arm Embedded Toolchainをインストールするスクリプトを起動します。
インストールには結構時間がかかるのでのんびりと待ちます。
GNU Arm Embedded Toolchainのインストールが終わったら、
次はlogue-cliをインストールします。※このインストールについては任意です。やらなくても代替のソフトでどうにかなります。

$ cd ..
$ cd logue-cli
$ sh get_logue_cli_osx.sh

これは結構早く終わります。

これで開発に必要なSDKとツールの入手が完了しました。
最後の仕上げにターミナルからlogue-cliを呼び出せるように設定を行います。
通常だとlogue-cliの名前をターミナルで叩いてもエラーになってしまいます。なのでターミナルにlogue-cliの名前を覚えてもらいます。
Macならばfinder上でcmd + shift + hを同時に押してホームディレクトリを表示してからcmd + shift + .を同時に押すと隠しファイルが表示されます。
このときに.zshrcという設定ファイルがあればそれをクリックして編集します。なければ自分で作って配置してあげます。
続いて.zshrcファイルに以下の内容を書き込んで保存します。ユーザー名はご自身やlogue-sdkのディレクトリはお使いの環境によって多少変化しますのでご注意ください。

export PATH=$PATH:/Users/ユーザー名/logue-sdk/tools/logue-cli/logue-cli-osx-0.07-2b

ターミナルを再起動してからlogue-cliを打ち込むとツールの呼び出しができるようになります。
これで開発環境の準備は完了です。

サンプルのオシレータのビルドにチャレンジ!

開発環境が整備できましたのでいよいよサンプルのビルドにチャレンジします。
まずは、Logue-sdkの中身を観察してみましょう。

階層が入り組んでいて分かりづらい。

logue-sdk/platform
logue-sdkでの開発に対応したシンセは、NTS-1とminiLogue, Prologueがあります。それぞれのハードウエアに合わせてプログラムをビルドしてあげる必要があります。私はNTS-1用にnutekt-digitalの階層を使います。

logue-sdk/platform/nutektdigital/osc/test
オシレータを開発するのに役立ちそうなサンプルが入っている階層です。各項目の名前を見るとサイン波、矩形波などのオシレータのサンプルが入っています。
今回はサイン派のオシレータの中身を観察してみたいと思います。

logue-sdk/platform/nutekt-digital/osc/tests/sine
この中には三種類のファイルが入っています。

  • Makefile(GNU Arm Embedded Toolchainにビルドしてもらうための指示書基本的に触らない)

  • manifest.json(プロジェクトファイルの概要を記載するファイル。パラメータの定義もここで行う。)

  • project.mk(プロジェクト名やビルドするソースコードのディレクトリを記述)

開いて理解できそうなファイルは勘で編集すると案外いける

logue-sdk/platform/nutekt-digital/osc/tests/src
このフォルダの中には先程見たプロジェクトファイルとリンクされたソースコードの.cppファイルが配置されています。オシレータ開発ではこれらの.cppファイルを編集して開発を行います。
sine.cppのファイルを開いて中身を見てみましょう。

正直なところ内容がさっぱりわからない。

sine.cppという名前からサイン派が出るオシレータだというのが推測できますし、97行目にあるosc_sinf(p)の記述でどうやらサイン派の計算をしているようです。
ではこのオシレータをNTS-1で使えるようにビルドしてみましょう。

$ cd /logue-sdk/platform/nutekt-digital/osc/tests/sine
$ make

logue-sdkの中でsineのディレクトリに移動してからmakeのコマンドを叩きます。ビルドがうまくいくと、最後にターミナルにDoneと表示されてsineのディレクトリにsine_test.ntkdigunitという名前のファイルが出来上がります。
続いてlogue-cliを利用して出来上がったオシレータをNTS-1に転送します。

$ logue-cli load -u sine_test.ntkdigunit

と、やると転送できるはずなのですが私の環境ではエラーになってしまったので今回は出来上がったsine_test.ntkdigunitのファイルをlibrarianのソフトから転送しました。

一応コマンドの書き方を工夫して対処できるようなのですがちょっとめんどくさいのでツール側がアップデートするのを待とうかなと思います。

最後に

ざっくりとではありますが開発環境の導入とサンプルのビルドをやってみました。
自分の知的体力が続けば自作オシレータの開発などをやってみたいのですがうまくやれるかちょっと不安だったりします。
logue-sdkのディレクトリの中にある、revfx, delfx, modfxこれらの中にあるtestsのプロジェクトも今回取り上げたmakeのコマンドを叩けばビルドできますのでぜひお手持ちの環境でビルドして遊んでみてください。
それではまた会いましょう!

この記事が気に入ったらサポートをしてみませんか?