logue SDKで作ったオシレータをブラウザ上で動作させてみる

logue SDKで作成したオシレータ等を試しに使ってもらうための方法として、ブラウザ上で動作する、シンセサイザのエミュレータ「logue SDK web simulator」を使う方法があります。これはKORGで開発されたもので、以前dtmstationで紹介されていました。当時はα版ということでしたが、その後正式なリリースされていないようです。

無料で使えるWeb版のシンセサイザも登場!? 世界中のプログラマに支持される1万円のKORGのミニシンセ、NTS-1の実力|藤本健の “DTMステーション”
先日「1万円で買えるKORGの小さなシンセ・NTS-1に、世界中で開発されるオシレータやエフェクトを組み込んでみた」という記事で紹介したKORGのミニシンセ、NTS-1。高性能なCPUを搭載した実質コンピュータともいえる...
KORG Logue WAB

ユーザオシレータの6つのパラメータ、Shape、LFOが制御できます。シフトキー+ShapeでShift-Shapeパラメータの設定、シフトキー+LFOでLFO Rateの設定ができます。

このシミュレータがlogue SDKのalpha/wasm-buildsブランチに入っていることは、以前気がついていたのですが、中身までは調べていませんでした。

今回は、最近作成した自作のオシレーターをこのシミュレータ上で動かしてみてみましたので方法をメモしておきます。

このシミュレータはCのコードをemscriptenでWASMのコードにコンパイルし、ブラウザ上で動作させるものです。ArduBoyエミュレータや、MicroPythonのUnicorn版などと原理的には同じです。

ランタイムとして必要なファイル類は、すべて
logue-sdk/platform/ext/WAB/web
の中に入っています。このディレクトリの中身をWebサーバに置けば動作します。

ファイルを置くサーバは、HTTPSでアクセスできる必要があります。このシミュレータはブラウザからAudioWorkletにアクセスしますが、ブラウザのセキュリティ制約上、AudioWorkletを使用するにはコンテンツがHTTPSで配信されている(Secure Contextsでの利用である)ことが必要であるためです。

オシレータは、logue SDKのデモ用オシレータであるwavesが入っています。新しいオシレータを追加するには、オシレータをemscriptenでコンパイルし、生成されたjsファイルをサーバ上に置いて、logue-synth.jsのオシレータのリストに当該jsファイルのファイル名を追加します。

まず、ビルドツールとしてemscriptenをダウンロードします。ダウンロードするためのシェルスクリプトが
logue-sdk/tools/emscripten/
にありますので、これを実行します。(LinuxとOS Xのみサポートされています。)

logue SDKのサンプルオシレータでは、ビルドに必要なMakefileは用意されています。ビルドする手順は以下のようになります。

cd logue-sdk/platform/nutekt-digital/osc/tests/square
make wasm

これで、square_test.jsが生成されますので、これをWebサーバの
oscs/KORG/
にアップロードします。

オシレータを追加するためには、logue-synth.jsの編集が必要です。
oscDefsの値を以下のように変更します。

labelは画面上での表示名、manはjsファイルの置かれるディレクトリ、typeはdefaultTypeで使用する名称、codeはjsファイルのファイル名です。
編集したら、このファイルもWebサーバにアップロードします。

これで一応動作するのですが、メニューからデフォルト以外のオシレータを選択すると、音が出なくなってしまいます。(少なくとも私が試した限りでは・・・)ですので現状、初期設定の(上記でdefaultTypeに指定した)オシレータだけしか試せません。

自分で作成したオシレータをビルドする場合は、manifest.jsonやCのソースコードなど、プラットフォーム非依存のファイルを上記のサンプルオシレータのファイルと差し替えればビルドできます。(Makeファイルやld/、tpl/配下のファイルは変更されていますので、これらは差し替えてはいけません。)

先日作成したαJunoのDCOを模擬するオシレータを下記に置いてみました。フィルタもエンベロープもコーラスも無い、素のオシレータの音しか使えませんが、お試しください。

KORG Logue WAB

コメント