この記事ではSpacemacsへのTidalCycles(以下Tidal)のインストール方法を紹介する。公式のインストール方法の要点のみを抜粋した。
Tidalとはなにかというと、コーディングにより音楽を作り出すというものである。専用の音楽ソフトは一切使わない。普段使っているエディタにインストールするものであり、エディタをDAW(Digital Audio Workstation)化することができる。
公式サイトにある動画をみるとわかりやすい。
https://www.youtube.com/watch?list=PLybSFICi4UliK17U6rxPneXAyxvmGAe5T&v=smQOiFt8e4Q
Tidal自体に音を鳴らす仕組みはなく、実態は合わせてインストールするSuperColliderという環境にある。TidalはHaskellからOSC(通信プロトコル)を送信し、SuperColliderがそれを受信して音を鳴らしている。他にもSonic Pi(Ruby)やFoxDot(Python)、Overtone(Clojure)もあるが、すべてローカルサーバー上で起動するSuperColliderに命令し音を鳴らしている。
Tidalの面白いところはコーディングで音楽を作れることである。つまり、開発者の能力で作曲できるのだ。
音楽作成経験ゼロの筆者でもコードがかければ以下のような音楽を簡単につくることができる。
https://soundcloud.com/mwrote/pattern003
インストールした時点で様々な音が用意されているので、すぐ音楽を作って遊ぶことができる。
対応しているEditorについて
公式ではAtomが推薦されているが他にも以下のEditorに対応している。
本記事はEmacs限定だが、Atomの場合の要点はページ下部にまとめたのでそちらを参照。
Tidalの特徴
一番はコーディングしてその場で音を鳴らすことができるリアルタイム性である。
ライブのようなシーンに非常に向いている。ビジュアル化ツールと併用してVJすることも得意とする。
次にTidalの非常に簡素な命令文だ。例えば、以下の一行を書くだけで、ズンチャッという音がなる。
d1 $ sound "bd cp"
また、常に一定のリズムでリピートされるのも面白い。上の文一形でずっと音がなり続ける。
Tidalを使って作られたKindohm(Mike Hodnick)さんのアルバム「RISC Chip」を聞くとわかりやすい。
http://shop.conditional.club/album/risc-chip
結構しっかりしたEDM系の音楽のように聞こえるが、これがコードで書かれているので驚きである。
※spotifyで視聴可能
https://open.spotify.com/album/0epYgxq19wqfiU7jMqzUcA
筆者の環境
- MacOSX Sierra (MacBook Pro 2013 late)
※Windowsでも動作確認済み
この記事でセットアップすること
- Haskellの開発環境(spacemacsユーザーのみ)
- Tidalの開発環境
事前にインストールしておくもの
- spacemacs or Emacs
- Homebrew
インストールのアジェンダ
インストール全体が長いので以下のように分割する。
- Haskellのインストール
- Tidalのインストール
- SuperDirtのインストール
- EmacsのTidal環境セットアップ
1. Haskellのインストール
Haskellのビルド、パッケージ管理で現在主流となっているstackをインストールする。
$ brew install haskell-stack
(spacemacs User Only) Haskellコーディング環境構築
$ stack install apply-refact hlint stylish-haskell hasktags hoogle
※~/.local/bin
にインストールされる
ghcのバージョンが古いと怒られた場合
最新版のnaightlyビルドをインストールする。 ~/.stack/global-project/stack.ymlのresolverを以下のように変更 `` resolver: nightly-2017-07-31 `` spacemacsのレイヤーに記載されている以下のパッケージをインストールする。 ``` $ stack setup ;;最新版がインストールされる $ stack install apply-refact hlint stylish-haskell hasktags hoogle ```2. Tidalのインストール
Tidalの実態をstackからインストールする。
$ stack setup
$ stack install tidal
3. SuperDirtのインストール
TidalCyclesがシンセ環境として参照しているSupercollider(アプリケーション)をインストールする
$ brew cask install supercollider
SuperDirtというSuperColliderサンプラーをインストール。
SuperColliderを起動し左カラムのテキストエディタに以下をコピペする。
include("SuperDirt")
Command + Enter をキーボードから入力しコード実行。
しばらく待ち、右下のコンソールにSuperDirt installed
と表示されれば完了
(オプション) sc3pluginsのインストール
ここからインストールしたsupercolliderと同じバージョンのコンパイルされたsc3-pluginsをインストールする(Latest releaseのタグがついているもの)。
~/Library/Application Support/SuperCollider/Extensions
に解凍したSC3plugins
を移動する。
4. EmacsのTidal環境セットアップ
以下のサイトからtidal用のelispファイルをダウンロードし、ローカルに保存する。
https://raw.githubusercontent.com/tidalcycles/Tidal/master/tidal.el
※spacemacsユーザーは ~/.emacs.d/private/local 以下推薦
init.el(spacemacsユーザーは.spacemacs)にダウンロードしたファイルを読み込む記述を追加する
;; tidal.elを保存した場所を指定する
(load-file "~/.emacs.d/private/local/tidal.el")
(setq tidal-interpreter "/usr/local/bin/stack")
(setq tidal-interpreter-arguments
(list "repl"
"--ghci-options=-XOverloadedStrings"
))
C-x C-e 上記式を評価する。もしくはEmacsを再起動する。
(オプション) EmacsからSuperColliderを直接起動する設定
わざわざSuperColliderというアプリを立ち上げて、SuperDirt.startと実行するのは手間である。Emacsから直接SuperColliderを立ち上げる方法は、こちらの方が書かれているので参考を載せておく。
※内部でLinuxのmkfifoコマンドを使用しているためWindowsでは動かない
http://www.rockhoppertech.com/blog/supercollider-with-emacs-on-osx/
Tidalの動作確認
- SuperColliderを起動し、
SuperDirt.start
をテキストエリアに貼り付ける - カーソルが1で貼り付けた行にあることを確認し、Command + Enter を実行する
- アプリ右下のServerラベル右のエリアの文字が緑色になっていることを確認する
- Emacsを起動し、スクラッチバッファを開き、C-c C-s(stack-start-haskell)を実行する
-
d1 $ sound "bd"
と入力しC-c。音がなるか確認する
以上で、Tidalのインストールは終了である。
Atomインストールショートカット版
brew install haskell-stack
stack setup
stack install tidal
brew cask install supercollider
supercolliderを立ち上げ以下をコピペ
include("SuperDirt")
右下のコンソールにSuperDirt installed
と表示されたらOKとりあえずアプリを終了する
- Atom > Preference(⌘+,) > Install >
tidalcycles
を検索 > Install - Atom再起動
- Atom > Preference(⌘+,) > Packages > tidalcycles > Settings > Ghci Path >
stack ghci
を入力 - この記事の「TidalCyclesの動作確認」の方法で音が鳴っているか確認する