使用 Sonic Pi 像寫代碼一樣編曲
![](https://linuxstory.org/wp-content/uploads/2024/06/095540zigm4pzopgrdevvz-800x400.jpg)
也許你和我一樣,在上學的時候學過一種樂器。對我來說,那是鋼琴,後來是中提琴。然而,我一直認為,隨著我童年的興趣轉向計算機和編碼,我後來忽略了音樂練習。我確實想知道,如果我年輕時有 Sonic Pi 這樣的東西,我會怎麼樣。Sonic Pi 是一個開源程序,可以讓你通過代碼來創作和演奏音樂。它是這兩個世界的完美結合。
我們對 Sonic Pi 並不陌生,早在 2015 年就對其創造者 Sam Aaron 博士 進行了採訪。從那時起,Sonic Pi 在很多方面都有了很大的發展。它達到了一個重要的新版本里程碑,期待已久的 v3.2 版本已於 2020 年 2 月 28 日公開發布。一個不斷壯大的開發者社區正積極為其 GitHub 項目 做出貢獻,而在 官方論壇 中有一個同樣繁榮的作曲家社區可以分享想法和提供支持。該項目現在還通過 贊助活動 獲得了資金支持,而 Sam 本人也在世界各地的學校、會議和研討會中傳播 Sonic Pi 的信息。
Sonic Pi 真正的閃光點在於它的平易近人。它的版本適用於許多主要的操作系統,包括 Windows、macOS、Linux,當然也包括樹莓派本身。事實上,在樹莓派上學習使用 Sonic Pi 再簡單不過了。它預裝在 Raspbian 中,所以如果你有一個基於 Raspbian 的現有環境,你會發現它位於編程菜單中。
第一次載入 Sonic Pi 時,你會看到一個簡單的界面,有兩個主要的區域:一個編輯器,可以寫你的代碼,還有一個區域專用於 Sonic Pi 豐富的教程。對於新手來說,教程是學習基礎知識的重要資源,它有配套的音樂程序來鞏固所學的每個概念。
如果你跟著學習,讓我們為自己編寫一段簡單的音樂,探索現場編碼音樂的潛力。將以下代碼輸入或粘貼到 Sonic Pi 編輯器中:
live_loop :beat do
sample :drum_heavy_kick
sleep 1
end
即使你是一個 Sonic Pi 的新手,許多程序員可能馬上就會明白這裡發生了什麼。我們正在播放一個 踏板鼓 採樣,停止一秒鐘,然後重複。點擊運行按鈕或按 ALT+R
(macOS 上為 meta+R
),你應該聽到它開始播放。
這不是一首非常激動人心的歌曲,所以讓我們用一個在不合拍的 小鼓 來使它生動起來。用下面的代碼塊替換現有的代碼,然後再次運行。你可以在做這個的時候讓現有的節拍繼續播放;你會注意到你的改動會自然地應用,與節拍同步:
live_loop :beat do
sample :drum_heavy_kick
sleep 0.5
sample :drum_snare_soft
sleep 0.5
end
我們在做這個的時候,讓我們在每四拍之前添加一個 踩鑔 ,讓聲音變得有趣一些。在現有的程序塊下面添加新的程序塊,然後再次運行:
live_loop :hihat do
sleep 3.9
sample :drum_cymbal_closed
sleep 0.1
end
我們現在已經有了我們的節拍,所以讓我們來添加一個 低音聲線 !Sonic Pi 內置了各種合成器,還有混響和失真等效果濾波器。我們將使用 「dsaw」 和 「tech_saw」 合成器的組合,使其具有電子復古合成器的感覺。將下面的塊添加到你現有的程序中,運行,並聽一聽:
live_loop :bass do
use_synth :dsaw
play :a2, attack: 1, release: 2, amp: 0.3
sleep 2.5
use_synth :tech_saws
play :a1, attack: 1, release: 1.5, amp: 0.8
sleep 1.5
end
你會注意到上面的內容,當播放音符時,我們可以完全控制 ADSR 包絡 ,所以我們可以決定每個聲音何時達到峰值和衰減。
最後,讓我們添加一個 主音合成器 ,試試那些被稱為「 切片器 」的效果特徵。為了使事情更有趣,我們還將引入一個偽隨機的元素,讓 Sonic Pi 從一系列潛在的 和弦 中挑選。這就是一些有趣的即興創作和「快樂的意外」可以開始發生的地方。在你現有的程序中加入下面的程序塊並運行:
live_loop :lead do
with_fx :slicer do
chords = [(chord :A4, :minor7), (chord :A4, :minor), (chord :D4, :minor7), (chord :F4, :major7)]
use_synth :blade
play chords.choose, attack: 1, release: 2, amp: 1
sleep 2
end
end
很好!現在,我們當然不會很快與 Daft Punk 競爭,但希望通過這個過程,你已經看到我們如何通過添加一些簡單的代碼,實時地從一個單一節拍變成更大的東西。YouTube 上 Sam Aaron 的 現場編碼表演 非常值得一看,它展示了 Sonic Pi 可以讓你有多大的創造力和適應力。
![Sonic Pi composition example](/data/attachment/album/202112/13/095550u8ssua4l00c2zli8.png "Sonic Pi composition example")
我們完成的作品,完整版
如果你曾經想學習一種樂器,但又覺得被「我沒有節奏感」或「我的手不夠靈活」這樣的想法所束縛,Sonic Pi 是一種多功能的樂器,這些都不重要。你所需要的只是想法和靈感,以及一台便宜的電腦,如簡陋的樹莓派。其餘的都在你的指尖上(實際意義上的)。
這裡有幾個方便的鏈接可以讓你開始:
- 官方 Sonic Pi 網站 和 教程
- Sonic Pi 入門
- Sonic Pi 的 GitHub 項目
via: https://opensource.com/article/20/3/sonic-pi
作者:Matt Bargenquast 選題:lujun9972 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive