口哨合成器 Mac App
原文由 Jeff Kaufman 于 發布,訂閱此部落格
我那個用口哨聲來控制合成器的程式,現在已經在 Mac App Store 上架了:
完全免費、沒有廣告,而且是開放原始碼。如果你有 Mac 又喜歡吹口哨,不妨試試看?你會需要外接麥克風、耳機(有線,才能盡量降低延遲),或是兩者都需要;我會推薦前者。
活在這個精靈時代,我讓 Claude 把整個實作大幅重寫了一遍,現在延遲更低、不再卡頓,也有更多音色可以選。而且如上所述,它現在已經是個 Mac App 了。
延遲是最快也最容易解決的:我把麥克風對著耳機,然後請 Claude 想辦法把延遲壓下來。這樣它就有足夠的資訊來量測來回延遲,試了幾種不同的方法後,才發現需要用到callback API 和其他一些調整。這樣就把音訊來回時間(不含音高偵測與合成)從 80ms 降到了 5ms。
要修好卡頓,關鍵是把邏輯拆成一個負責偵測、再下指令給合成器的架構。諷刺的是,這次重構又回到了我最初的設計,也就是五年前被我捨棄、改用一個奇怪點子之前的版本——那個點子聲音確實比較好,但限制也非常多。
換成新架構後,要寫新的音色就容易多了。或者說,至少我猜是這樣,畢竟實際上都是 Claude 在寫。我讓它腦力激盪各種低音音色、寫出原型,然後我們一起反覆調整到我滿意為止。這包括了一個無八度感的低音,當你往高處吹時,它會慢慢改變泛音的混合比例,讓聽起來的八度維持不變。
我也終於做出一個自己還算滿意的高音音色。這是我從一開始就一直在嘗試的事,但之前試過的我全都不喜歡。這對 Claude 來說也比較困難:它原型的低音音色我有七成都喜歡,但高音音色到最後只有一個真的值得拿來演奏。那是一個拉桿式(Hammond)風琴。我們的耳朵在高音域就是挑剔得多。還有一個原因是低音的旋律本來就比較單純(比較不容易出錯),而且音準更快會被聽出來(在別人察覺之前,能完全對準音高的時間更少)。
我還想再多加一些高音音色,但主要的瓶頸在於想不出到底哪種音色(a)聽起來還可以、(b)又是 Claude 做得出來的。我花了很多時間想讓它寫出好聽的長笛音色,甚至還給它聽了真實長笛的聲音範例,但就算它花了很長時間做物理建模,結果還是沒有一個讓我滿意的。我也試過各種合成器主奏音色和簧片鋼琴(Rhodes),都沒有成功。
回頭想為什麼拉桿風琴聽起來還不錯,我覺得很大一部分是因為旋轉喇叭(Leslie)為原本會很死板的長音增添了很多生命力。想到這點,我也讓 Claude 做了一個手風琴的音色,還算不錯,但我還不夠滿意。
我還加了一個設定,會比你實際吹的音高低五度發聲(D -> G),也就是讓你的口哨去補上第三泛音的倍頻位置。這個點子是從Ugo Conti 那裡得來的,很神奇的是,只要音量開得夠大,大腦很快就能適應這種控制方式。這讓你可以用口哨吹出一些原本超出你音域的調性的曲子。
我以前從來沒有透過 Mac App Store 發布過東西,部分原因是 Apple 的審核流程出了名的挑剔。我決定看看能不能讓 Claude 帶著我走完整個流程。不過在那之前,我還需要一個圖示。我請 Gemini 幫我做一個,在追加了幾個提示後得到了:
作為概念的呈現,這個不算太差,但真的太花俏了。我讓它再試試看更簡潔的版本:
接著我讓 Claude 用程式碼來複刻這個設計,產生不同尺寸、細節逐級簡化的圖示。這對 Claude 來說非常困難,我得幫它很多忙。它始終沒能做到完全正確,我還得再簡化一點,但我覺得已經夠好了:
在 128x128 的尺寸下,螢幕上的波形就不見了:
而在 32x32 時,連控制鈕都不見了,只剩下一個俗豔綠色口哨的印象:
要上架到 App Store,得先付費加入開發者計畫(看來我已經沒有以前那麼小氣了),還要驗證身分。我當時沒注意到,Apple 把我證件上的姓氏讀成了「Kaufhan」。我得去跟 Apple 支援聯絡,不過他們最後有幫我修正。剩下的流程都是 Claude 帶著我完成的,包括截圖和製作示範影片:
這是 AI 作為輔助工具的一個好例子:如果全部都要我自己動手寫,我大概永遠不會去做這些事。我們一起合作,做出了比我自己手刻的合成器好聽得多、用途也廣得多,而且還能直接從 App Store 安裝的東西。我打算好好把握這個空窗期——AI 已經夠強到能幫上大忙,但又還沒強到讓我無事可做的時候。
隨機一篇部落格


留言
登入後參與討論