Overtoneを使ってキラキラ星を演奏します。
実行環境
- macOS Sierra 10.12.1(16B2657)
- clojure: 1.8.0
- overtone: 0.10.1
- Leiningen 2.7.1 on Java 1.8.0_45 Java HotSpot(TM) 64-Bit Server VM
プロジェクトを作成する
leinでプロジェクトを作成します。
$ mkdir star
$ cd star
$ lein new star --to-dir .
作成したらproject.cljにovertoneを追加します。
project.clj::
(defproject star "0.1.0-SNAPSHOT"
:description "Twinkle, twinkle, little star"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:main star.core
:dependencies [
[org.clojure/clojure "1.8.0"]
[overtone "0.10.1"]
])
project.clj
を更新したら lein deps
で依存ライブラリをインストールします。
$ lein deps
その他プロジェクトの作成は overtoneを使って音を出す をご覧ください。
コードを書く
src/star/core.clj
にコードを書きます。
src/star/core.clj::
(ns star.core
(:gen-class main true)
(:require
[overtone.api]
))
(overtone.api/immigrate-overtone-api)
(defn setup [& args]
(require '[overtone.live]))
(setup)
(require '[overtone.inst.piano :refer [piano]])
(defn melody-a [& args]
(piano 60)
(Thread/sleep 600)
(piano 60)
(Thread/sleep 600)
(piano 67)
(Thread/sleep 600)
(piano 67)
(Thread/sleep 600)
(piano 69)
(Thread/sleep 600)
(piano 69)
(Thread/sleep 600)
(piano 67)
(Thread/sleep 600)
(Thread/sleep 600)
(piano 65)
(Thread/sleep 600)
(piano 65)
(Thread/sleep 600)
(piano 64)
(Thread/sleep 600)
(piano 64)
(Thread/sleep 600)
(piano 62)
(Thread/sleep 600)
(piano 62)
(Thread/sleep 600)
(piano 60)
(Thread/sleep 600)
(Thread/sleep 600)
)
(defn melody-b [& args]
(piano 67)
(Thread/sleep 600)
(piano 67)
(Thread/sleep 600)
(piano 65)
(Thread/sleep 600)
(piano 65)
(Thread/sleep 600)
(piano 64)
(Thread/sleep 600)
(piano 64)
(Thread/sleep 600)
(piano 62)
(Thread/sleep 600)
(Thread/sleep 600)
)
(defn twinkle [& args]
;; <RECORD-START>
(recording-start "testing.wav")
;; </RECORD-START>
;; <PLAY>
(-> {}
(melody-a)
(melody-b)
(melody-b)
(melody-a)
))
;; </PLAY>
;; <RECORD-STOP>
(recording-stop)
;; </RECORD-STOP>
(defn -main
[]
(twinkle)
(java.lang.System/exit 0)
)
ただ流すのではなくファイルに出力して見ます。この行でファイルパスを指定して録音を開始します。
(recording-start "testing.wav")
この行で録音を終了します。
(recording-stop)
演奏
lein run
で演奏を開始します。
$ lein run
Overtoneが起動して演奏が行われれば成功です。