張敬云 謝作如



你見過聲音的樣子嗎?在文學作品中,常常會將聲音進行視覺化,如白居易《琵琶行》中的“嘈嘈切切錯雜彈,大珠小珠落玉盤”,形象而生動地描述出聲音的樣子。
在互動藝術作品中,也常常會看到藝術家嘗試將不同的感官進行轉換。將聲音視覺化或者把圖像轉為聲音,是常見的藝術表達形式,如將一段或歡快或優美或震撼的音樂視覺化,以跳動的柱形或流水般的霓虹燈展示出來;將如仙樂般美妙的海豚之聲視覺化,以花團錦簇的圖像展示出來,帶給我們聽覺視覺的雙重體驗(如圖1)。而實現這類創意,肯定要選擇Mit的Processing軟件。這是一款藝術家用來“畫畫”的編程語言,能夠將各種奇妙的聲音變幻為美輪美奐的圖像,讓受眾感受到藝術創作的魅力。
原理分析
聲音是一種模擬信號,而計算機處理的只能是數值,所以存儲在計算機中的聲音文件都是經過處理之后的數字化文件。聲音的數字化是通過“采樣”和“量化”的方式,實現波形聲音模擬量的數字化。那么Processing又是如何實現聲音的視覺化呢?只要能夠獲得聲音的響度、頻率等信息,借助傅立葉變換之類的算法,解析出更多的信息,就能將其以柱形、圓形、線形或者任何你想描繪的圖形唯美地展現出來。
Processing是一個開源的編程語言,有很多人為其開發了各種開源的庫。聲音處理方面功能最強大、應用也最廣的是Minim庫。借助這個Minim庫,我們不需要理解傅立葉變換,就能夠分析出聲音的頻率、振幅、節奏等信息。Processing 3.3.6版本已內置了Minim庫,我們可以從“貢獻管理器”中安裝它。通過“速寫本—引用庫文件—添加庫文件”打開貢獻管理器的Libraries選項卡,在Filter框中鍵入Minim,從列表中選擇庫,然后單擊Install即可。
基本代碼
首先我們來看一個用Processing將聲音視覺化的例子,基本代碼如上頁表1所示。
運行程序,開始播放音樂,Processing窗口會有波浪起伏的線條跳動(如圖2),其效果是根據實時獲取的音頻頻率實現的,當頻率高時,線條的上下起伏大,當頻率低時,線條的上下起伏小,是不是像極了我們起伏不定的心跳變化?
基于這個作品,我們具體分析一下用Processing將聲音視覺化的過程。這個程序由setup和draw兩個函數組成,其中setup僅運行一次,draw則在不斷循環。程序讀取聲音文件“burning.mp3”的left.get(),即左聲道的數值,然后用line函數畫出線條。因為draw函數在循環執行,于是就顯示出動態的線條跳動效果。
Minim庫的Minim對象和AudioPlayer對象的常用方法如表2所示。需注意的是,left.get()和right.get()返回的值是-1和1之間的小數。
創意實現
根據上文給出的用Processing將聲音視覺化的基本代碼,我們能夠勾勒出更多有趣又有藝術氣息的視覺化作品。如圖3所示,隨著音樂的節奏,小矩形的粗細、長短都會一起發生變化,會不會讓你想到一種叫“排鐘”的打擊樂器呢?那是由一些長短有別的鋼管或銅管組成的樂器,用木槌敲打便會產生清脆、悅耳的旋律。觀看這種互動效果,你會有一種錯覺:這些炫酷的動態效果并非由音樂產生,而是由于它們的律動才產生了音樂。
這個創意的實現,是根據實時獲取的左聲道及右聲道的數值來畫多個矩形,矩形的長度和寬度分別由數值的大小來決定。核心代碼如表3所示(為避免重復,只保留void draw()的代碼,下文中出現的案例代碼同理)。
為了營造歡快唱歌的氛圍,很多人去KTV,第一件事就是把房間的“星空燈”打開。這個“星空燈”我們更愿意稱之為“霓虹燈”,五彩繽紛的,似乎就是我們美妙的歌聲才使得燈光跟著歡快起來。同樣,在激情四射的演唱會上,那些各色的互動熒光棒似乎也是隨著現場動感的節奏而舞動。那么利用Pocessing,能否將“放眼望去的霓虹燈”或“漫天的星光”實現真正意義上的隨著音樂旋律而閃耀呢?答案是肯定的。
根據實時獲取的音頻頻率,確定圓的大小及顏色。代碼如表4所示。
上面展示的幾個作品都是用Processing將現有的音樂進行視覺化,如果想做聲音的即時視覺效果,又該怎樣實現呢?很簡單,使用麥克風就解決啦!具體代碼如表5所示。
運行程序,窗口上圓點的大小會隨著麥克風音頻頻率的高低而變化,當頻率高時,圓點變大,當頻率低時,圓點變小。看著屏幕上的圓點隨著聲音奇妙地發生變化(如圖4),就像感覺到自己的心跳在“砰砰砰”緊張又有韻律地跳動一般。
從傳統意義上講,聲音屬于耳朵,是用聽覺體驗美感的藝術。但隨著新媒體技術的發展,聲音也可以屬于眼睛,甚至皮膚等感覺器官。用視覺來理解聲音的藝術魅力類似文學修辭手法中的“通感”,生活中常見的音樂噴泉、噴水音響等,都是試圖把聲音視覺化的典型。而這些效果,都可以用Processing來實現。
你希望聲音是什么樣子?請用Processing將你喜歡的聲音勾勒出你喜歡的圖案吧,藝術和科技本來就可以很好地結合。