この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
Overtoneで音楽を奏でよう
Overtoneとは、Clojureで音を作って音楽を鳴らすことができるシンセサイザーです。(プログラマブルシンセサイザーというらしい) SuperColliderというプログラマブルシンセサイザーをClojureでラップしているのが、このOvertoneだそうです。
環境構築方法
今回使用した動作環境は以下のとおりです。
- OS : MacOS X 10.7.5
- Clojure : 1.5.1
- Leiningen : 2.1.2
Overtoneを使ってみる
まずはleiningenでプロジェクトを作成します。
% lein new music
% cd music
次に依存するライブラリをmusic/project.cljに記述しましょう。
(defproject music "0.1.0-SNAPSHOT"
:description "use overtone"
:dependencies [[org.clojure/clojure "1.5.1"]
[overtone "0.8.1"]])
project.cljを記述したらlein depsで依存ライブラリを取得しておきます。
% lein deps
プロジェクトの設定ができたら、次はreplを起動して内部SuperColliderサーバへ接続します。 overtone.liveをロードすれば、Overtoneへの接続ができます。また、外部でovertoneサーバを起動して接続することもできるみたいです。
% lein repl
user=> (use 'overtone.live)
・
・
--> Connecting to internal SuperCollider server...
--> Connection established
_____ __
/ __ /_ _____ _____/ /_____ ____ ___
/ / / / | / / _ \/ ___/ __/ __ \/ __ \/ _ \
/ /_/ /| |/ / __/ / / /_/ /_/ / / / / __/
\____/ |___/\___/_/ \__/\____/_/ /_/\___/
Collaborative Programmable Music. v0.8
user=>
Getting Startedに従って進めてみましょう。下記のようにすると220hzの鋸歯状波(きょしじょうは)が鳴ります。 ※音がなるので注意 なお、止めるにはkill関数を使用します。
user=> (definst foo [] (saw 220))
#<instrument: foo>
user=> (foo) ;音がなります
#<synth-node[loading]: user/foo 34> ;ここで表示されてる数値をkillすれば止まる
user=> (kill 34) ;これで音が止まる
nil
また、Overtoneではいろいろな楽器の音を出すことができます。ためしに、ピアノの音を出してみましょう。 下記コードを実行すると、ドレミファソラシドがピアノ音でなります。
user=> (use 'overtone.inst.piano)
user=>(map #(do
(Thread/sleep 500)
(piano %)) (scale :c4 :major))
なお、 ここにチートシートがあるので、参考にしてください。
まとめ
今回は、Clojure用プログラマブルシンセサイザーを紹介しました。 この動画を見ると、けっこういろんなことができることがわかります。