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

TidalCycles - Haskell meets Music

cannorin
October 04, 2019

TidalCycles - Haskell meets Music

cannorin

October 04, 2019
Tweet

More Decks by cannorin

Other Decks in Technology

Transcript

  1. VRC-LT #5
    TidalCycles - Haskell meets Music
    cannorin (@cannorin_vrc)

    View Slide

  2. 2

    Study: 数理論理学,
    プログラム言語の理論
    Job: F# プログラマ
    in VRC: VOLT Enthusiast,
    VRC-LT Speaker (#2~)

    View Slide

  3. 3
    世は大ライブコーディング時代
    ライブコーディング
    a) 勉強会やプレゼンの一環として,その場でプログラム
    を書きながら解説などを行うこと.
    b) シェーダ言語や音響合成言語をリアルタイムで書いて
    パフォーマンスを行うこと.

    View Slide

  4. 4
    世は大ライブコーディング時代
    ● 即興性・ライブ性が強く,作品そのものだけでなくそ
    れが作られる過程も伝える/楽しむことができる
    ● アーティストのプログラミング学習やプログラマの自己
    表現の手段となりうる
    → VRChat でやるのにとても向いているのでは????

    View Slide

  5. 5
    ライブコーディングでキックを鳴らしたい
    ● フレンチコアという音楽ジャンルが大好き
    ● 都合のよいことにプログラミングができる
    → ライブコーディングでフレンチコアしたい!
    → でもどうやって……?

    View Slide

  6. 6

    View Slide

  7. 7
    TidalCycles との出会い

    View Slide

  8. 8
    TidalCycles とは
    ● 今最もアツい音響生成用ライブコーディング環境
    ● Haskell 上の DSL で実装されている(!)
    ● エディタから GHCi にコードを送ると TidalCycles が 受
    け取り音を鳴らす
    ● バックエンドは SuperCollider (別途インストール)

    View Slide

  9. 9
    コード例1
    -- トラックd1: フレンチコアキック
    d1 $ sound "909" -- TR-909 のキックを鳴らす
    # up (-2.5) -- ピッチを下げる
    # shape 0.92 -- ディストーションでぶっとくする
    # lpf 5000 -- 5000Hz 以上の音を切る

    View Slide

  10. 10
    コード例2
    -- トラックd2: オフビートのベース
    d2 $ n “[ ~ c ]*2” -- オフビートに鳴らす (~は休符)
    # sound "supersaw" -- ノコギリ波を鳴らす
    # crush 4 -- ビットクラッシャーにかける
    # up (-30) -- ピッチめちゃくちゃ下げる
    # shape 0.6 -- ぶっとくする
    # gain 1.15 -- ゲインを調整
    # resonance 0 -- ローパスフィルタのクセをなくす
    # cut 2 -- 音が被らないようにする (2はID)

    View Slide

  11. 11
    実演タイム?

    View Slide