SOUND LAB MANUAL
なまず反応拡散シーケンサー 説明書
Gray-Scott型反応拡散で育つ2次元のChemical Gardenを、独立した3本のScannerで読み取って演奏するブラウザ楽器です。模様を作る、育てる、音として収穫する、という順で操作できます。
このツールでできること
- Gray-Scott反応拡散を実計算し、DOTS、WORMS、MAZE、WAVESなど10種類の実パターンからChemical Gardenを育てます。
- Scanner A/B/Cは種類、方向、読取BIN数、音楽レート、Trigger、音色を別々に持ちます。画面描画とは別にAudioContextの先読み時計で発音を予約します。
- 実際の連結領域からColonyとBirth・Death・Merge・Splitを検出し、追従走査やイベントアクセントへ利用します。
- WHY THIS NOTE?で位置→音程、領域サイズ→Gate、V濃度→Velocity、反応量→Filterの対応を確認できます。
- FIELDを含むSnapshot A〜DとMorph、最大5分のWAV録音、実発音のType 1 MIDI、なまずポシェット保存に対応します。
クイックスタート
- EASYのDOTSを選び、CanvasをPLANT BRUSHで一度なぞります。初期模様へ局所的なV濃度が加わります。
- 「▶ GROW + PLAY」を押します。模様はSimulation Clockで育ち、Scanner Aの音はAudio Clockで予約されます。
- Canvas上のMANUAL SCANを選んでドラッグするか、「SCAN NOW」を押し、触れた位置から音を収穫します。
- WHY THIS NOTE?で、最後の音のPosition、Region Size、V Concentration、Reaction、Triggerを確認します。音が出ない走査はSilent Reasonを表示します。
- GROWでChemistry Padを少し動かし、HARVESTでScanner BをLIVEにして、横方向のEdges Triggerを重ねます。
- 気に入った状態はSnapshotへCAPTUREするか、SAVE PROJECTでFIELDごとなまずポシェットへ保存します。
EASY / GROW / HARVEST / ADVANCED
- EASYはPlant、Pattern選択、Chemistry Pad、Play、Manual Scanだけで始められる入口です。
- GROWはChemistry Pad、10 Pattern Atlas、Brush Size/Strength、6 Macroをまとめます。
- HARVESTはScanner A/B/C、Pitch Field、Freeze Sound、WAV/MIDI/Project出力を扱います。
- ADVANCEDは生のdu/dv/Feed/Kill、解像度、Boundary、Audio安全上限、Colony、色、Snapshot A〜Dを開きます。
Simulation ClockとAudio Clock
FIELDはrequestAnimationFrame側のSimulation Clockで進みます。Gray-Scott更新は dU/dt = du∇²U - uv² + feed(1-u)、dV/dt = dv∇²V + uv² - (feed+kill)v を重み付きLaplacianで離散化しています。
音は25msごとにAudioContext.currentTimeを読み、約120ms先まで予約します。描画Frameが揺れても、Scannerの音楽レートをCanvas Frame数で進めません。
ScannerとWHY THIS NOTE?
- Vertical ScannerはRegionのY位置、Horizontal ScannerはX位置を高い側から低い側へScale上の音程へ写します。
- Region SizeはGate、V濃度はVelocity、ReactionまたはTrigger特性はFilter、X位置はPanへ写します。
- PeaksはVの局所的な山、Edgesは閾値交差とGradient、Reactionはuv²、Motionは前回検出時からのV差分、Birthは実際の新Colonyイベントを使います。
- 条件を満たすRegionがない走査は無音にし、Scanner、判定値、Threshold、理由をSilent Reasonへ表示します。
Colonyとイベント
ColonyはV濃度がColony Level以上で上下左右につながる実セル集合です。前回の集合との重なりと近さからID、Age、移動量を更新し、Birth、Death、Merge、Splitを判定します。
FIELD右の一覧からColonyを選ぶとFollow TargetがSelectedになり、Follow Colony Scannerがその重心へ移動します。EVENT ACCENTSをONにするとイベント種類に応じた音色で別トラックへ発音します。
Freeze World / Freeze Sound / Grow Behind
- FREEZE WORLDはSimulation Clockだけを止めます。Scannerは固定FIELDを引き続き走査できます。
- FREEZE SOUNDは直近4/8/16件の実発音をLOOPへ固定し、新しいScanner読取を止めます。
- GROW BEHINDがONならFreeze Sound中もFIELDは成長し、解除時に進んだ世界を再び収穫します。OFFなら音とFIELDを同時に保持します。
Snapshot A〜DとMorph
CAPTUREは設定だけでなくU/V FIELD、Step、Scanner、Macro、色、音楽設定を保存します。RECALLはFIELDを含めてそのSceneへ戻ります。Snapshot名は直接変更できます。
Morphは2つのSnapshot間でChemistry、BPM、Master、Gate、Voices、Macroと同解像度のU/V FIELDを補間します。解像度が違う場合、FIELDは50%地点で切り替えます。
各パラメータ
| 項目 | 範囲・選択肢 | 役割 |
|---|---|---|
| Chemistry Pad / Feed | 0.010〜0.080 | Padの横軸。反応系へUを供給する速度を変え、成長密度と形態を動かします。 |
| Chemistry Pad / Kill | 0.040〜0.100 | Padの縦軸。Vを除去する速度です。Feedとの組合せでDOTS、WORMS、WAVES、CHAOSの領域を探ります。 |
| Diffusion U | 0.02〜0.3 | ADVANCEDでU濃度場の拡散係数を調整します。 |
| Diffusion V | 0.02〜0.2 | ADVANCEDでV濃度場の拡散係数を調整します。 |
| Evolution Speed | 0.20〜4.00× | Simulation Step内の時間係数です。ScannerのMusic Rateとは独立しています。 |
| Resolution | 64 / 96 / 128 / 160 | ADVANCEDでFIELD解像度を選びます。変更時はFIELDを再生成します。 |
| Seed | 1〜2147483647 | 初期配置の決定論的な種です。同じPattern、Seed、ResolutionからRESETすると同じ初期FIELDを再生成します。 |
| Boundary | Wrap / Clamp | FIELD端の境界条件です。Wrapは反対側へつなぎ、Clampは端の値を参照します。 |
| Scanner Type | Vertical / Horizontal / Manual / Follow Colony | 縦線、横線、手動Crosshair、Colony追従の読取位置をScannerごとに選びます。 |
| Scanner Detail | 16 / 32 / 64 / 128 | 1本の線を解析する実BIN数です。大きいほど細い領域を分離します。Music Rateは変えません。 |
| Scanner Direction | Forward / Reverse / Ping Pong | 実際の走査Step順を正方向、逆方向、往復へ切り替えます。 |
| Trigger / Threshold | Peaks / Edges / Reaction / Birth / Motion、0.02〜0.80 | Vの山、濃度境界、uv²反応量、新Colony誕生、FIELD差分を別々の判定式で検出し、感度を調整します。 |
| Music Rate | 1/4 / 1/8 / 1/16 / 1/32 / 1/64 | BPMからScannerの次回Audio Clock予約時刻を決めます。Detailとは独立しています。 |
| Root / Scale | C〜B / Hirajoshi・Major/Minor Pentatonic・Chromatic・Custom | 縦または横位置を割り当てる音階です。画面右端のPitch Guideも同じ設定を使います。 |
| Freeze World / Freeze Sound | ON / OFF | WorldはFIELD更新だけを停止。Soundは直近の実発音をLoopし、新しいScanner読取を停止します。 |
| Octave Range | 1〜4 | 音域をカバーするオクターブ数です。 |
| Voice Limit | 1〜24 | 全Scannerを合わせた同時発音の安全上限です。 |
| Instrument | Sine / Triangle / Square / Saw / Bell / Pluck / Marimba / Chip Lead / Chip Bass | Scannerごとの音色です。 |
| Gate / Level | 0.10〜1.50× / 0〜100% | Region Sizeから作る音長の倍率とScannerごとのVelocity倍率です。 |
| Brush Mode | Plant / Erase / Splash / Noise / Trail / Stamp / Manual Scan | FIELDへ植える、消す、リング状に散らす、Noiseを加える、連続描画する、形を押す、Scanner Aを動かす操作です。 |
| Brush Size / Stamp | 0.008〜0.20 / Dot・Ring・Cross・Spiral・Cluster | Brushの影響範囲とStampの実形状です。 |
| Colony / Macro / Action | Colony Level 0.05〜0.80、6 Macro、Bloom / Drop / Erupt | 連結領域の判定値と、基礎設定を壊さず有効Chemistry・検出密度・Filter・空間量へ重ねる演奏操作です。 |
プリセット
- DOTS / WORMS / MAZE / WAVES: 初期配置とFeed・Kill・拡散・速度がそれぞれ異なり、点、線、迷路、波を育てます。
- CORAL / FRAGMENTS / DENSE: 枝、断片、高密度領域を作り、EdgesやReaction Triggerへ向く設定です。
- SOFT / CHAOTIC / CALM: 変化速度と余白が異なり、低密度演奏、イベント中心、高精度Manual Scanを試せます。
- Atlasの各サムネイルは装飾画像ではなく、64×64の反応拡散をその場で進めて描いたPreviewです。
保存・共有・書き出し
- 最後のProjectとFIELD、Snapshot A〜Dは同じブラウザへ自動保存します。Audioは自動再生しません。
- SAVE PROJECTは現在のFIELD、全設定、Snapshot A〜Dを1つのproject-stateとしてなまずポシェットへ保存します。旧形式はV2へ移行し、存在しない値は安全な初期値へ補います。
- COPY SCENE URLはFIELD本体を含まない軽量URLです。受信側では設定とSeedを復元し、初期FIELDを再生成します。
- WAVは実際のMASTER出力を最大300秒録音し、停止後にPCM WAVとしてDownloadまたはPocket保存できます。
- MIDIは再生開始後に実際に発音予約されたNoteだけを、Scanner A/B/C、Colony、Loop別のType 1 Trackへ書き出します。Pocket保存後はMIDI Editorへ直接渡せます。
おすすめ設定
- 最初の演奏: DOTS、Scanner A Peaks、Detail 32、Music Rate 1/8、Threshold 0.20、Voice Limit 8。
- 輪郭の対話: WORMSまたはMAZE、Scanner B Horizontal / Edges、Reverse、Detail 64、Bell。
- 生態イベント: CHAOTIC、Colony Level 0.22、Scanner C Follow Colony / Birth、EVENT ACCENTS ON。
- Ambient Loop: CALM、Gate 1.0、Space 70%、直近8 EventをFREEZE SOUND、GROW BEHIND ON。
トラブルシューティング
- 音が出ない場合はPLAYまたはSCAN NOWでAudioContextを許可し、WHY THIS NOTE?のSilent Reasonを確認します。Thresholdを下げる、PLANTでFIELDへVを足す、Scanner TypeをManualにする順で切り分けます。
- Birth Triggerが無音の場合は既存Colonyではなく新しいBirthだけが対象です。ERASE後に別の場所へPLANTするか、CHAOTICをRESETして試します。
- 重い場合はResolutionを64または96へ下げ、Voice LimitとLIVE Scanner数を減らします。Audio予約はCanvas描画と独立していますが、端末全体の負荷は減らす必要があります。
- FREEZE SOUNDが無音の場合は、先に通常再生で4件以上鳴らしてから固定します。
- WAVを作れない場合はMediaRecorder対応の最新版ChromeまたはEdgeで短い録音を試します。
データ・プライバシー
FIELD計算、Canvas描画、音声合成、Colony解析、MIDI/WAV作成はブラウザ内で行います。自動保存はlocalStorage、明示的なProject・MIDI・WAV保存はなまずポシェット(IndexedDB)を使います。外部サーバーへ自動送信しません。共有URLにはProject名と設定値が含まれますが、FIELD本体と録音音声は含みません。
FAQ
- 同じSeedなら同じ演奏になりますか?
- 同じPattern、Seed、Resolution、Chemistry、BoundaryからRESETすると初期FIELDとStep列は決定論的です。ただしBrush操作、再生開始時刻、Freeze、Scanner設定を変えると実発音列は変わります。完全な途中状態はSnapshotまたはPocketへFIELDごと保存してください。
- Detailを上げるとテンポも速くなりますか?
- いいえ。Detailは線を読むBIN数、Music RateはAudio Clock上の予約間隔です。互いに独立しています。
- FREEZE WORLDとFREEZE SOUNDの違いは何ですか?
- FREEZE WORLDはFIELD更新だけを止め、Scannerは固定FIELDを読めます。FREEZE SOUNDはScanner読取を止め、直近の実発音をLoopします。GROW BEHINDでLoop中のFIELD更新を選べます。
- 共有URLとPocketは何が違いますか?
- 共有URLは軽量な設定とSeedだけです。Pocketは現在のU/V FIELDとSnapshot A〜Dまで保持します。途中の生きた世界を正確に残す場合はPocketを使います。