👏

Tidal Cyclesの個別インストール(Windows10)

2022/12/13に公開

Tidal Cyclesの個別インストールに結構苦戦したのでメモ。

環境は人によって違うので、あっさり動く人もいれば、筆者と同じことをしても動かない人もいるとは思うけど。

長々書いたけど、何かがアップデートされるとこの方法では動かなくなりそうな気がする。

Gitとatomをインストール済みなので、必要なソフトを個別にインストールした。

https://tidalcycles.org/docs/getting-started/windows_install

Windowsへのインストールはかなりめんどくさい。

必要なソフトが1つもインストールされていない場合は一括でのインストールができるけど、そうでない場合は個別にインストールする必要がある。

その際に落とし穴がいっぱい。

バージョンが変わると突然動かなくなりそうで怖い。

SuperCollider

https://supercollider.github.io/

https://github.com/supercollider/supercollider

これがないと始まらない。これとSuperDirtで音を出している。サウンドエンジン。

自分でプログラムしてシンセサイザーとか作れる。

Windows版をダウンロード。筆者がインストールしたバージョンは3.13.0-rc1 for Windows 64-bit

インストーラーを起動すれば勝手にインストールしてくれる。

SC3 Plugins

後からでも良いのだけど、プラグインも入れておく。

チュートリアルをやる場合はこれがないと音を再現できないところが出てくるので。

https://supercollider.github.io/sc3-plugins/

公式からプラグイン(Version-3.13.0-rc1)をダウンロードして解凍し、SuperColliderを起ち上げて、File > open user support directory で開くフォルダ内のExtensionsフォルダにSC3pluginsをコピーする。

SuperDirt

https://github.com/musikinformatik/SuperDirt

DirtサンプラーのSuperCollider版。これがないと音が出ないというか、これをSuperCollider上で立ち上げることで、Tidal Cyclesを使えるようになる。

SuperColliderからインストールする。ちなみにSuperDirtはGitが必要なのでインストールしておく必要がある。筆者の環境ではGitはインストールしてあるので割愛。

SuperColliderを開くと、左側にターミナルのようなテキスト入力画面があるので、そこで以下を記述してctrl+enter。

Quarks.checkForUpdates({Quarks.install("SuperDirt", "v1.7.3"); thisProcess.recompile()})

Tidal Cyclesを使う場合はSuperCollider起動時にSuperDirtも起ち上げたいので以下の設定をしておく。

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

ドキュメント通りにスタートアップファイルをつくつて、SuperColliderを起ち上げなおすと、起動時にSuperDirtも立ち上がる。

haskell

Tidal Cyclesはhaskellなので、haskellもインストールする。

https://www.haskell.org/ghcup/

サイトのトップに行くと、Windowsインストールにはこれ、というコマンドがあるのでそのまま使う。公式ではnon-admin userのPowerShellでとあったのでその通りにした。

Haskellを使うためのもろもろの管理をするGHCupというものがインストールされる。JavaScriptでいうところのnpmとかみたいな感じ。

