Tidal Cycles環境構築メモ 2022.4( Windows11 + VSCode )

## 概要

ライブコーディング環境『Tidal Cycles』を導入した。そのメモ。

主に参考にしたページ

https://gist.github.com/yoggy/1f144f6d50d3ff707a4787447e168906

## 誰向けか

Windows x VSCodeでTidal Cycles環境を構築したい人

## 環境

|項目名|内容|
|-|-|
|OS|Windows11|
|Editor|Visual Studio Code|


### Super Colliderインストール

exeをダウンロードしてインストール。インストールパスもデフォルトのまま。
今回はバージョンは3.12.12だった。

https://supercollider.github.io/downloads

## sc3-plugin導入

https://github.com/supercollider/sc3-plugins/releases

```sc3-plugins-[version]-Windows-64bit-VS.zip```をDLした。

これを解凍したものを、SuperColliderの拡張ディレクトリに入れることで導入できる。

拡張ディレクトリはSuperColliderを起動し下記コードを入力後、```Ctrl+Enter```で右の出力にSuperColliderの拡張ディレクトリのパスが表示されるので、それで確認できる。

```sh:Super Collider上
Platform.userExtensionDir
```

## Git導入（入れてない人は）

https://git-scm.com/download/win

次のSuperDirtをインストールする際、QuarksというSuper Colliderのパッケージマネージャを用いる。これはGitがないと動かない。上のURLからDLできる。


## SuperDirt導入

https://github.com/musikinformatik/SuperDirt

Tidal Cyclesで使用できる音源。
SuperDirtで以下のコードを入力することで導入できる。

```sh:Super Collider上
Quarks.checkForUpdates();
Quarks.install("https://github.com/musikinformatik/SuperDirt.git");
```

インストールできているかの確認

```sh:Super Collider上
Quarks.folder
```

で表示されたパス（Quarksでインストールしたものが入っている）にSuperDirtがあればOK。

```Quarks.installed```を使用しても見れるが、ちゃんとインストールできていなくてもSuperDirtが表示されていることが原因で少し困ったので、上記の方法がおすすめです。

尚、参考記事に従いv1.0をインストールしたところエラーは吐かないが音が鳴らないという、最悪な状況になった。↓

https://club.tidalcycles.org/t/d1-sound-bd-doesnt-sound/3983

## Stackインストール

https://github.com/commercialhaskell/stack/releases

Haskellのライブラリマネージャ。上記ベージから```stack-[version]-windows-x86_64-installer.exe```をDLし、実行。

今回は```2.7.5```をインストールした。

## Tidal Cycles導入

```powershell:powershell
chcp 65001 # 文字コードをutf-8に変換。やらないと途中でエラーを吐きました
stack install tidal
```

## VSCodeの設定

#### TidalCycles for VSCodeを導入

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214706/c62358de-fc95-e971-1ef9-d3da49310f00.png)

#### 設定の```Use Stack Ghci```にチェック

VSCodeの設定（Ctrl+,）で開くやつで上記項目を探しチェックを入れることで、stackで導入したTidalを使用することができる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214706/97671df0-511b-7cc2-b8c4-080f916bf054.png)


#### シンタックスハイライトの設定

- Haskell Syntax Highlightingを導入

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214706/c5656738-424f-e325-3489-deeea47ed1b6.png)

- tidalファイルをHaskellと紐づける

VSCodeの```setting.json```を開き、以下を追加。

```json:setting.json
"files.associations": {
    "*.tidal": "haskell"
}
```

## 音を鳴らしてみる

```sh:Super Collider上
include("SuperDirt")
SuperDirt.start
```

Super Colliderの出力に次のように出ていればSuper Dirtが起動できている。

