以前, Live Coding について記事を書きました.
これがまた, めちゃくちゃカッコいいんだ. 憧れは行動を突き動かす!
というわけで, 今回は実際に 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) のインストールが必要
- https://github.com/overtone/overtone/wiki/Installing-and-starting-jack
- JACK Audio Connection Kit - ArchWiki
# 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 は両立できない.
- dbus - “JACK server could not be started” when using Qjackctl - Ask Ubuntu
- https://github.com/overtone/overtone/wiki/Installing-and-starting-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))