电竞比分网-中国电竞赛事及体育赛事平台

分享

嗨起來!程序員的夜場,用實時編碼生成音樂和燈光

 西北望msm66g9f 2019-09-01

大數(shù)據(jù)文摘出品

來源:IEEE

編譯:張睿毅

也許你去過的夜店,負責(zé)hold住全場音樂的一般是個DJ,可能是一位帥氣的小哥哥,或者是一位漂亮的小姐姐,左手扶著耳機,右手在打碟機上飛舞。

但是如果你去過英國伯明翰舉行的2013 Algorave Fierce Festival(盡管現(xiàn)場也是昏暗的燈光和刺耳的音樂),但你將會看到這樣的一個奇怪的場面:兩位發(fā)際線比較高的中年男人站在一個大屏幕前面,擺在桌子上的不是打碟機而是電腦之類的電子設(shè)備,電腦屏幕上是一行行代碼。


圖片上這兩位也不是做音樂的,而是計算機博士Jeff Donaldson和Norah Lorway。

Algorave Fierce Festival里面的Algorave,來自于algorithm和rave的結(jié)合,是指用實時編碼(live coding)創(chuàng)造舞曲,實時編碼算是一種表演藝術(shù),表演者通過編輯和重新編程合成器來創(chuàng)作音樂。

代碼通常被可視化投射到墻壁或屏幕上,供觀眾在現(xiàn)場時進行檢查,可視化一般是由另外一個人利用現(xiàn)場編碼器和可視化軟件實現(xiàn)的。

Algorave獨特的創(chuàng)造性吸引了許多人參與到這種代碼和音樂的結(jié)合中來,一位程序員小哥哥決定在家中進行一個簡單版的嘗試,看看能不能通過代碼把自己的房間變成一個專屬秀場。

快跟文摘菌一起來看看他實現(xiàn)的過程和最后的效果吧!

在參加了紐約市的一些algoraves之后,我決定稍微關(guān)注一下表演者使用的這個軟件。我想知道是否可以在可視化時用自己的硬件進行測試。雖然我還沒準備好上臺表演,但是我想結(jié)果應(yīng)該很有趣。

我強烈安利任何對音樂或聲音藝術(shù)感興趣的程序員都應(yīng)該嘗試實時編碼,即使沒有演奏任何傳統(tǒng)樂器的經(jīng)驗。

編碼軟件和語言

最流行的實時編碼軟件似乎是Sonic Pi。這是一個最初由Sam Aaron為Raspberry Pi創(chuàng)建的開源項目,它也適用于Windows和macOS。 Sonic Pi的基本界面是文本編輯器,除了一些特定于性能的按鈕,例如用于啟動和停止音樂的按鈕,它看起來非常像一個集成開發(fā)環(huán)境(IDE),在本例中使用Ruby語言。

Sonic Pi鏈接:

http:///

與Python一樣,Ruby是一種可以交互運行的解釋語言,由Ruby驅(qū)動的Sonic Pi IDE為功能強大的SuperCollider聲音合成引擎提供了友好的前端,該引擎作為許多電子音樂和聲學(xué)研究項目的基礎(chǔ)已經(jīng)被使用了二十多年。

你可以通過在IDE中輸入完整的音符列表來創(chuàng)建一段音樂,選擇軟件定義的樂器以及任何所需的效果(例如混響),并讓Sonic Pi播放音調(diào)。

但這樣的音樂肯定是沒有靈魂的!

一股腦將代碼輸入進去直接帶走了實時編碼的核心樂趣——表演者和計算機之間的互動,通過不斷地更新算法,但是把選擇下一個演奏什么音符的工作交給那些算法。 Sonic Pi負責(zé)保持所有內(nèi)容的同步,以便音樂永遠不會錯過任何一個節(jié)拍。

一個 Arduino Leonardo (上圖)作為一個 USB 設(shè)備,模仿一個可以使用mdi的電子儀器。 它將接收到的信息轉(zhuǎn)換成顯示在 led 條上的顏色。

給音樂可視化

Sonic Pi的最新版本引入了發(fā)送和接收MIDI信息的功能。MIDI是用于計算機和電子儀器之間通信的古老標準。在MIDI中,音符由0到127的數(shù)字表示,音符21到108覆蓋三角鋼琴的范圍。

最初,MIDI需要一個專用的硬件接口,但今天看到MIDI可以直接通過USB連接運行。

MIDI的加入讓我可以加入一些硬件來觀察Sonic Pi在運行中產(chǎn)生的音樂。

我利用了160個可編程的WS2812B RGB LED燈,分為五層,它們就像一個32×5像素的彩色顯示屏。我在六角形木框架上制作了顯示器,并將其安裝在一個用于存放可移動磁盤包的空“帽盒”容器中。

這種升級回收不僅對舊物的紀念,而且盒子里寬敞的內(nèi)部還能隱藏那些電子設(shè)備,本例使用了Arduino Leonardo微控制器。Leonardo完美地模仿了USB設(shè)備,我之前用它來制作太空飛行模擬器的自定義控制器。為了驅(qū)動這么多LED,我添加了一個10安培的電源,電源和USB電纜穿過我在盒子底部切割的小孔。

在一次音樂黑客馬拉松上,我已經(jīng)使用了Arduino MIDI庫,它通過USB支持MIDI,我把“帽盒”顯示器變成了一個簡單的可視化組件,它可以從電腦上播放MIDI文件,并根據(jù)音符改變顏色。 但至少可以說,音符值和LED顏色之間的色彩映射是快速而雜亂的: 一些相同的顏色是由不同的音符引起的。

對于Sonic Pi可視化工具,我使用FastLED庫對Leonardo進行編程,這既是出于性能方面的考慮,也是因為它支持 HSV (色相、飽和度、值)顏色模型。 比如將一個值(MIDI note)映射到傳統(tǒng) RGB值的三色元組就比較困難,尤其是如果你希望所有音符看起來都一樣亮的話。 相比之下,對于HSV模型,在保持飽和度和值固定的情況下將注釋映射到色調(diào)字節(jié)是很簡單的。

將“帽盒”可視化工具與 Sonic Pi 軟件連接起來,雖然是在我筆記本電腦上進行各種MIDI設(shè)置的繁瑣之旅,但也并不太麻煩。 然而,發(fā)送一個可視化的音符確實需要對我的SonicPi 現(xiàn)場代碼做一些修改: 由于每個音符都是通過算法生成的,所以我使用一個中間變量來捕捉它,而不是像通常那樣在一個聲音合成指令中立即播放它。

我使用中間變量通過“ midi note on”命令將音符發(fā)送到 hat-box 顯示器,此外還可以聽到音符的播放, 這讓我在編寫聲音代碼的同時可以對可視化工具進行編程。

我的下一步將是編寫可視化程序來響應(yīng)一組自定義MIDI控制命令,這將讓我可以動態(tài)地改變音符映射到色調(diào)值的方式,甚至選擇不同的可視化樣式。

然后你也許會發(fā)現(xiàn)我登上了Algorave的舞臺。

相關(guān)報道:

https://spectrum./geek-life/hands-on/how-to-program-electronic-music-that-plays-as-you-code-it

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多