« ^ »

emacs-liveを使ってovertoneで音を出す

所要時間: 約 4分

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をコピー