かなり前に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
- Emacs: エディタ
- Tidal: The interpreter (Haskell) 音楽を記述するためのDSLおよびインタプリタ.
- An audio engine
- SuperDirt for receiving messages and turning them to sound. TidalCyclesとSuperColliderをつなぐプラグイン.
- 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