Lissajous Sampler
6つのステムを、音量に反応する3Dオブジェクトとして可視化し、12チャンネルの空間音響へリアルタイム出力するための操作・システムガイド。
システム概要
NYS Lissajous Samplerは、WebGL、Node.js、SuperColliderを連携させた独立アプリです。標準ではassets/1.wav〜6.wavを各1つのモノラル・オブジェクトとして扱い、3D座標と12スピーカーへのゲインを同じ状態データから生成します。
起動時は必ずSTOPPEDです。標準音量は−24 dBFS、出力先はLoopback Audio 12ch。音を出す前に出力デバイスと下流側のルーティングを確認してください。
最短の操作
Audio outputが目的の12chデバイスになっていることを確認する。Master volumeを低い値から設定する。Startで再生とモーションを開始する。Stopで現在位置のまま停止、Return to startで音源と軌道を先頭へ戻す。
画面と基本操作
左側は3D空間、右側はスクロール可能なコントロールパネルです。シーン内の色は各ステムに固定され、オブジェクト、パーティクル、メーター、ラベルで共通します。
現在のステムセットとモノラル化・12ch化の状態。
1〜24ファイルをドラッグ&ドロップで交換。
速度、軌道ファミリー、変形量を操作。
面を生成する音量しきい値をdBFSで設定。
動くラベルだけをON/OFF。スピーカー名は維持。
開始、停止、先頭復帰を音と映像に同期。
モーションとグラフィック
読み込んだオブジェクトは位相を360° / stem数で分配され、同じ場所へ重なりにくい状態を保ちます。Path variationは軌道の単純な速度ではなく、立体的な形状そのものをモーフします。
| パターン | 動き | Variationの効果 |
|---|---|---|
| Phase Lissajous | 三軸の位相曲線 | Orbit → Ribbon → Knot → Weave |
| Tilted Orbit | 傾斜した周回 | 軸の傾きと上下幅 |
| Helix Loop | 閉じた螺旋 | 巻き数と立体深度 |
| Breathing Ring | 膨張・収縮する環 | 呼吸量と高さ |
| Box Loop | 箱状の周回 | 角の硬さと面のねじれ |
| Vortex Coil | 渦巻くコイル | 渦の密度と縦方向の構造 |
各オブジェクトの実測dBFSが、点の大きさ、二層グロー、パーティクル発生量、Plexusの明るさへ反映されます。描画負荷を抑えるため、Plexusは各点から近傍2点へ限定されます。
空間エフェクト
各オブジェクトから12スピーカーまでの距離を、最短8 msからRipple travelまでの到達時間へ変換します。この12本の遅延時間はSuperColliderの音響処理とWebGLの波紋・伝播線で共有されます。
| モード | 音響 | 可視化 |
|---|---|---|
| Dry | 等電力12chパンニング | 基本のスピーカー接続 |
| Ripple Delay | 距離順に到達する12chディレイ | 波紋リングと伝播線 |
| Spatial Reverb | 空間タイミングで再配分したFreeVerb2 | 減衰する立体シェル |
| Ripple + Reverb | 補正付きで両フィールドを合成 | リング、シェル、伝播線 |
Wet mixは標準22%です。残響を長くする場合は、まずMasterを下げ、次にWet mixを少しずつ上げて12chメーターの合計レベルを確認してください。
ステムと12ch出力
標準セットは6つのステレオWAVを読み込み、各ファイルを1chモノラルとしてストリーミングします。Stem loaderではWAV、AIFF、FLAC、CAFを1〜24ファイルまで読み込めます。ファイル数が変わると、位相間隔と最小分離目標も自動調整されます。
チャンネル順
| 出力 | スピーカー | 出力 | スピーカー |
|---|---|---|---|
| 1 | Front C | 7 | Rear L |
| 2 | Front R | 8 | L2 |
| 3 | R1 | 9 | L1 |
| 4 | R2 | 10 | Front L |
| 5 | Rear R | 11 | Ceiling1 |
| 6 | Rear C | 12 | Ceiling2 |
UIは物理チャンネルを1〜12で表示します。SuperCollider内部の出力バスは0〜11です。12chメーターはエフェクト処理後の最終信号を表示します。
音量とサウンド面
Sound mesh thresholdを超えたオブジェクトだけが、音のある領域として幾何形状を作ります。判定にはWeb側の推定値ではなく、SuperColliderから返るオブジェクト別dBFSを使用します。
| しきい値以上の数 | 描画 | 意図 |
|---|---|---|
| 0–1 | 面なし | 単独音を粒子とグローで明確化 |
| 2 | グラデーション線 | 二点間の音響的な関係を表示 |
| 3 | 半透明三角形 | 最小の音響面を生成 |
| 4以上 | Delaunay三角形群 | 最大分散の二軸へ投影して安定した面を生成 |
三角形の頂点は投影後も元の3D座標を保持します。面のアルファは低く設定され、軌道、粒子、スピーカーへの接続が透けて見える設計です。
面が出ない場合は、まず各オブジェクト行のdBFSを確認します。音が鳴っている値より少し低い位置までしきい値を下げると、線→三角形→ポリゴンの変化を観察できます。
アーキテクチャ
独立版はルートのSpatial Object Laboratoryとランタイム状態を共有しません。専用のbridge、WebGL UI、SuperColliderグラフ、起動スクリプトをlissajous-sampler/内に持ちます。
controls + meters
single source of truth
stream + DSP + 12ch
| 要素 | 役割 |
|---|---|
| bridge/server.js | 状態管理、位相モーション、空間ゲイン、WebSocketとOSCの中継。 |
| bridge/params.json | UI範囲、軌道、エフェクト、メーター制限の共有スキーマ。 |
| webgl/app.js | 3D描画、粒子、Plexus、Delaunay面、UI同期。 |
| supercollider/ | ディスクストリーム、モノラル化、12ch空間DSP、実測メーター。 |
| start.sh | デバイス・素材・ポート確認、bridgeとSCの起動、ready待機。 |
| .runtime/ | アプリ所有PIDとポート情報。Git管理外。 |
起動・終了・トラブル対応
管理コマンド
./lissajous-sampler/start.sh
./lissajous-sampler/restart.sh
./lissajous-sampler/stop.sh
# 12ch以上のデバイスを確認
./lissajous-sampler/start.sh --list-devices
# 出力先を指定
./lissajous-sampler/start.sh --device "<12-channel-output-device>"
restart.shとstop.shは、このアプリが記録したNode bridge、sclang、scsynthだけを停止し、使用ポートが再利用できることを確認します。
確認ポイント
| 症状 | 確認 |
|---|---|
| Startできない | Bridge: connected、SC: ready、ステムがREADYか確認。 |
| 音が出ない | 12ch出力デバイス、Master、下流DAW/Loopbackのルーティングを確認。 |
| 面が出ない | オブジェクト別dBFSとSound mesh thresholdの関係を確認。 |
| 再起動できない | restart.shを使用し、孤立したsclang/scsynthを含めて管理終了。 |
| 素材を戻したい | Restore 1–6で標準のassets/{1…6}.wavへ復帰。 |
作業終了時はブラウザを閉じるだけでなく、./lissajous-sampler/stop.shを実行してください。SuperColliderの子プロセスとオーディオデバイスを確実に解放します。