ラズパイにTidalCyclesをインストールして実行する

# 用いたラズパイ・機材

Raspberry Pi4 Model B Starterキット(8GB RAM)
Amazonで購入できます。試してないですが、RAM4GBでも動くと思います。

https://amzn.asia/d/0jbAfsY

# ラズパイの初期設定

こちらの記事の通りにやりました

https://sukiburo.jp/setup-raspberry-pi/

# SuperColliderのインストール

[こちらの記事](https://note.com/hrkmti_lc25/n/n51a8d1154e4f)を参考に、少しだけ変更させていただきました

```sh
# 日本語入力ソフトを導入
sudo apt-get update
sudo apt-get install fcitx-mozc

#ビルドに必要なライブラリをインストール
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install libjack-jackd2-dev libsndfile1-dev libasound2-dev libavahi-client-dev libreadline-dev libfftw3-dev libxt-dev libudev-dev libncurses5-dev cmake git qttools5-dev qttools5-dev-tools qtdeclarative5-dev libqt5svg5-dev qjackctl

#SuperColliderのダウンロードとビルド
cd ~
git clone --recurse-submodules https://github.com/supercollider/supercollider.git
cd supercollider
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DSUPERNOVA=OFF -DSC_ED=OFF -DSC_EL=OFF -DSC_VIM=ON -DNATIVE=ON -DSC_USE_QTWEBENGINE:BOOL=OFF ..
cmake --build . --config Release --target all -- -j3
sudo cmake --build . --config Release --target install
sudo ldconfig
```

# 使用するサウンドカードの指定

```sh
aplay -l
```

上記を実行すると、次のような出力がされると思います。

```
**** List of PLAYBACK Hardware Devices ****
card 0: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones]
  Subdevices: 8/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
card 1: vc4hdmi0 [vc4-hdmi-0], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: M4 [M4], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 3: vc4hdmi1 [vc4-hdmi-1], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
```

今回はオーディオインターフェースM4を使いたいので、以下のjackドライバー設定で`-dhw:2`とします([この記事](https://deviceplus.jp/raspberrypi/replacing-the-analogue-audio-output-on-raspberry-pi/#011)にもある通り、ラズパイに付属のイヤホンジャックはとても音質が悪いです)

```sh
＃jackドライバー（SuperColliderのブートで自動起動）の起動時設定
echo /usr/bin/jackd -P75 -p16 -dalsa -dhw:2 -r44100 -p1024 -n3 > ~/.jackdrc
# -dhw:0を指定すると元からついているサウンドカードで、別のUSBオーディオインターフェース使うときは-dhw:{card番号}
```


# SuperDirtのインストール

ラズパイを再起動

```sh
sudo reboot
```

再起動後、スタートメニューの「Sound & Video」からSuperColliderを起動して以下のコマンドを実行

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

# sc3-pluginsのインストール

[公式のREADME](https://github.com/supercollider/sc3-plugins#compile-from-source)を参照

```sh
cd ~
git clone --recursive https://github.com/supercollider/sc3-plugins.git
cd sc3-plugins
mkdir build && cd build
# for both scsynth and supernova plugins; set -DSUPERNOVA=OFF to build only scsynth plugins
cmake -DSC_PATH=../../supercollider -DCMAKE_BUILD_TYPE=Release -DSUPERNOVA=ON ..
sudo cmake --build . --config Release --target install
```

# TidalCyclesのインストール

```sh
sudo apt-get install haskell-platform
cabal update
cabal install tidal-1.7.10 --lib
```

# vim-tidalのインストール

```sh
# vimとtmuxのインストール
sudo apt-get install tmux vim
# vim-plugのインストール
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
```

`~/.vimrc`に下記を記載

```vim
call plug#begin()
Plug 'tidalcycles/vim-tidal'
call plug#end()
```

再度vimを開いてvimコマンド`:PlugInstall`を実行

その後

```sh
# creates symlinks on /usr/local/bin for tidal and tidalvim scripts
cd ~/.vim/plugged/vim-tidal
sudo make install
cd
```

# 動作確認

```sh
vim example.tidal
```

としてvimで開き、適当にコードを書いて実行します

```haskell
setcps (80/60/4)

d1 $ s "bd*2" # gain 0.9
```

vim-tidalにおいては、「Ctrl+E」で実行できます。vimのノーマルモードで`:TidalHush`すればhushになります。
その他のコマンドは[README](https://github.com/tidalcycles/vim-tidal#commands)をみてください。

音が鳴らない場合は、再度`aplay -l`を実行してみてオーディオインターフェースが接続されているか確認してみたり、SuperColliderのモニタ(Command+Mで立ち上がります)でそもそもServerが立ち上がっているのか確認してみたりしてください。

## 参考にさせていただいた記事

https://sukiburo.jp/setup-raspberry-pi/

https://note.com/hrkmti_lc25/n/n51a8d1154e4f

https://qiita.com/skyfish20ch/items/d11bb48db35007248977

https://deviceplus.jp/raspberrypi/replacing-the-analogue-audio-output-on-raspberry-pi/#011

https://github.com/tidalcycles/vim-tidal/issues/33

https://github.com/supercollider/sc3-plugins#compile-from-source