TidalCycles メモ <導入編>

変態なので Haskell でもと思い、なんなら TidalCycles1 と思った。絶対 emacs で。

tidalCycles を普通にいれる。方法は彼らのサイト参照

でいきなり、こけた。どうやっても ghci と ghc がターミナル上と emacs の中でバージョンが違くてこまった。逆にこれで一緒だったらもっと気づかないけど…。結局 PATH が違っていて、当面 emacs の外で使わなそうだし、emacs 合わせにした。多分、昔なんか違う方法で ghc を入れたんだと思う。

emacs 周り

doom を Haskell に対応させる。lsp は使うかわからんけど、入れた。

(haskell +lsp)
Code Snippet 1: .doom.d/init.el

doom sync を忘れずに。

tidal.elを落としてきて、適当なとこに保存。

;; tidalcycles
(package! tidal
  :recipe (:local-repo "~/Utility/tidal"))
Code Snippet 2: .doom.d/packages.el

簡単。設定終わり。

さて、考え方としては、

Super Collider って音を操作すると言語とセットの開発環境みたいなソフトを入れて、その上に Super Dirt という tidalCycles(Haskell)の REPL と交信する Synth サーバー?を立ち上げる。

その上で、エディタ側で REPL プロセスを立ち上げて、宣言毎に Super Dirt に送る。そうすると音がなる。音のソースは基本的にサンプル(音ファイル)からみたい。 Oscilliator が使ってそのままサイン波等出せるのかは謎。

なにはともあれ、これで普段の環境から演奏できるようになった。

ためす

-- 全部消す
hush

  -- ドラムベース
d1 $ sound "db"
Code Snippet 3: helloworld.tidal

Ctrl-c Ctrl-s で Tidal Mode になって、実行したい宣言のところで Ctrl-c Ctri-e で実行。 d1 って書いてあるところで実行してみて、音が流れれば成功。 hush のところで、音を止める。

music, haskell, elisp


  1. 音楽のライブコーディングできるやつ。ライブコーディングは、その場でプログラミングして、いろんな絵を出したり、演奏をするパフォーマンス。 ↩︎