以前, Live Coding について記事を書きました.

これがまた, めちゃくちゃカッコいいんだ. 憧れは行動を突き動かす!

https://vimeo.com/22798433

というわけで, 今回は実際に Overtone を使って, Clojure で音楽をならしてみます.

Overtone

Overtone は, Clojure 製の音楽環境の OSS. Clojure で 音楽を演奏できる.

Clojure の導入は以下を参照.

Overtone Install

leiningen でインストールする.実験用ディレクトリ作成.

$ lein new insane-noises

insane-noises/project.clj [overtone “0.9.1”] の依存関係を追記.

(defproject insane-noises "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "https://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "https://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[org.clojure/clojure "1.6.0"]
                 [overtone "0.9.1"]) ;; ここ

overtone をインストール.

$ cd insane-noises
$ lein deps

Jack のインストール (Linux Only)

音を鳴らすためのサーバにつなぐためには, Linux ではさらに外部ツール (Jack) のインストールが必要

# Ubuntu
$ sudo apt-get install jack-tools ant openjdk-6-jdk fftw3 qjackctl
# ArchLinux
$ sudo pacman -S jack2 qjackctl supercollider

Jack サーバを起動. qjackctl は GUI なのでわかりやすい. これを立ち上げて,再生を押して起動. (設定から インタフェースの選択をしないと再生できなかった)

pulseaudio が起動している場合

鬼門だった. pulseaudio と jack は両立できない.

いろいろ方法はある. 自分は, pulseaudio を停止する方法をつかった.

pulseaudio --kill

SuperCollider との接続

overtone から supercollider サーバに接続する.

repl のほうでポートに接続.

# External server 起動
$ user=> (use 'overtone.core)
$ user=> (boot-external-server)

音がでるか確認. ピーっと音が出れば OK.

user=> (demo (sin-osc))

以下を打ち込むと, ドレミファソラシドが流れる.

user=> (use 'overtone.inst.piano)
user=>(map #(do
         (Thread/sleep 500)
         (piano %)) (scale :c4 :major))

Special Thanks