Set-ExecutionPolicy Bypass -Scope Process -Force;[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; try { Invoke-Command -ScriptBlock ([ScriptBlock]::Create((Invoke-WebRequest https://www.haskell.org/ghcup/sh/bootstrap-haskell.ps1 -UseBasicParsing))) -ArgumentList $true } catch { Write-Error $_ }

これを書いている時点ではこのコマンドでインストールされるghcのバージョンが落とし穴。

ghc9.2.5がインストールされるのだが、これを書いている時点では、Tidal Cyclesはghc9.4.2以上が必要なため、ghcをアップデートしないと動かない。

ちなみにこの必要バージョンがドキュメントのインストールのところではなく、アップグレードのところに書いてある。

https://tidalcycles.org/docs/getting-started/upgrading

TidalCyclesを一括でインストールする場合は必要バージョンがインストールされるようだが、手動でインストールする場合はバージョンに注意。

インストール中のメッセージではうまくいってないキットとかもありそうなのだけど、とりあえずghc9.4.2にアップデートすればTidal Cyclesは動くので、そのまま無視しているが、どんな影響があるのかよくわからない。

ghc9.4.2にアップデート

現在インストールされているGHC、HLS、Cabalのバージョン確認は以下。

ghcup list

ghc9.4.2をインストール。

ghcup install ghc 9.4.2

インストールするだけでは前バージョンのままなので使用するバージョンの変更対応も必要。

ghcup set ghc 9.4.2

バージョンを変更した後にターミナルを再起動しないとバージョンが変わってなかった。Vscodeを一回閉じたら動いたので、そういうことらしい。

Tidal Cycles

やっとTidal Cycles本体のインストール。

なのだけど、これが二つ目の落とし穴。

ドキュメントには以下が書いてあるのだけど、これを書いている時点では、以下だとインストールできない。

cabal update
cabal v1-install tidal

インストール時のコンソールに出てくるメッセージでも、うまくいってないのがわかるのだが、動かそうとしても、could not find module sound.tidal.context'とエラーが出る。

ので、アップグレードのほうに書いてある以下を使う。

cabal update
cabal install tidal --lib

こちらだとインストールができて、先ほどのエラーも出なくなる。

ドキュメントには安定性が低くなる可能性がある、となっているが、動かないので仕方ない。cabalのバージョンとか関係あるのかなと思ったけど、とりあえず動いたのでよしとした。

サンプル音源

チュートリアルをやろうとすると、そんなのデフォルトの音源にないよ、というのを使っていたりする。なので、それも手に入れておく。

チュートリアルの以下に詳しく書いてある。

https://tidalcycles.org/docs/patternlib/tutorials/course1#lesson-2-loading-sample-packs

ダウンロードしてきたら、解凍して、保存したい場所にフォルダを作って、そこにコピーしておく。

SuperColliderのスタートアップファイルにて、~dirt.loadSoundFiles;の下にもう一つロードするサウンドファイルを追加。

以下は例なので自分の保存場所のフォルダを指定する。

Windowsの場合、エスケープ処理しないと読み込んでくれない。ワイルドカードのアスタリスクも忘れずに。

~dirt.loadSoundFiles;  // load samples (path containing a wildcard can be passed in)
~dirt.loadSoundFiles("C:\\Users\\Username\\AppData\\Local\\SuperCollider\\downloaded-quarks\\samples-extra\\*");

~dirt.loadSoundFiles;を消したらデフォルトの音源を読み込めなくなったので、追加という形にしている。

VSCode

やっとプログラミングして音が出せるようになった。

テキストエディタ上でコードを書いて、再生までできる。

もともとatomが主流だったが、VSCodeにも拡張機能があるのでそちらを使う。atom自体、開発終了だし。

VSCodeはインストールされていることを前提に、以下の拡張機能を追加する。

https://marketplace.visualstudio.com/items?itemName=tidalcycles.vscode-tidalcycles

筆者の場合は、パスとかは勝手に設定されていた。

シンタックスハイライト

シンタックスハイライトはsetting.jsonに記述が必要。ワークスペースのみの設定にしておくと、いろんな言語を使う人にとってはごちゃごちゃしなくて便利。

まずは拡張機能をインストール。

https://marketplace.visualstudio.com/items?itemName=justusadam.language-haskell

setting.jsonに以下を追加。

"files.associations": {
    "*.tidal": "haskell"
}

サウンドブラウザ

サウンドブラウザと言って、左側のフォルダツリー部分に、使用するサウンドをツリー表示でき、さらに各サウンドを再生できるように設定する。

この設定も個別のワークスペースのみにしておくと良い。Next.jsとかpythonを使ってる時にはサンプル音源いらないし、むしろ邪魔。

以下は例なので、各自の保存フォルダを指定。

  "tidalcycles.sounds.paths": [
            "/path/to/Dirt-Samples"
            , "/path/to/other/samples"
        ]

この設定をしておくと、左側のアイコン部分にレコードっぽい円盤が出てくるので、そこをクリックするとツリー表示でサウンドが見られる。再生もできる。

簡単な使い方。

SuperColliderとSuperDirtを実行していることを前提に、コードを書いたら、1行だけ実行するのがshift + enter、全行実行するのがctrl + enter

ctrl + alt + hでストップできる。

SuperColliderとWindows Defender

SuperColliderは起ち上げ時にたまに以下のようなメッセージとともに、起動に数分かかることがある。

You can add scsynth.exe and/or supernova.exe *processes* to Windows Defender exclusion list to avoid this delay. It's safe.

待っていれば起動するが、メッセージのようにWindows Defenderの除外リストに入れれば速く起動するらしい。

以下はGithubのissue。

https://github.com/supercollider/supercollider/issues/4368

あとだいたいWindowsを再起動すると治る。この辺りはよくわからない。

まとめ

インストールがかなり大変。

環境設定だけでも、DAWとかサンプラーのこととか、多少でもDTMの知識がないと厳しいかも。

音を出すための前提ソフトが起動されていて、そこにテキストエディタからアクセスすることで音を出す、という形式なので、PCのサウンド周りに詳しくない人は、音を出すことすらできずに終わってしまいそう。DTMを触ったことがない人にとっては、何がわからないのかわからない…みたいな感じに陥ってしまいそうな気がする。

ただ、音を出せるところまで行くと結構楽しい。

ちょっと使った感じでは、ループパターンをコードで細かく変えたりしながら、ライブ感を持って演奏するのに向いてるのね、という印象。実際そういうイベントとかあるらしい。

ループものではない、展開のある曲をどうやって作ったらいいのか良くわからないので、触りながら模索していく予定。

Discussion