emacs-liveはOvertoneとQuilを使用したライブコーディングに特化したEmacsの設定です( https://github.com/overtone/emacs-live )。 今回はemacs-liveをインストールしてovertoneで音を鳴らしてみます。
環境
以下がインストールされている環境を前提としています。
- macOS: 10.12.1(16B2657)
- Java HotSpot(TM) 64-Bit Server VM 1.8.0_45-b14
- Clojure 1.8.0
- Leiningen 2.7.1
emacs-liveのインストールと起動
インストールは簡単ですが、既存の.emacs.dをリネームするので注意が必要です。
bash <(curl -fksSL https://raw.github.com/overtone/emacs-live/master/installer/install-emacs-live.sh)
インストールが完了すると .emacs.d
が作成されます。
すでに存在する場合、リネームされます。
Emacsを起動しましょう。私はターミナルで使うのが好きなので`-nw`をつけています。
Emacsを起動する::
$ emacs -nw
emacs-liveの起動画面
,;; ,;; MM""""""""‘m ,;; mM MmMmmmmm ,;; M‘ MMmM 88D8B.D8b. .d8888b. .d8888B. .D8888B. ,;; mM MmmMMmMm 88’’88’‘88 88’ ‘88 88’ ‘"" Y8oOoOO. ,;; Mm mmmMmMmm 88 88 88 88. .88 88. ... 88 ,;; mm .m DP dp DP ‘88888p8 ’88888P’ ’88888P’ ,;; mMMmMmmmmMmm ,;; ,;; M""MMMMMmmm m""m m""MMMmM""M mM""""""""‘m ,;; m MMMmMMmM m M M mmMmm m mM MmmMmMmM ,;; m mmmMMmmM M M m MmMMp m m‘ mMmM ,;; m MmMMMMMm m m m MMMM’ .m mm mmMMMMMM ,;; m MmMMmmmm m M M mmP’ .mm mm mmmmMMMM ,;; M m m M m .dmMm Mm .M ,;; MMmmMMmMmmM mmMM MmmmmmMMmMM MmMMMmmMmmMM VerSiOn 1.0BETA29 ,;; ,;; HTTP://GithuB.coM/OVeRtOne/emaCS-LIvE ,;;sOmewHeRe ,;; heLlo TaKesxiSxIMAda, sOmewHeRe IN THE wOrLd tHe suN iS ShininG fOr YoU RIGhT NOw.
Emacsが起動して文字がゆらゆらしていればインストールは成功しています。
Emacsからreplモードに接続
Clojureのreplを起動するには lein repl
を実行しますが、先にプロジェクトを作成して、依存パッケージをインストールしておきます。
こうすることで`lein repl`した環境ではインストールしたパッケージが利用可能な状態でREPL環境が起動します。プロジェクトの作成については[こちら](http://qiita.com/TakesxiSximada/private/a3df2a84d57968d36abd)をご覧ください。
Emacsからreplモードに接続
lein repl
でClojureのREPLモードを起動しておきます。
次にEmacsを開いて M-x cidr-connect
を実行します。
するとHostとPortを聞いてきます。
今回はローカルで起動しているREPL環境に接続するので何も入力せずエンターを押します。
PortはREPL環境を起動した時に、
標準出力に接続先のポート番号が表示されているのでそれを入力します。
ポートの入力画面::
-UUU:----F1 *scratch* All (22,0) (Lisp Interaction AC Paredit Undo-Tree yas VHl SliNav -1- ElDoc) --------------------------------
Port for 127.0.0.1:
REPL環境に接続先ポート番号は出力されている::
nREPL server started on port 61675 on host 127.0.0.1 - nrepl://127.0.0.1:61675
REPL-y 0.3.7, nREPL 0.2.7
Clojure 1.8.0
接続直後::
More information.
demo.core>
-UUU:@**--F2 *cider-repl localhost* Bot (47,11) (REPL company) ---------------------------------------------------------
Connected. Let the hacking commence!
overtoneを起動して音を鳴らす
overtone.live
をインポートしてovertoneを起動します。
overtoneを起動する::
star.core> (require '[overtone.live])
--> Connecting to internal SuperCollider server...
--> Connection established (require '[overtone.live])
--> Booting internal SuperCollider server...
_____ __
/ __ /_ _____ _____/ /_____ ____ ___
/ / / / | / / _ \/ ___/ __/ __ \/ __ \/ _ \
/ /_/ /| |/ / __/ / / /_/ /_/ / / / / __/
\____/ |___/\___/_/ \__/\____/_/ /_/\___/
Collaborative Programmable Music. v0.10.1
Hello Sximada, may this be the start of a beautiful music hacking session...
nil
star.core>
起動に成功したらピアノの音を鳴らしてみましょう。
ピアノ音を鳴らす::
demo.core> (require '[overtone.inst.piano])
nil
demo.core> (overtone.inst.piano/piano)
#<synth-node[loading]: overtone.inst.piano/piano 37>
demo.core>
なりましたか?今度は一気に音を鳴らしてみます。
一気に音を鳴らす::
demo.core> (map (fn [x] (overtone.inst.piano/piano x)) (range 60 70 2))
(#<synth-node[loading]: overtone.inst.piano/piano 39> #<synth-node[loading]: overtone.inst.piano/piano 40> #<synth-node[loadi\
ng]: overtone.inst.piano/piano 41> #<synth-node[loading]: overtone.inst.piano/piano 42> #<synth-node[loading]: overtone.inst.\
piano/piano 43>)
emacs-liveを自分の.emacs.d/init.elに取り込む
emacs-liveをインストールすると既存のemacsの設定ファイルをリネームして退避します。 しかし自分のemacsの設定にemacs-liveの設定を反映させたいこともあるでしょう。 以下項目をこなすと取り込めます。
- emacs-liveのinit.elを自分のinit.elの内部に追記する
- manifest.elをコピー
- libをコピー