Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Sonic Pi 教學 - 1

Kalan
March 18, 2020

Sonic Pi 教學 - 1

向好和弦與 Sam Aaron(Sonic Pi 作者) 致敬 | 用 Sonic Pi 寫音樂!

youtube: https://youtu.be/aTA5wWhvKAQ

這部影片的靈感是來自好和弦在前幾週的直播,如果沒看過的話可以趕快到資訊卡裡頭看看!好和弦一直是我很喜歡的 YouTube 頻道之一,甚至連我開頭音樂都是用好和弦推薦的 PixiTracker 做出來的。
好和弦頻道:https://www.youtube.com/channel/UCVXstWyJeO6No3jYELxYrjg

◼︎ 為什麼要用程式碼寫音樂?
可能你是本科系的人,透過程式碼這個媒介,讓創作的元素變得更加豐富;如果不是本科系,透過音樂這種大家都喜歡的領域來學習,反饋的速度比較快,也會更想要學習更多!

◼︎ Sonic Pi 是什麼?
Sonic Pi 是由 Sam Aaron 與 Raspberry Pi Foundation 協作開發的軟體,可以透過 live coding 的方式來做音樂,最初用在教學音樂課跟程式理論上,不過隨著功能越來越多,你甚至可以用它來做現場演奏。而且為了讓初學者可以快速上手,這個軟體在語法上以及環境上下了非常大的功夫,所以寫起來也相當直覺,馬上就可以看到成果。

Kalan

March 18, 2020
Tweet

More Decks by Kalan

Other Decks in Programming

Transcript

  1. Sonic Pi 基礎教學 - 1

    View Slide

  2. 下載
    https://sonic-pi.net/

    View Slide

  3. 基本外觀

    View Slide

  4. Sonic Pi 基本語法

    View Slide

  5. play :e3, amp: 1
    play
    播放一個音高為 E3(參照下圖),音量為 1 的聲音
    (amplify 的縮寫)
    https://sonic-pi.mehackit.org/exercises/en/10-cheatsheet/01-cheatsheet.html
    數字越大聲音越大
    play "e3", amp: 1

    View Slide

  6. attack, decay, sustain, release
    play :e3, amp: 1, attack: 1, decay: 1

    View Slide

  7. sleep 0.25
    sleep
    休息 0.25 = 休息一拍

    View Slide

  8. notes =
    [:c4, :c4, :g4, :g4, :a4, :a4, :g4, :f4, :f4, :e4, :e4, :d4, :d4, :c4]


    sleeps = [0.25, 0.25, 0.25, 0.25, 0.25,0.25, 0.5, 0.25, 0.25, 0.25,
    0.25, 0.25,0.25, 0.5]
    notes.each_with_index do |n, i|
    play n, amp: 0.7, release: 0.4
    sleep sleeps[i]
    end
    用 play 跟 sleep 彈小星星
    小星星的旋律
    小星星的節奏
    Ruby 迴圈語法
    在 0.4 小節內讓聲音完全消失

    View Slide

  9. 使用合成器
    use_synth
    Sonic Pi 內建許多合成器可以使用!
    https://www.flaticon.com/authors/smashicons

    View Slide

  10. use_synth :pulse
    use_synth :saw
    use_synth :tri
    use_synth :sine
    use_synth :piano

    use_synth :tb303
    use_synth

    View Slide

  11. 播放取樣
    sample
    Sonic Pi 本身有很多內建取樣音色,非常好用
    sample :drum_heavy_kick
    sample :drum_cymbal_closed
    sample :drum_snare_hard
    sample :drum_roll
    sample :drum_tom_hi_soft
    sample :bd_tek
    打鼓

    View Slide

  12. 重複執行
    loop
    loop do
    notes.each_with_index do |n, i|
    use_synth :beep
    play n, amp: 0.7, release: 0.4
    sleep sleeps[i]
    end
    end

    View Slide

  13. 在跑 loop 的時候一定要記得 sleep!

    View Slide

  14. loop do
    # do something
    end
    loop do
    # do something2
    end
    不能兩個 loop 同時執行
    這行永遠不會執行

    View Slide

  15. 現場演奏神器!一秒變 DJ
    live_loop
    可以在程式碼修改後,讓音樂不斷奏
    live_loop :melody do
    notes.each_with_index do |n, i|
    use_synth :beep
    play n, amp: 0.7, release: 0.4
    sleep sleeps[i]
    end
    end

    View Slide

  16. 幫小星星加上鼓節奏
    live_loop 多聲部
    live_loop :drum do
    sample :drum_heavy_kick, amp: 2
    sleep 0.5
    end 加大大鼓力道,爽度大增!

    View Slide

  17. live_loop :hihat do
    sample :drum_cymbal_closed
    sleep 0.25
    end
    加上 hihat 跟一點創意...
    live_loop :hihat2 do
    sample :drum_cowbell
    sleep 1
    end

    View Slide

  18. 在 sonic pi 可以建立音階
    scale 音階
    loop do
    play scale(:c4, :major).choose(), release: 0.5
    sleep 0.25
    end
    從 C 大調裡面隨機選一個音符

    View Slide

  19. dorian
    lydian
    blues
    diminished
    還有更多...
    不只有大小調而已!

    View Slide

  20. 和弦
    chord
    loop do
    play_chord chord(:c4, :maj9)
    sleep 1
    end
    loop do
    play chord(:c4, :maj9).choose()
    sleep 0.25
    end
    一起播放!
    一次隨機選一個音
    C4 的 major9 和弦

    View Slide

  21. 改改數字、換個 synth
    自己動手試試看!

    View Slide

  22. • Sonic Pi 的 tick
    • 強大的 ring 系統
    • 利用 spread 創造節奏
    • sync 與 time 控制
    • 隨機(Random)
    • 建立 FX
    下一集,我們來介紹

    View Slide