Clojure環境の構築からshadertoneを試してみるまでのメモ

github.com
Shadertoneで遊んでみた – 導入編 | yoppa org

shadertoneを動かしてみました.Clojure環境ないしwindowsだしで苦労したので,Clojure環境構築からメモしておきます.OSはwindows8.1です.

JDKの用意

まずJDKを用意します.理由は後述しますが,32bit用を使います.JDK7でもJDK8でもあまり変わりはないように思います.
Java SE Development Kit 8 - Downloads
インストール先はパスに空白のない方が良いみたいな話もありますが実際のところは分かりません.僕は一度嫌な思いをしたことがあるので,デフォルトから変えています.

Leiningenをインストール

ライブラリ等を管理してくれるLeiningenを入れます.
leiningen-win-installer
windowsインストーラを使ってインストールできます.インストール時に複数JDKがある場合は選択させられます.ちなみに,インストール後は.lein以下にあるconfigure-leiningen-installerを動かすことで使用するJDKを変えることができます.

overtone, shadertoneを試す

overtone, shadertoneが動くか試します.
このリポジトリのものがシンプルな構成で試すことができます.
rogerallen/sot · GitHub
コマンドプロンプトでこのプロジェクトのルートに移動し,以下のコマンドを打ちます.

lein deps
lein run

lein depsでproject.cljに記述された依存関係にあるライブラリが自動的にダウンロードされます.lein runで画面が表示され,音と共に色が変わるのが確認できればokです.

このとき引っかかったのが,overtoneの環境です.overtoneは後ろでSuperColliderが動いているらしいのですが,overtone.liveでcan't connect to native serverのようなエラーが出ます.このnative serverの部分のライブラリがJDK 32bitでできているせいか,64bit版のJDKでinternal serverを動かすことができず,これに気付くのにかなり時間がかかりました.
ちなみに,SuperColliderを手でインストール,起動してconnect-external-serverで接続することもできますが,overtone.liveをuseするには,設定ファイルをいじる必要があるみたいです.ファイルのいじり方は分かりません.

emacsemacs-liveの準備

とりあえず動くことがわかったので,shadertoneのサンプルをいじってみましょう.そのためにはエディタが必要です.エディタにはemacsを使います.また,今回はライブコーディング用にチューンされたemacs-liveを使用します.これを使えば簡単にciderに加え,paredit(S式単位でのコードの編集,移動を扱う拡張)やauto-complete等の機能が使えます.普段使いにはどうなのかわかりませんが,とりあえずClojure書いてみたいという人にはすぐに環境が揃ってよいかも.

まず,.lein以下にあるprofile.cljを編集し,

  :plugins [[cider/cider-nrepl "0.9.1"]
           [refactor-nrepl "1.1.0"]]
  :dependencies [[org.clojure/tools.nrepl "0.2.7"]]

を追記します.

こちらの環境はwindowsなので,公式に書かれているemacs-liveの導入は,あまり参考にならないかもしれません.
以下は僕がやったやり方です.
まずはemacsのバイナリを落としてきます.
Index of /pub/gnu/emacs/windows
emacs-24.5-bin-i686-mingw32.zipを落として展開します.
次にemacs-liveをダウンロードするなり,クローンするなりします.
overtone/emacs-live · GitHub
bin/run-emacsemacsを起動し,emacs-liveのディレクトリにあるinit.elを開き,M-x eval-bufferで全部読み込むとemacsemacs-liveに変身します.
もしも,既にemacsを使っていて,なんらかの設定がされていれば,その内容によっては,正しくemacs-liveの機能が使えない場合があります.emacs-liveしか使わないのであれば.emacs.dにemacs-liveフォルダの中身を全部突っ込んでも良いかもしれません.
僕は試していませんが,他の環境と競合しないので,gnupackをダウンロードして.emacs.dに突っ込んでしまう方法でもよいかもしれません.

shadertoneのサンプルを試す

overtone/shadertone · GitHub
shadertoneのリポジトリをダウンロードするなり,クローンするなりしたらexample/00demo_intro_tour.cljを開き,M-x cider-jack-inします.
あとはC-c C-eでコードを評価していくだけ.結構楽しいです.
それと,僕が試した限りだと,(def snare (sample (freesound-path 26903)))等はダウンロードがタイムアウトして全て使えませんでした.自分で用意する必要があるかも.

感想

結構楽しいし,何か作りたいとは思いますが,僕の環境では不安定で,すぐ落ちます.overtoneが悪いのか,shadertoneが悪いのかはわかりませんが,このままだとパフォーマンスなんかには使えそうにもありませんね…
あとメモリも1GB以上は食うみたいですね.僕のノートPCは4GBしかメモリがないのですが,StackOverflowで落ちたりもしました.
安定化しないかもう少しいじってみる予定ではありますが,今後の開発に期待でしょうか…
現在,ライブコーディングの作品を作ろうとしているのですが,今回は音楽が中心なので,映像はquilにやってもらう方が良いかなぁと思っています.