```sh:Super Colliderの出力

218 existing sample banks:
.git (0) 808 (6) 808bd (25) 808cy (25) 808hc (5) 808ht (5) 808lc (5) 808lt (5) 808mc (5) 808mt (5) 808oh (5) 808sd (25) 909 (1) ab (12) ade (10) ades2 (9) ades3 (7) ades4 (6) alex (2) alphabet (26) amencutup (32) armora (7) arp (2) arpy (11) auto (11) baa (7) baa2 (7) bass (4) bass0 (3) bass1 (30) bass2 (5) bass3 (11) bassdm (24) bassfoo (3) battles (2) bd (24) bend (4) bev (2) bin (2) birds (10) birds3 (19) bleep (13) blip (2) blue (2) bottle (13) breaks125 (2) breaks152 (1) breaks157 (1) breaks165 (1) breath (1) bubble (8) can (14) casio (3) cb (1) cc (6) chin (4) circus (3) clak (2) click (4) clubkick (5) co (4) coins (1) control (2) cosmicg (15) cp (2) cr (6) crow (4) d (4) db (13) diphone (38) diphone2 (12) dist (16) dork2 (4) dorkbot (2) dr (42) dr2 (6) dr55 (4) drum (6) drumtraks (13) dr_few (8) e (8) east (9) electro1 (13) em2 (6) erk (1) f (1) feel (7) feelfx (8) fest (1) fire (1) flick (17) fm (17) foo (27) future (17) gab (10) gabba (4) gabbaloud (4) gabbalouder (4) glasstap (3) glitch (8) glitch2 (8) gretsch (24) gtr (3) h (7) hand (17) hardcore (12) hardkick (6) haw (6) hc (6) hh (13) hh27 (13) hit (6) hmm (1) ho (6) hoover (6) house (8) ht (16) if (5) ifdrums (3) incoming (8) industrial (32) insect (3) invaders (18) jazz (8) jungbass (20) jungle (13) juno (12) jvbass (13) kicklinn (1) koy (2) kurt (7) latibro (8) led (1) less (4) lighter (33) linnhats (6) lt (16) made (7) made2 (1) mash (2) mash2 (4) metal (10) miniyeah (4) monsterb (6) moog (7) mouth (15) mp3 (4) msg (9) mt (16) mute (28) newnotes (15) noise (1) noise2 (8) notes (15) numbers (9) oc (4) odx (15) off (1) outdoor (6) pad (3) padlong (1) pebbles (1) perc (6) peri (15) pluck (17) popkick (10) print (11) proc (2) procshort (8) psr (30) rave (8) rave2 (4) ravemono (2) realclaps (4) reverbkick (1) rm (2) rs (1) sax (22) sd (2) seawolf (3) sequential (8) sf (18) sheffield (1) short (5) sid (12) sine (6) sitar (8) sn (52) space (18) speakspell (12) speech (7) speechless (10) speedupdown (9) stab (23) stomp (10) subroc3d (11) sugar (2) sundance (6) tabla (26) tabla2 (46) tablex (3) tacscan (22) tech (13) techno (7) tink (5) tok (4) toys (13) trump (11) ul (10) ulgab (5) uxay (3) v (6) voodoo (5) wind (10) wobble (1) world (3) xmas (1) yeah (31) 
... file reading complete. Required 444 MB of memory.

SuperDirt: listening to Tidal on port 57120
```

VSCodeで任意の名前.tidalを作成し、次を入力し、その上で```Ctrl+Enter```

```haskell:test.tidal
d1 $ s "bd cp"
```

正常に動作していれば、次のような出力が出て、バスドラムとクラップが鳴る。

```sh:VSCodeのOUTPUT
GHCi, version 9.0.2: https://www.haskell.org/ghc/  :? for help
Loaded GHCi configuration from C:\Users\[my_name]\AppData\Local\Temp\haskell-stack-ghci\2a3bbd58\ghci-script
ghci> ghci> [TidalCycles version 1.7.10]
Installed in C:\sr\snapshots\4735ed14\share\x86_64-windows-ghc-9.0.2\tidal-1.7.10
Listening for external controls on 127.0.0.1:6010
Connected to SuperDirt.
tidal> tidal> 
```

音を停止したいとき次を入力し、その上で```Ctrl+Enter```


```haskell:test.tidal
hush
```

## 雑感

正直Windowsでやりたくないが、音源の追加等ができるらしく、DTM用のPC（Win）に導入した。
Windowsでの環境構築、昔よりはましな気がするが、やっぱり体験としては最悪だ......