かなり前にLiveCodingについていろいろ調べたのですが、最近ふたたび興味を持ちましたのでいろいろ調べ始めています。今回はとりあえずHaskell製のTidalCyclesをインストールしてHelloWorldしてみようと思います!

環境

  • OS: EndeavourOS
  • Editor: Doom Emacs

TidalCyclesとは

TidalCycles(タイダルサークル). 略してTidal.

Alex McLeanがつくったLive Coding環境, Haskell製.

Live code with Tidal Cycles | Tidal Cycles

EndeavourOS に環境をインストール

EndeavourOSというArch系Distroを使っているのでマニュアルインストールします. 基本的には公式手順どおり.

Archtectures

いろいろと用語がでてくるのではじめは戸惑う.

ref. https://tidalcycles.org/docs/getting-started/tidal_start

  • A Pattern Library
    1. Emacs: エディタ
    2. Tidal: The interpreter (Haskell) 音楽を記述するためのDSLおよびインタプリタ.
  • An audio engine
    1. SuperDirt for receiving messages and turning them to sound. TidalCyclesとSuperColliderをつなぐプラグイン.
    2. SuperCollider, sending sound out. デファクトスタンダードなLiveCoding環境.

Doom Emacsにtidal-modeを導入

Emacsでキモとなる2つの編集モードは haskell-modeとtidal-mode. 公式githubにtidal.elがあるのでこれを設定する. キーバンドもこのファイルを読むのがわかりやすい(ドキュメントなさそう).

https://github.com/tidalcycles/Tidal/blob/dev/tidal.el

Live codingをするならば, スニペットや補完など, Emacsのテキスト編集能力を活かすノウハウがたくさん使えそうな予感がする. あとで深堀りたい.

音を鳴らす

ref. Start Tidal | Tidal Cycles

SuperCollider IDE

SuperCollider/SuperDirt立ち上げ.

  • SuperCollider IDE(scide)を立ち上げる.
  • ServerタブからBoot ServerでSuperColliderサーバ起動
  • SuperCollider IDEのエディタからSuperDirt起動. エディタに以下を貼り付けて評価.
SuperDirt.start;

SuperCollider/SuperDirt/Tidalのそれぞれの役割を理解して順に手順をふまないと音がでなくて焦った.

Emacs

  • EmacsでC-c C-sでTidalを起動.
  • Emacs で C-c C-eで評価.
d1 $ sound "bd sn"

無事に音がなりました.

Tips

JackではなくPipewireで音を鳴らしたい

LinuxのオーディオサーバにJackではなくPipewireを使っている場合, pw-jackをつかってSuperColliderを起動.

$ pw-jack scide

ref. Supercollider - jack - pipewire - bluetooth? (linux) - Questions and Answers - Tidal Club

IDEではなくCLIでSuperColliderを立ち上げ

sclangというSuperColliderのCLIがある.

$ pw-jack sclang

See Also