大數(shù)據(jù)文摘出品 來源:IEEE 編譯:張睿毅 也許你去過的夜店,,負(fù)責(zé)hold住全場(chǎng)音樂的一般是個(gè)DJ,,可能是一位帥氣的小哥哥,或者是一位漂亮的小姐姐,,左手扶著耳機(jī),,右手在打碟機(jī)上飛舞。 但是如果你去過英國伯明翰舉行的2013 Algorave Fierce Festival(盡管現(xiàn)場(chǎng)也是昏暗的燈光和刺耳的音樂),,但你將會(huì)看到這樣的一個(gè)奇怪的場(chǎng)面:兩位發(fā)際線比較高的中年男人站在一個(gè)大屏幕前面,,擺在桌子上的不是打碟機(jī)而是電腦之類的電子設(shè)備,電腦屏幕上是一行行代碼,。 Algorave Fierce Festival里面的Algorave,,來自于algorithm和rave的結(jié)合,,是指用實(shí)時(shí)編碼(live coding)創(chuàng)造舞曲,實(shí)時(shí)編碼算是一種表演藝術(shù),,表演者通過編輯和重新編程合成器來創(chuàng)作音樂,。 代碼通常被可視化投射到墻壁或屏幕上,,供觀眾在現(xiàn)場(chǎng)時(shí)進(jìn)行檢查,,可視化一般是由另外一個(gè)人利用現(xiàn)場(chǎng)編碼器和可視化軟件實(shí)現(xiàn)的。 Algorave獨(dú)特的創(chuàng)造性吸引了許多人參與到這種代碼和音樂的結(jié)合中來,,一位程序員小哥哥決定在家中進(jìn)行一個(gè)簡(jiǎn)單版的嘗試,,看看能不能通過代碼把自己的房間變成一個(gè)專屬秀場(chǎng)。 快跟文摘菌一起來看看他實(shí)現(xiàn)的過程和最后的效果吧,! 在參加了紐約市的一些algoraves之后,,我決定稍微關(guān)注一下表演者使用的這個(gè)軟件,。我想知道是否可以在可視化時(shí)用自己的硬件進(jìn)行測(cè)試。雖然我還沒準(zhǔn)備好上臺(tái)表演,,但是我想結(jié)果應(yīng)該很有趣,。 我強(qiáng)烈安利任何對(duì)音樂或聲音藝術(shù)感興趣的程序員都應(yīng)該嘗試實(shí)時(shí)編碼,即使沒有演奏任何傳統(tǒng)樂器的經(jīng)驗(yàn),。
編碼軟件和語言 最流行的實(shí)時(shí)編碼軟件似乎是Sonic Pi,。這是一個(gè)最初由Sam Aaron為Raspberry Pi創(chuàng)建的開源項(xiàng)目,它也適用于Windows和macOS,。 Sonic Pi的基本界面是文本編輯器,,除了一些特定于性能的按鈕,例如用于啟動(dòng)和停止音樂的按鈕,,它看起來非常像一個(gè)集成開發(fā)環(huán)境(IDE),,在本例中使用Ruby語言。 Sonic Pi鏈接: 與Python一樣,,Ruby是一種可以交互運(yùn)行的解釋語言,,由Ruby驅(qū)動(dòng)的Sonic Pi IDE為功能強(qiáng)大的SuperCollider聲音合成引擎提供了友好的前端,該引擎作為許多電子音樂和聲學(xué)研究項(xiàng)目的基礎(chǔ)已經(jīng)被使用了二十多年,。 你可以通過在IDE中輸入完整的音符列表來創(chuàng)建一段音樂,,選擇軟件定義的樂器以及任何所需的效果(例如混響),并讓Sonic Pi播放音調(diào),。 但這樣的音樂肯定是沒有靈魂的,! 一股腦將代碼輸入進(jìn)去直接帶走了實(shí)時(shí)編碼的核心樂趣——表演者和計(jì)算機(jī)之間的互動(dòng),通過不斷地更新算法,,但是把選擇下一個(gè)演奏什么音符的工作交給那些算法,。 Sonic Pi負(fù)責(zé)保持所有內(nèi)容的同步,以便音樂永遠(yuǎn)不會(huì)錯(cuò)過任何一個(gè)節(jié)拍,。
給音樂可視化 Sonic Pi的最新版本引入了發(fā)送和接收MIDI信息的功能,。MIDI是用于計(jì)算機(jī)和電子儀器之間通信的古老標(biāo)準(zhǔn)。在MIDI中,,音符由0到127的數(shù)字表示,,音符21到108覆蓋三角鋼琴的范圍。 最初,,MIDI需要一個(gè)專用的硬件接口,,但今天看到MIDI可以直接通過USB連接運(yùn)行。 MIDI的加入讓我可以加入一些硬件來觀察Sonic Pi在運(yùn)行中產(chǎn)生的音樂,。 我利用了160個(gè)可編程的WS2812B RGB LED燈,,分為五層,,它們就像一個(gè)32×5像素的彩色顯示屏。我在六角形木框架上制作了顯示器,,并將其安裝在一個(gè)用于存放可移動(dòng)磁盤包的空“帽盒”容器中,。 這種升級(jí)回收不僅對(duì)舊物的紀(jì)念,而且盒子里寬敞的內(nèi)部還能隱藏那些電子設(shè)備,,本例使用了Arduino Leonardo微控制器,。Leonardo完美地模仿了USB設(shè)備,我之前用它來制作太空飛行模擬器的自定義控制器,。為了驅(qū)動(dòng)這么多LED,,我添加了一個(gè)10安培的電源,電源和USB電纜穿過我在盒子底部切割的小孔,。 在一次音樂黑客馬拉松上,,我已經(jīng)使用了Arduino MIDI庫,它通過USB支持MIDI,,我把“帽盒”顯示器變成了一個(gè)簡(jiǎn)單的可視化組件,,它可以從電腦上播放MIDI文件,并根據(jù)音符改變顏色,。 但至少可以說,,音符值和LED顏色之間的色彩映射是快速而雜亂的: 一些相同的顏色是由不同的音符引起的。 對(duì)于Sonic Pi可視化工具,,我使用FastLED庫對(duì)Leonardo進(jìn)行編程,,這既是出于性能方面的考慮,也是因?yàn)樗С?HSV (色相,、飽和度,、值)顏色模型。 比如將一個(gè)值(MIDI note)映射到傳統(tǒng) RGB值的三色元組就比較困難,,尤其是如果你希望所有音符看起來都一樣亮的話,。 相比之下,對(duì)于HSV模型,,在保持飽和度和值固定的情況下將注釋映射到色調(diào)字節(jié)是很簡(jiǎn)單的,。 將“帽盒”可視化工具與 Sonic Pi 軟件連接起來,雖然是在我筆記本電腦上進(jìn)行各種MIDI設(shè)置的繁瑣之旅,,但也并不太麻煩,。 然而,發(fā)送一個(gè)可視化的音符確實(shí)需要對(duì)我的SonicPi 現(xiàn)場(chǎng)代碼做一些修改: 由于每個(gè)音符都是通過算法生成的,,所以我使用一個(gè)中間變量來捕捉它,,而不是像通常那樣在一個(gè)聲音合成指令中立即播放它,。 我使用中間變量通過“ midi note on”命令將音符發(fā)送到 hat-box 顯示器,,此外還可以聽到音符的播放,, 這讓我在編寫聲音代碼的同時(shí)可以對(duì)可視化工具進(jìn)行編程。 我的下一步將是編寫可視化程序來響應(yīng)一組自定義MIDI控制命令,,這將讓我可以動(dòng)態(tài)地改變音符映射到色調(diào)值的方式,,甚至選擇不同的可視化樣式。 然后你也許會(huì)發(fā)現(xiàn)我登上了Algorave的舞臺(tái),。 相關(guān)報(bào)道: |
|