混音台 大地與川脈的編織・聲音系統後台・讀的是 iframe 裡真的牆

連線中…
 ↑ 這是真的 /wall/(縮成一條)。織口在哪、章節在哪,就是牆上正在發生的。沒聲音就直接點一下這條預覽。
iframe 裡的 AudioContext 要有一次手勢才會出聲;按了會對牆頁派 pointerdown 並 resume()。
試聽 20 秒:

和聲現況

牆餵進來的資料(最近一次 update)

Layer 表 — 規則從程式的說明常數抄;活動量=最近 2 秒真的響過的事件數/秒;gain 直接動 engine.buses(既有節點);EQ/Reverb 是 mixer 頁的可選插入

規則(出處)狀態機現況活動量/s最後事件bus gain調整(只在這頁)

四層時間軸 — 橫軸=小節(左起本章起點,畫到已排程的小節;⏳=排好還沒響);播放頭跟織口走;底色=該章鍵盤模式;資料=conductor 排程時真的排出的事件

Melody:每個音一格,顏色=聲部(subject 金/answer 藍/bass 紫/soprano 綠),實心=真鋼琴取樣、空心=合成器。Chord:級數+和弦+voicing,紅線=終止式小節。Bass:細藍=伴奏音型、橘=織法低音(粗=重音)。Drum:八種動作各一道,高度=力度。

① Markov chain(markov.js buildChain → P;旋律由 walk 走出來)

節點=音階級數(0–6,下面是該章的音名);邊粗細=轉移機率、≥14% 標 %;亮的=此刻正在響的旋律音落在哪一級。

④ 和聲進行(classical.js SECTIONS[章].prog)

紅框=終止式那一格(progBars 的最後一小節,伴奏強制退回 twice);亮的=正在響的小節落在哪一格。

② 伴奏音型狀態機(accompaniment.js FIGURES × intensity.js HeatState)

逐級升降(不跳級)、每級最短停留 hold 4/twice 3/alberti 4/broken 3/pulse8 2/drive16 2 小節;黃線=熱度想去的級數;終止式小節強制 twice。

③ 鼓組狀態機(weaveDrums.js DRUM_LEVELS × HeatState)

同一台熱度引擎(人數/排放集中/屬和弦推);最短停留 4/3/3/2/2 小節;每 8 小節尾加過門。

章節 × 樂器表 — 全部從 classical.js/sampler.js/weaveBass.js/weaveDrums.js/loomSfx.js/intensity.js 的表讀;亮的列=現在這章

訊號鏈 — 照 conductor init() 的 connect() 畫;每個節點的數值每 100 ms 從真的節點讀。虛線=送去埤塘空間;綠=mixer 頁自己加的(牆上沒有)

總線與限幅(既有節點,直接調)

匯出/還原(mix/v1)

⚠️ 這份 JSON 牆頁不讀。牆要吃這份要另外接、要哲宇拍板(見 /AUDIO-MIXER.md)。最後一組會記在這台瀏覽器的 localStorage,下次開 /mixer/ 會問你要不要套用。
at (s)Δ now種類音/內容力度長度來源規則