Back
Featured image of post 超~極簡系音樂製作法!只要打打字就可以做出音樂?

超~極簡系音樂製作法!只要打打字就可以做出音樂?

不用花錢買設備,編曲軟體也免了~只要能打字就能做出專業品質的音樂!

      

你有用過你電腦上的「純文字編輯器」,例如說像是 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,這樣應該就會有聲音了。

Alda 的即時模式長得像這樣子
Alda 的即時模式長得像這樣子

切換八度

然後你可以用「大於」跟「小於」符號來切換到高八度跟低八度,例如說我想要一個 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;四分音符跟二分音符就是 d4d2,全音符的話是 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 程式碼有顏色,所以會更好閱讀。

現在打開你的純文字編輯器,我要示範更進階的語法給你看。

VS Code 之類的編輯器可以把程式碼自動上色,讓你更好閱讀。
VS Code 之類的編輯器可以把程式碼自動上色,讓你更好閱讀。

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 裡面就直接開終端機的,所以不需要用另外的終端機程式。

在 VS Code 裡直接開出終端機,然後說「alda play -f 檔名」,就可以播放了!
在 VS Code 裡直接開出終端機,然後說「alda play -f 檔名」,就可以播放了!

範例 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 的方式非常簡單,到這個頁面,就有官方的安裝教學;只有三個步驟而已,你就看著它網頁上面寫的照做,就可以裝好了。

Alda 的官方安裝教學頁面
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 音樂程式語言的課程,這一篇很長,寫了超久,拜託你一定要去玩玩看阿!

喜歡這篇文章嗎?幫我分享到 →