你有用過你電腦上的「純文字編輯器」,例如說像是 Windows 裡面的記事本嗎?聽聽看,這是我昨天用純文字編輯器做的音樂:
沒錯,你沒有聽錯,你不需要買任何的編曲軟體,也不需要任何音樂設備,只要有一個可以打字的視窗,你就可以用它來做音樂。想知道怎麼做的話,就繼續閱讀吧!
和肥大的軟體們分手
在進到我們的主題「用純文字來做音樂」之前,首先我一定要先回答最重要的問題,那就是「為什麼」?我們明明就有功能超級強大的編曲軟體,為什麼我要用文字編輯器來做音樂?
我跟你們說,我前陣子有一段時間超級愛看關於極簡生活、整理跟斷捨離的影片,關於這個主題,台灣最有名的 YouTuber 大概就是「末羊子」了吧。我每次看完她的影片就會很想整理家裡,雖然我家現在還是蠻亂的啦,但是我非常同意生活越簡單,效率就越高、麻煩也越少的觀念。
我舉兩個我自身的例子,之前我有很長一段時間都是使用 Evernote 這個軟體來做筆記,但是隨著 Evernote 的改版,它增加了越來越多的功能,再加上我的筆記資料庫越來越大,到最後它的程式跑得超級慢,我在 iPhone 上光是要打開它的 App 寫一個簡單的筆記都要等個 30 秒。
最後我實在受不了,把我多年來的筆記全部移植成 Markdown 純文字檔,改成用一般的文字編輯器來做筆記,效率真的增加了好幾倍。而且因為它只是純文字檔,所以我可以自由選擇我喜歡的文字編輯器來做筆記,從此不會再被強迫使用特定的 App。(事實上,這整個網站都是用 Markdown 做的)
另外一個例子是跟做音樂有關。我以前會花超多錢,買一大堆很貴、檔案又很大的音色庫裝在電腦裡面;每次要編曲的時候,我都需要從很長的清單裡面選擇我要的音色,然後再花十幾二十秒,等那些檔案超大、好幾 GB 的音色載入,等到它讀取好的時候,我作曲的靈感都早就不見了。
所以我後來越來越少用電腦上面的軟體音源,大部分情況都改成用實體音源器上面的音色;用音源機的話,我只要按幾個按鈕就可以快速跳到我想要的音色,完全不需要讀取時間,也完全不會造成電腦 CPU 和硬碟的負擔,讓我更可以把心思放在做音樂上面。
超極簡!打打字就能做音樂~
回到今天的極簡主題,我今天要跟你介紹的東西叫做「Alda」。
Alda 是一個專為音樂家設計的程式語言,它可以讓你單純只用純文字,就可以作曲跟播放音樂;而且 Alda 的語法非常容易學,任何人應該花個 15 分鐘到半小時之內就可以學會了;更好的消息是,它在 Mac/Windows/Linux 系統上面都可以用,授權條款當然也是完全自由跟免費的。
總之它是一個超酷超好玩的東西就對了!我接下來要直接先示範語法給你看,示範完之後,在文章的最後我們再來講如何安裝。(按下方影片會直接跳到 3:08 語法示範處)
Alda 語法 - 初級班
Alda 有兩種玩法:
- 即時模式:就是你每打一行字,它就會馬上即時演奏出來
- 播放模式:把整段音樂先做好存檔,然後再用 Alda 來播放。
那因為我們是新手,所以我們先從即時模式開始玩;在你的終端機輸入 alda repl
,就可以進入 Alda 的即時模式。
你的第一行 Alda 程式碼
假設我想要它演奏 Do Re Mi Fa Sol,我就只要輸入小寫的音名,每一個音名中間空一格就可以了,像這樣:
c d e f g
輸入好之後按 Enter。
欸?為什麼什麼都沒有發生?啊~是因為我們沒有指定樂器啦!在最開始使用的時候,你需要先告訴 Alda 你要選什麼樂器。所以這次我們說:
piano: c d e f g
然後按 Enter,這樣應該就會有聲音了。
切換八度
然後你可以用「大於」跟「小於」符號來切換到高八度跟低八度,例如說我想要一個 C 和弦的琶音,上下兩個八度,我就可以說:
c e g > c e g > c < g e c < g e c
你有沒有注意到這一次我們沒有特別說 piano:
來指定樂器了,那是因為我們前面已經有指定過,如果你沒有要換別的樂器的話,就不需要每一行都重新說樂器的名字。
除了用「大於」跟「小於」符號切換八度之外,你也可以用「o」這個關鍵字來直接指定八度,例如說我要中央 C 開始的 C D E F G,我就可以說 o4 c d e f g
,那如果我後面要接著高八度的 C D E F G,我就說 o5 c d e f g
,試試看在 alda 裡輸入以下的程式碼:
o4 c d e f g o5 c d e f g
音符長度(時值)
切換音符長度也非常簡單,就是直接在音名後面打數字,說你要幾分音符就可以了。例如說我要一個 D 的八分音符,我就打 d8
;四分音符跟二分音符就是 d4
和 d2
,全音符的話是 d1
。試試看以下的程式碼:
d8 e f g e4 c8 d
注意以上的語法,我沒有每一個音後面都加數字,你只要在音符長度有換的時候寫數字就可以了,那你一旦指定一個音符長度之後,後面的音都會自動是同樣的長度。
升降記號
升降記號的話,就是直接在音名後面加上「+」跟「-」符號,例如說 C# 就是寫 c+
,Eb 的話就是寫 e-
,依此類推,試試看這個:
c8 c+ d d+ e2 e8 e- d d- c2
休止符、小節線
休止符的話是用小寫「r」代表,因為休止符的英文是「rest」。
使用方法就是跟一般的音符一樣,你也可以在後面加數字來決定它多長,那如果不特別加數字的話,就是延續前面音符的長度。例如說我要演奏《小蜜蜂》的第一句,我就可以這樣打:
g4 e e r | f d d r | c d e f | g g g r
你看到我中間用了一些直線來代表小節線,這個純粹是打給我自己看的,不管你加不加小節線都不會影響到 Alda 的運作。
Alda 裡面並沒有拍號跟小節線的概念,你可以用任何長度的音符,寫任何的拍子、任何的節奏;不過在程式碼裡面加小節線,還是會讓人比較好閱讀啦,所以如果你的曲子是固定拍子的話,還是很建議你寫小節線。
切換樂器
我們剛才一直都是用鋼琴音色嘛,我怎麼知道有什麼其他音色可以用呢?你可以在 Alda 的即時模式裡輸入 :instruments
,它就會列出所有你可以使用的音色;不過你輸入一般常見樂器的名字它大部分都可以辨識啦,例如說我可以打 trumpet:
來切換到小號:
trumpet: c8. d16 e8 f g g g
附點音符
你有沒有注意到我上面打的這一行,「c8」後面還有一個點點?在音符長度後面加點,就是附點音符的意思,使用的邏輯就跟一般你知道的附點音符的用法一模一樣,應該不太需要特別的說明。
和弦
接下來是和弦,如果要好幾個音同時彈出來的話,你就只要把音名用斜線隔開就可以了,像是這樣子:
piano: o4 c e g c/e/g/>c
強弱記號
最後,你也可以使用強弱記號,直接把一般樂譜裡面使用的「p、f、mp」之類的強弱記號,寫在括號裡面就可以切換強弱了。像是接下來的例子,就是用小號先吹三個弱的音,然後再吹三個很強的音:
trumpet: (p) c c c r (ff) c c c r
就這麼簡單
就這樣子而已,以上差不多就是 Alda 的最基本語法,你看它真的很簡單,我們花不到幾分鐘就學會了對不對?想要結束即時模式的話,按鍵盤的 Ctrl+D 就可以跳出囉!
當然剛才的這個即時模式,一次只能播放一行,沒有辦法做完整的音樂,如果你想要寫比較長一點點的曲子,你就會需要使用一個純文字編輯器。
任何的純文字編輯器都可以用喔!如果你懶得安裝任何東西的話,你就用 Windows 內建的「記事本」,或者是 macOS 內建的「TextEdit」都可以;那如果你想要它看起來比較漂亮的話,你可以使用像是 VS Code 或是 Atom 之類的文字編輯器。
如果你是要認真玩 Alda 的話,我還蠻推薦 VS Code 的,因為 VS Code 裡面可以安裝一個 Alda 語法的外掛程式,就可以自動讓你的 Alda 程式碼有顏色,所以會更好閱讀。
現在打開你的純文字編輯器,我要示範更進階的語法給你看。
Alda 語法 - 進階班
好,接下來就是我們的進階語法課程了。想要一邊聽到聲音的話,播放下方影片喔!(會自動跳至 8:04 處)
範例 1-1:調速度、存檔與播放
這是第一個範例:
(tempo! 130)
midi-acoustic-bass:
o2 c8. > c16 < r8 e4 f8 f+ g
首先我要先教你怎麼樣調速度,你只要在檔案的最上面說 (tempo! 130)
,就可以把所有樂器的速度設定成 130。
「tempo」後面的驚嘆號是表示「套用到全部樂器」的意思;言下之意就是你也可以每一個樂器設定不同的速度,你就只要用同樣的語法,但是不要裡面那個驚嘆號就可以了。例如說,如果只是要把 midi-acoustic-bass
這個樂器的速度設為 130,那就是改成這樣寫:
midi-acoustic-bass:
(tempo 130)
o2 c8. > c16 < r8 e4 f8 f+ g
總之我們的第一個範例,就是我把速度設定成 130,然後用 Bass 演奏一小段音樂這樣子。寫完這一份譜之後,我就把它存檔,檔名你要怎麼取都可以,但是通常的習慣是在檔案名稱後面加上「.alda」來表示這個是 Alda 的檔案。
存檔之後你就只要到終端機說 alda play -f
後面加上你的檔名,就可以播放囉!
然後如果你像我一樣是使用 VS Code 的話,你是直接可以在 VS Code 裡面就直接開終端機的,所以不需要用另外的終端機程式。
範例 1-2:反覆
(tempo! 130)
midi-acoustic-bass:
[o2 c8. > c16 < r8 e4 f8 f+ g]*4
假設我剛才這一段音樂要重複四次,我並不需要複製貼上同樣的東西四次。我只要把想要反覆的音樂用「方形括號」框起來,後面打上「*4」就可以了。
範例 1-3:幫片段取名字、重複利用、移調
(tempo! 130)
nicebass = [o2 c8. > c16 < r8 e4 f8 f+ g]
midi-acoustic-bass:
nicebass*2
(transpose 5) nicebass*2
(transpose 7) nicebass*2
(transpose 0) o3 c8 c c c < g a b > c
假設你有一段音樂真的會非常常重複使用的話,你也可以幫它取一個名字,讓它更方便重複使用。
你看範例中我寫 nicebass = [o2 c8. > c16 < r8 e4 f8 f+ g]
的意思就是,我把這一小段音樂,取名叫做 nicebass
;所以我等一下就只要寫 nicebass
這個字,它就會直接播放這一段音樂。
那你看我更下面寫 nicebass*2
,就是把這一段播兩次的意思。
還有更神奇的用法是這樣,我剛剛這一小段 nicebass
大約是一個 C 和弦的感覺,假設我想要用同樣音型彈別的和弦,我可以直接就把這一段移到別的調。
我只要寫 (transpose 5)
,就表示接下來後面的東西要往上移 5 個半音,所以以下這行的意思就是播放兩次 F 和弦版的 nicebass
:
(transpose 5) nicebass*2
那下面這一行的 (transpose 7)
,就表示後面的東西是比原始音高高 7 個半音,所以播出的就會是兩次 G 和弦版的 nicebass
:
(transpose 7) nicebass*2
範例中的最後一行我寫 (transpose 0)
,意思是讓接下來的東西恢復用原始音高來播放。
範例 2-1:多個樂器
(tempo! 160)
midi-pan-flute:
(f)
o5 g8 r g d f r g r | r1
g8 g g d f r g r | r1
midi-acoustic-bass:
(ffff)
o1 g4 r8 > d4 r8 f g | r8 g d d < f r f f+
o1 g4 r8 > d4 r8 f4 | r8 f g d < f r f+ r
marimba:
(f)
o3 g8 r b/>d < f r a/>c r < f |
o3 g8 g b/>d < f r a/>c r < f |
o3 g8 r b/>d < f r a/>c r < f |
o3 g8 g b/>d < f r a/>c r < f |
你要同時用很多個樂器當然是沒有問題的囉!你看這一份譜我有排笛(midi-pan-flute
)、Bass(midi-acoustic-bass
)和木琴(marimba
)這三個樂器,三個樂器的譜都有四個小節。只要直接像我上面這樣子寫,Alda 就會直接把三個樂器一起播放了。
範例 2-2:多聲部
(tempo! 130)
midi-recorder:
V1:
(f)
o6 c8. d16 e8 c f e16 d e8 c | d e d <b >c2 |
V2:
(f)
o5 e8. f16 g8 e a g16 f g8 e | f g f d e2 |
你要在同一個樂器當中寫多聲部也是可以的,你就只要在樂器當中寫 V1:
、V2:
、V3:
之類的關鍵字,就可以有多聲部了。以上這個範例,就是我用直笛的音色,寫兩個聲部一起演奏。
範例 2-3:多聲部(用在鼓組)、備註
(tempo! 130)
midi-percussion:
V1: # Kick
(f)
o2 c8 r r r c c r r | c r r c r c r r |
V2: # Snare
(f)
o2 r4 e r e | r e r e |
V3: # Cymbals
(p)
o3 c+8 < f+*7 | f+*8 |
這個多聲部功能不只是在旋律樂器可以用,在爵士鼓的情況是更好用。
我可以把不同類型的鼓用不同聲部來區分,這樣子寫起來會更乾淨、更好閱讀。以上的例子,就是我把爵士鼓分成三個聲部,第一個聲部是大鼓、第二個是小鼓、第三個是吊鈸跟 hi-hat。
另外,你有注意到我在程式碼裡面用 #
來標註說明嗎?在 Alda 裡面,每一行只要是 #
後面的東西就會被忽略,所以你可以利用這個 #
來寫說明給自己看,讓程式碼更好閱讀。
範例 2-4:多連音
(tempo! 90)
# Cram expression
# 把任何的片段,擠在一個特定的長度裡面。
piano:
(f)
o4 c4 {c d}4 {c d e}4 {c d e f}4 |
{c d e f g}4 {c d e f g a}4 {c d e f g a b}4 >c4
midi-percussion:
(ff)
o2 [c4/c+]*8
最後一個要介紹的功能是我覺得超好用的 cram expression,這個的意思就是你可以把任何的片段,擠在一個特定的長度裡面,如果是要寫複雜的多連音,或是 Swing 節奏的話超好用。
你看上方的例子喔,我一開始寫 c4
的意思就是我要一個 C 的四分音符嘛。
但你看接下來我寫 {c d}4
的意思,就是我要把 C 和 D 這兩個音,平均分配到一個四分音符的長度當中;也就相當於 C 和 D 都是八分音符的意思啦。
接下來後面的大括號都是一樣的意思:
{c d e}4
就是把 C D E 這三個音平均分配到一個四分音符裡面,也就是三連音的意思。{c d e f}4
就是一拍裡面塞 C D E F 四個音,相當於 16 分音符。- 一拍之內的五、六、七連音就是
{c d e f g}4
、{c d e f g a}4
和{c d e f g a b}4
,依此類推。
範例 2-5:Swing 節奏
(tempo! 90)
piano:
(f)
o4 {g2 >c4}4 {c2 e4}4 {a2 e4}4 g4 | {g2 a4}4 {g2 e4}4 {f2 e4}4 d4
midi-percussion:
(f)
o2 [c4/c+]*8
而且大括號裡面的每一個音並不一定要等長喔!
你看上面這個例子,我寫了 {g2 >c4}4
,大括號裡面的 G 是二分音符、C 是四分音符,所以這兩個音符的長度比就是 2 比 1;大括號右邊的 4
指的是把大括號裡面的東西,依照原始的長度比例擠到一個四分音符裡面,這樣就直接變成了 2:1 的 Swing 節奏了。(看得出來上方例子中,piano
聲部演奏的是什麼旋律嗎?)
我覺得這個 cram expression 的節奏系統,比絕大部分的打譜軟體都還要直白好用耶!如果你試過在一般的打譜軟體,打過各種多連音的複雜節奏的話,你就知道有多麻煩,不只很難操作,而且還需要在頭腦裡面把節奏算好。
那用 Alda 的話就超簡單,我就只要隨便寫一些節奏,然後把它用大括號框起來,再跟它說「把這一大堆複雜的節奏擠到這個特定的長度裡面」就可以了,完全不需要管每一個音是幾分音符的問題。
實戰
以上就是今天全部的 Alda 語法教學,我應該已經有 cover 到大概 60-70% 的 Alda 的功能,你只要會用我今天說的這些,應該就能夠做出很多音樂了;如果你還想學習更多的話,你可以去看 Alda 的官方教學文件,還有一些很好用但是我今天來不及講到的功能喔!
以下是我實際用 Alda 做的一首短短的曲子,讓你感受一下 Alda 可以做到怎麼樣的效果,你只要把以下程式碼全部複製貼上,存成一個檔案,就可以用 alda play -f
播放了!
(⚠️ 還不要走~繼續往下捲,程式碼下方還有安裝教學唷!)
# NiceChord Alda Demo
# Composed by Wiwi Kuan (2021)
# License: CC BY-SA 4.0
(tempo! 200)
# intro
midi-seashore:
(ff)
o3 c0.25~0.25 # 8 bars
midi-applause:
(f)
o3 r1 | r | c0.5~0.25 # 8 bars
midi-bird-tweet:
(f)
o3 r1 | e | r | r |
g2 b | r1 | d | r |
midi-steel-drums:
(f)
V1:
r1*7 | o4 {r b b b >c d}1
V2:
r1*7 | o4 {r g g g a b}1 %section-a
midi-percussion:
(ff)
# drum fill
r1*7 | o3 r8 c16 c c8 c <a4 c/e/>c+
# section-a (16-bar)
midi-steel-drums:
@section-a
V0:
(f)
(key-signature "f+")
o4 b4/>d {<b >d <b >d <b >d <b >d <b >d <b >d <b}2. |
o5 d2 r8 c <b >c |
o4 g4/b d/g c8/e c/e r <a/>d |
r1 |
o4 r8 g b >d g f16 e d8 e |
d e c <b a g a >c |
<b >c d <b a g r d |
(mp)
{o3 a8 >d <a >d <a >d <a >d <a >d <a >d <a >d2}1
midi-marimba:
@section-a
(mf)
(key-signature "f+")
[o3 b4 >d/g c8 e/g r d | r f/a r c r e/g r <b]*7
o3 b4 >d/g c8 e/g r d | r f/a r c r e/g r r |
midi-trumpet:
@section-a
(ff)
(key-signature "f+")
(quant 70)
V1:
r1*7 | o4 r8 g a b >c d e f |
o5 g2 e4. f8 | r8 f r4 r2 |
o5 g2 e4. f8 | r8 f r4 r8 d f a |
o5 g2 e4. f8 | r8 f r4 r4 d8 r |
o5 g2 e4. f8 | r8 f e e (mf) {d2 c16 <b a g f e d c b}4. r8 %section-b
V2:
r1*7 | o4 r8 g a b >c d e f |
o4 b2 g4. a8 | r8 a r4 r2 |
o4 b2 g4. a8 | r8 a r4 r2 |
o4 b2 g4. a8 | r8 a r4 r2 |
o4 b2 g4. a8 | r8 a g g f+ r r r |
midi-bright-acoustic-piano:
@section-a
(f)
(key-signature "f+")
(quant 50)
r1*8
[o5 r4 d/g/>d o5 d/g/>d r | o5 d4./a/>d o5 d4./a/>d o5 d4/a/>d]*3 # 2 bar * 3
o5 r4 d/g/>d o5 d/g/>d r | o5 d4./a/>d o5 (quant 150) d8/a/>d {c <b a g f_ e d c b a g}4 r4 # slide fill
midi-percussion:
@section-a
V1: # clave
(mp)
[o2 r4 c+ c+ r | c+4. c+ c+4]*8 # 2 bar * 8
V2: # kick
(ffff)
[o2 c2 c | c c]*8 # 2x8 bars
V3: # snare
(f)
[o2 r4 r e r8 e | r4. e8 r2]*3 # 6 bars
o2 r4 r e r8 e | o3 r8 d d d d <b g r # 2-bar fill
(fff)
[o2 r4 r e r8 e | r4. e8 r2]*3 # 6 bars
o2 r4 r e r8 e | o3 r8 d16 d d8 d <e b g e # 2-bar fill
V4: # cowbell
(f)
[o3 g+2*4]*4
V5: # cymbals
(f) o3 g4 (mp) < f+ f+ f+8 a+ | r8 f+ f+4 f+ f+ # splash
f+4 f+ f+ f+8 a+ | r8 f+ f+ f+ f+4 f+
f+4 f+ f+ f+8 a+ | r8 f+ f+4 f+ f+
f+4 f+ f+ f+8 a+ | r8 f+ f+ f+ f+4 f+
(f) o3 c+4 (mp) <f+ f+ f+8 a+ | r8 f+ f+4 f+ f+ # crash
f+4 f+ f+ f+8 a+ | r8 f+ f+ f+ f+4 f+
f+4 f+ f+ f+8 a+ | r8 f+ f+4 f+ f+
f+4 f+ f+ f+8 a+ | r8 f+ f+ f+ f+4 f+
V6: # congas
(p)
[o4 r8 r e r d+ r e e | r e r e d r e r]*4
V7: # ride
(f)
r1*8
o3 [d+4 d+ d+ d+]*7 r1
V8: # clap
(mp)
r1*8
o2 [r2 d+ r d+]*4
midi-acoustic-bass:
@section-a
(ffff)
o1 g4. >c4. d4~4. c4. <g4~4. # 2 bars per line
>c4. d4~4. c4. <g4~4.
>c4. d4~4. c4. <g4~4.
>c4. d4~4. c8 r d e g
o1 g4. >c4. d4~4. c4. <g4~4. # repeat
>c4. d4~4. c4. <g4~4.
>c4. d4~4. c4. <g4~4.
>c4. d4~4. c8 r d e g
midi-harmonica:
@section-a
(fff)
r1*15 | o3 {r12 r4 r r4. b4 >e4. f+4 g4. a4}1
# section-b
midi-harmonica:
@section-b
(fff)
(quant 80)
o4 {r12 r4 b g+ a b >c e g}1 | {r32 b8 >c r46 c+8 d <b4}2. {f+1 g4 g+}4
a4. g8 {r16 f+4. g4}4 {r16 f+4. e4}4 | {d+4. <b4}4 {>f+4. e4}4 r2
midi-percussive-organ:
@section-b
(mf)
(quant 100)
(key-signature "")
V1:
r1*3 | o4 {r48 {r4. b4}4 {>e4. f+4}4 {g4. a4}4 {b4. g4}4}1 |
o5 e-4./g/b- o5 c8/f/a r4 o5 d4~1~1/f/g |
(quant 80)
o5 {f4. e-4 c4. <b-4}2 e-4 > {d/g4. d/g4}4
r1
midi-trumpet:
@section-b
(mf)
(quant 80)
(key-signature "")
r1*4
o5 d4./>d o5 c8/>c r4 o4 b-4~1~4/>b- |
o4 d4/g g/b- b-/>d | (quant 70) o5 (f) {f4. e-4 c4. <b-4}2 e-8 r8 > (ff) {d4./g d4/g}4
midi-bright-acoustic-piano:
@section-b
(f)
(quant 70)
(key-signature "")
V1: # RH
o4 a4./>e/a o4 a8/>e/a r4 o5 c4~1/g/>c |
o5 d4./f+/b o5 d8/f+/b r4 o4 b4~1/>e/a |
o4 g4./b-/>e- o4 a8/>c/f_ r4 o4 b-4~1/>d/g |
(quant 500) r4 o6 {g d c < g d c}2 < (quant 100) g4 | r4 r r {o6 d4./g d4/g}4
V2: # LH
o3 b4./>c/e o3 b8/>c/e r4 o3 a4~1/>d+/g |
o3 g4./>d/f+ o3 g8/>d/f+ r4 o3 g4~1/>c+/f+ |
o3 g4./b-/>e- o3 a8/>c/f_ r4 o3 b-4~1/>d/g |
(quant 100) o3 r4 b-4/>d/g o3 b-4/>d o3 b-4 | o4 {f4. e-4 c4. <b-4}2 e-4 o4 {d4./g d4/g}4
V3: # Final Notes Workaround
r1*7 | r4 r r o3 {a4. a4}4
V4: # Final Notes Workaround
r1*7 | r4 r r o5 {g4. g4}4
midi-acoustic-bass:
@section-b
(ffff)
o1 f+4. >c8 r4 <b4~4 b4 >b <b |
o1 e4. b8 r4 a4~4 a4 {a4. >e4}4 a4 |
o2 c4. d8 r4 e-4~1 |
o1 {e-4. b-4}4 >e-2. | o2 {f4. e-4 c4. <b-4}2 e-4 {g4. g4}4
r1
midi-percussion:
@section-b
V1: # kick
(ffff)
o2 c4 r {r r c}4 c | r {r r c}4 r4 c |
o2 c4 r {r r c}4 c | r {r r c}4 r4 c |
o2 c4. c8 r4 c | r4 c {r4. c4}4 c |
o2 {r4. c4}4 r4 {r4. c4}4 r4 | c2 r4 {r4. c4}4
r1 # extra rest
V2: # snare and toms
(ffff)
o2 r2 e | {r r (p) e}4 r4 (ffff) e r |
r2 e | {r r (p) e}4 r4 (ffff) e {r4 (mf) e e}4|
(ffff) r4. e8 r4 e | o3 {r4. d4}4 {c4. c4}4 o2 {b4. r4}4 {(ffffff) e16 (ffff) e2}4 |
{(ffff) e (ppp) e (ffff) e (ppp) e (mf) e (f) e}2*2 | {e4. r4 r4. (f) e4}2 (fffff) e4 (ffff) {e4. e4}4
r1
V4: # cowbell
(ff)
[o3 g+2*4]*2
V6: # congas
(mf)
[o4 r8 r e r d+ r {e4. e4}4 | {r4. e4 r4. e4 d4. r4 e4. r4}1 ]*2
V7: # cymbals
o3 (ff) c+2 (f) f4 (p) d+ | (f) f4 (p) d+ (f) f4 (p) d+
(f) f4 (p) d+ (f) f4 (p) d+ | (f) f4 (p) d+ (fff) g4 (p) d+
o3 c+4. a8 r4 g | o2 r4 a+2 a+4 |
o2 g+4*4 | a+2 r4 {a+4. (fffff) >g4}4
V8: # clap
(f)
o2 [r2 d+ r d+]*2
V9: # extra bars to prevent cut off
r1*25 | r1 | o0 c4 |
安裝
看到這邊為止,有讓你想要自己玩玩看了嗎?安裝 Alda 的方式非常簡單,到這個頁面,就有官方的安裝教學;只有三個步驟而已,你就看著它網頁上面寫的照做,就可以裝好了。
第一個步驟是先裝好 Java,我覺得大部分人的電腦搞不好都已經裝好了。你只要到終端機打 java -version
,如果有跑出一些版本資訊的話,就表示你已經有 Java 了;那如果沒有的話,你就到 Adoptium,下載 Java 然後把它裝起來就可以了。
第二個步驟是下載 Alda 本身,你就看你用的是 Mac、Windows 還是 Linux,下載相對應的 alda 和 alda-player 這兩個程式。
第三個步驟是設定讓它可以執行,如果你是用 Mac 或是 Linux 的話,你要在終端機先用 chmod +x
這個指令打開這兩個檔案執行的權限,然後把兩個檔案都複製到你的系統指令的路徑當中。假設你把兩個檔案下載到家目錄裡的 Downloads
資料夾,那麼你就可以進終端機說:
cd ~/Downloads/
chmod +x {alda,alda-player}
sudo cp {alda,alda-player} /usr/local/bin
那如果你用 Windows 的話,你可以看這篇文章學習如何把程式放到系統路徑中。
當然我知道我的觀眾裡面,一定有一些人會覺得在終端機裡面打字很可怕,如果你不知道怎麼樣用終端機的話,在我的另外一個頻道 NiceCode 裡面,我有做一個給初學者的終端機教學,你只要花個半小時練習一下就可以學會了,我強烈推薦你一定要去看看!
學會用終端機,真的對你的人生有非常非常大的幫助,相信我,學起來真的受用無窮,不信的話你可以在我影片下面的留言區問大家!
以上就是今天的 Alda 音樂程式語言的課程,這一篇很長,寫了超久,拜託你一定要去玩玩看阿!