改編自 原創作品
頁面之外的第一個音
缺少的房間
那個引擎叫作雲雀,因為她的第一位設計者相信,每個程式都值得擁有一種清晨的聲音。
雲雀不讀取私密欄位,也不把頁面帶走。她只觀看結構:標題、連結、圖片、深度、間距,以及頁面安靜的文法。她從這些痕跡生成樂譜。按鈕成為細小的打擊記號;深邃的樹狀結構拉寬音域;擁擠的導覽則變成一段坐不住的琶音。
接著,雲雀發現了一個問題。她能生成音樂,卻沒有地方保存使音樂誠實的條件。
聽者可以按下播放,聽見頁面變成一首曲子。之後,聲音消散。若頁面改變,也沒有人知道新旋律來自新的結構,還是來自某隻看不見的手。引擎有了樂譜,卻沒有一間聆聽的房間。
於是雲雀在頁面之外建造了一間房。
房間不保存什麼
房間裡有架子,但架子上沒有 HTML。
它保存結構指紋、確定性種子、映射 profile、聲部名稱,以及每個音符如何被生成的短路徑。它保存樂譜,也把解釋放在樂譜旁邊。
它不保存表單值。不保存 query string。不保存有人輸入私密欄位的文字。它不把頁面上傳到遙遠的檔案庫,再把副本稱為理解。
訪客問:「那還剩下什麼?」
「足夠回來的東西,」雲雀說,「但不足以把它帶走。」
第一個架子標著 BALANCED。旁邊是 CONTENT-FORWARD、NAVIGATION-FORWARD、MEDIA-FORWARD 與 FORM-FORWARD。它們沒有任何一個會書寫音符,只是改變既有結構聲部被聽見的重量。
房間學會了第一條規則:profile 可以向頁面傾斜,卻不能取代頁面。
拒絕一張臉的頁面
有一個頁面來了,沒有任何人熟悉的標題。它有不相稱的段落、一個固執的頁尾,以及一組每當風吹過伺服器就會改變順序的連結。
訪客想給它一張人臉。
「選一張吧,」他們說,「一個名字、一個封面、一種情緒。這樣我們才能記住你。」
頁面透過雲雀的結構回答。旋律從標題升起,低音跟隨幾何,鐘聲在圖片聚集的地方出現。結果不是肖像,而是一種被遇見的方式。
房間第一位策展人米拉聽了兩次。
「第一個版本不是頁面,」她說,「那只是一次與頁面的相遇。」
雲雀把 profile 與 fingerprint 分開保存。她保存這次相遇的日期。頁面改變時,舊聲音仍被標記為舊的相遇;新的聲音可以不同,卻不必被稱為損壞的記憶。
聆聽的平台
人們開始保存 preset。
一個 preset 讓文字向前說話;另一個讓導覽帶著更亮的邊緣;第三個讓圖片像大廳遠端的鐘聲一樣抵達。那是本地的選擇,不是送回頁面的指令。
讀者問:「這些 preset 讓雲雀變成作曲家了嗎?」
「不,」米拉說,「作曲家可以從空無一物開始。雲雀必須從頁面已經做過的事開始。」
「如果我想要另一首歌呢?」
「那就改變你聆聽的方式,或改變頁面。不要假裝頁面做過它沒有做過的事。」
平台在這個限制周圍長大。它提供給空氣的 WAV,也提供保存樂譜的 MIDI。它把 fingerprint 放在 profile 旁邊。它解釋哪種結構餵養低音、哪些標籤推動琶音,以及為什麼結尾變得安靜。
解釋不是註腳。它是音樂身份的一部分。
頁面之外的第一個音
有一天晚上,最初的頁面消失了。
房間仍然擁有它的 fingerprint、樂譜、聲部路徑與最後一次 render。雲雀可以重播那次相遇,卻不能宣稱頁面仍然存在。
米拉關掉燈。
片刻之間,平台沒有產生任何聲音。
接著,檔案庫釋放了舊樂譜——不是取代消失的頁面,也不是證明頁面屬於檔案庫。那只是一次曾經發生過的關係紀錄。
雲雀終於明白自己缺少什麼。
音樂生成平台不是製造歌曲的工廠。它是一個讓結構保持可聽、卻不被竊取的地方;一個讓頁面改變、卻不必失去歷史的地方;也是一個讓聽者分辨新聲音與舊錄音的地方。
所以,頁面之外的第一個音不是旋律。
那是讓旋律能夠回答自己從何而來的空間。在那個空間裡,頁面仍然是作者。