はじめに
TidalCyclesにある程度慣れてくると、自分用の関数をつくったりすることが増えてくると思います。
ただ、TidalCyclesを立ち上げるたびに毎回関数の定義をするためにCtrl+Enterするのは面倒ですし、関数定義が長くなってくるとファイル分割したくなってくると思います。
ちなみに環境は
- OS: Mac
- Editor: Atom
です。
関数定義をBootTidal.hsに記述する
Haskellのようにmodule モジュール名 where
みたいに宣言するだけで.tidalファイルからimportできればいいんですが、この方法では関数定義を別ファイルに切り出すことはできないようです。(できるかもしれませんが、自分が試した限りができませんでした)
公式のドキュメントによると、BootTidal.hsに関数定義を記述しておけば、TidalCyclesを立ち上げるたびに自動的に読み込んでくれるみたいです。
Everytime you start Tidal, the software is reading from a configuration file usually named BootTidal.hs.
肝心のBootTidal.hsのありかですが、TidalCycles起動時のコンソールに
Load BootTidal.hs from [BootTidal.hsのpath]
とでるので、このパスにあるBootTidal.hsを書き換えればよさそうです。(大元のファイルを書き換えない方法は後述しています)
関数定義の記述方法
すでに記述されている関数定義を参考に、例えば
:{
let elem' xs x = elem x xs
:}
のように記述しておけば関数elem'が定義され、使えるようになります。
ちなみに記述する場所は:set prompt "tidal> "
よりも前であればどこでもいいようです。
プロジェクトごとにBootTidal.hsを使い分ける
ただ、実際にはこの大元のファイルを書き換えるのは少し抵抗がありますし、ちゃんとプロジェクトごとにGit管理したい気もします。
TidalCyclesのGithubをみてみると、BootTidal.hsはプロジェクト直下に置いておけばそちらが優先的に読み込まれるらしいので、プロジェクト直下においておきます。
改めてTidalCyclesを立ち上げると、Load BootTidal.hs のpathが変更されていることが確認できると思います。
これによって、このプロジェクトのみで使える関数を定義できました。