SOUND LAB MANUAL
なまず振り子シーケンサー 説明書
複数の振り子を120Hz固定stepで動かし、中央通過・折り返し・角度Gateを実Triggerとして音へ変換します。MAX版では振り子を直接触り、同期を壊し、CouplingやSYNC BURSTで再び揃える体験を中心に再構成しました。
まず試す操作と生成方法
初めての方へ
最初の1分は、ここだけ試してください
- Presetを選び、PLAYします。
- Pendulumをドラッグして動きを変えます。
- 近い案はVARIATION、より大きな案はMUTATE/WILDを使います。
ランダム・自動生成はどこ?
- 押す場所
- VARIATION/MUTATE/WILDは強度順にPhysics、Trigger、Sound、Mapping、Effectsを変えます。TODAY'S SEED/NEW SEEDはSeedだけを変更し、それだけでは現在設定を生成し直しません。
- 何が変わるか
- PHYSICS/TRIGGER/SOUND/MAPPING/EFFECTS Lockを保ちますが、Seedと名前は更新します。
- 気に入った部分を残す
- 確定した操作はUNDO/REDO 30状態です。気に入った案はSceneまたはProjectへ保存します。
- 同じ結果を残す
- 変化は乱数から作られますが、表示Seedだけでは同じ案を再生成できません。完成状態をProjectで保存します。
このツールでできること
- Performance Stage上のBobをPointerで直接dragし、現在角度と角速度へ介入できます。
- 実計算のSynchronizationをSYNC %、状態、短い履歴として表示します。
- WHY THIS NOTEはAudioへ送った実EventからPitch / Velocity / Pan / Filter / Trigger原因を表示します。
- PUSH、SYNC BURST、BREAK SYNC、DROP、Simulation Freezeは基礎Paramsを壊さないRuntime介入です。
- Scene A–D、STOP中のParameter Morph、Variation / Mutate / Wild、カテゴリLock、Undo / Redoに対応します。
- Project v2で現在設定、Scene A–D、LockをPocketへ保存し、旧v1 Paramsも互換読込します。
- 実Trigger TimingのMIDI、Master WAV録音、MIDI Editor、Share URL、Tilt、限定Hapticに対応します。
クイックスタート
- FIRST SWINGまたはSYNC LABを選びます。
- ▶ PLAYを押します。Play / Stopは同じボタンです。
- StageのBobをdragして同期を崩し、SYNC BURSTまたはCoupling Strengthで戻してみます。
- 右側のWHY THIS NOTEで、鳴った音がどのMotion値から作られたか確認します。
1. SYNC / DESYNC / RE-SYNC
Synchronizationは各振り子の角度と正規化角速度から位相を作り、円平均の長さを0〜100%へ変換した実指標です。UIだけで作った値ではありません。
BREAK SYNCはRuntime stateへ決定論的な位相差を加え、SYNC BURSTは一定時間だけGlobal Couplingを強めます。どちらも保存Paramsを書き換えません。
2. Bobを直接演奏する
BobをdragするとPointer位置から角度を計算し、移動速度から角速度を与えます。Mouse / Pen / Touchは同じPointer Events経路で処理し、Stage操作中のページスクロールを抑えます。
3. WHY THIS NOTE
- Trigger Mode / Direction / Angle / Angular Velocity / EnergyをEventへ保存します。
- 同じEventへPitch / Velocity / Pan / Filter / Gateの実Mapping結果も保存します。
- Canvas Pulse、History、WHY、MIDIは同じ実発音Eventを基準にします。
4. Performance介入
- PUSH: 選択Bobまたは全体へImpulse。
- SYNC BURST: 約2.4秒だけGlobal Couplingを強化。
- BREAK SYNC: Runtime stateだけへ位相差を追加。
- DROP: 約1.5秒Drive OFF + Damping増加。
- FREEZE SIM: Simulationだけ停止。Sound Loop Freezeではありません。
- RELEASE: 一時介入とFreezeを解除。
5. Scene A–D / Morph
SceneはPendulum Params一式をA〜Dへ保存します。Recallは現在設定へ戻し、Morphは連続値を補間し、Instrument / Scale / Trigger等の離散値は50%地点で切り替えます。構造Params再初期化を避けるためMorph SliderはSTOP中のみ有効です。
6. Variation / Mutate / Wild とLock
現在の状態を基準に変化量を3段階へ分けています。Physics / Trigger / Sound / Mapping / EffectsをLockすると、そのカテゴリはDiscoveryから除外されます。大きな変更はUndo / Redoできます。
7. Tilt / Haptic
Tiltは対応端末でのみ表示され、Calibration後の入力をRuntime Torqueへ1回だけ適用します。HapticはOpt-inで、強い同期達成とScene Captureだけに限定し、全Triggerでは振動しません。
各パラメータ
| 項目 | 範囲・選択肢 | 役割 |
|---|---|---|
| Pendulum Count | 3〜16 | 同時に動く振り子本数です。構造変更なのでRuntimeを再初期化します。 |
| Length / Spread | 0.4〜2.2 / 0〜100% | 固有周期の中心とばらつき。Length差が周期差とPitch Mappingへ影響します。 |
| Gravity | 0.25〜2.0× | 復元力へ使うGravity倍率です。 |
| Damping | 0〜100% | 角速度へ作用する減衰。高すぎると同期を観察する前に静止します。 |
| Drive | ON/OFF + 0〜100% | 中央付近で不足Energyを補い、演奏を持続させます。 |
| Coupling | OFF / Neighbor / Global + 0〜100% | Neighborは左右、Globalは全体平均との差からCoupling Forceを計算します。 |
| Trigger | Center / Turning / Angle | 中央横切り、折り返し、指定角度Crossを実判定します。 |
| Quantize | OFF / 1/16 / 1/8 / 1/4 | Triggerの実発生後、AudioContext基準の未来Gridへ予約します。 |
| Mapping Router | Pitch / Velocity / Pan / Filter / Gate | Motion値をAudio Parameterへ接続します。Recipe適用後もAdvancedで個別編集できます。 |
| Tilt | 対応端末のみ | 許可・Calibration・Sensitivity・Dead Zone・Smoothing等を使い、Runtimeへ追加Torqueを与えます。 |
プリセット
- FIRST SWING: 標準的な8振り子。最初のPlay向け。
- SYNC LAB: Coupling ONで再同期が見えやすい設定。
- POLYRHYTHM: Length差で周期がずれるPendulum Wave。
- CHAOTIC BELLS: 位相差とTurning TriggerをBellで演奏。
- SLOW WAVE: 低Gravity・長い振り子・Reverbでゆっくり観察。
保存・共有・書き出し
- Pocket Project v2は現在Params、Scene A–D、Lockを保存します。旧v1のParams JSONもそのまま読み込めます。
- Share URLは軽量なParamsだけを保存し、Scene / Runtime stateは含めません。URLを開いても自動再生しません。
- MIDIは実Trigger EventのPitch / Start / Duration / Velocityを使用し、非等間隔Timingを保持します。
- WAVはAudio Engineの最終Master Outputを録音するため、Coupling、Performance介入、Scene変更、Effectsの結果が入ります。
- localStorageには最後のParams、Visual、Scene、UI Lock設定を保存します。
おすすめ設定
- 同期の違いを見るときはSYNC LABから始め、BREAK SYNC → SYNC BURSTを交互に使います。
- Pendulum WaveでQuantize OFFにすると物理Trigger本来の非等間隔Timingを聴きやすくなります。
- 良い状態ができたらSceneへCaptureし、Pocket Project v2へ保存します。
トラブルシューティング
- 音が出ない場合はPLAYまたはStage操作でAudioContextを開始し、端末音量を確認します。
- 同期が上がりにくい場合はLength Spreadを小さくし、CouplingをGlobal / 60%以上にします。
- Bobをdragできない場合はStage上の重り本体を触り、ページの別領域をdragしていないか確認します。
- Scene Morphが動かない場合はSTOPしてください。再生中は構造Paramの連続再初期化を防ぐため無効です。
- Tiltが表示されない場合、そのブラウザ/端末ではDevice Motionを利用できません。
データ・プライバシー
Physics、Audio Mapping、Scene、Project、MIDI/WAV生成はブラウザ内で完結します。PocketはIndexedDB、最後の設定やSceneはlocalStorageを使用し、外部サーバーへ自動送信しません。
FAQ
- SYNC %は演出用ですか?
- いいえ。各振り子の位相を実状態から計算したSynchronizationを表示しています。
- SYNC BURSTで保存設定が変わりますか?
- 変わりません。Runtimeだけへ一定時間のGlobal Coupling Overrideを適用します。
- MIDIは等間隔Stepになりますか?
- Quantize OFFでは実Trigger時刻をそのままtickへ変換します。Quantize ONではAudioへ予約したGrid Timingを使います。
- 旧Projectは読めますか?
- はい。旧v1 Params JSONを検出してnormalizeし、MAX版へ読み込みます。