2023/4/14
初版
windowsにOvertoneをインストールする。
Overtoneは、SuperColliderへ接続するClojureプログラミング環境で
ClojureでSuperColliderの音源の音を鳴らすことができる。
まずは、音源であるSuperColliderを以下のURLからダウンロードしてインストールする。
起動は、メニューから以下を選択する:
SuperCollider-3.13.0
以下のurlからダウンロードしてインストールする: https://aka.ms/download-jdk/microsoft-jdk-17.0.6-windows-x64.msi
以下を実行する:
scoop install leiningen
# バージョンの確認
lein --version
Leiningen 2.10.0 on Java 17.0.6 OpenJDK 64-Bit Server VM
clj
Clojure 1.11.1
user=>
# [Ctrl]+[C]で抜ける
#プロジェクトを作成する
lein new ot777
# ot777は任意
cd ot77
# project.cljを編集して以下のようにする:
------------------------------------------------
(defproject ot777 "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "EPL-2.0 OR GPL-2.0-or-later WITH Classpath-exception-2.0"
:url "https://www.eclipse.org/legal/epl-2.0/"}
:dependencies [[org.clojure/clojure "1.11.1"][overtone/overtone "0.10.6"]]
:repl-options {:init-ns ot777.core})
------------------------------------------------
# 実行
lein repl
#出力
nREPL server started on port 49927 on host 127.0.0.1 - nrepl://127.0.0.1:49927
REPL-y 0.5.1, nREPL 1.0.0
Clojure 1.11.1
OpenJDK 64-Bit Server VM 17.0.6+10-LTS
Docs: (doc function-name-here)
(find-doc "part-of-name-here")
Source: (source function-name-here)
Javadoc: (javadoc java-object-or-class-here)
Exit: Control+D or (exit) or (quit)
Results: Stored in vars *1, *2, *3, an exception in *e
ot777.core=>
#以下のように入力する:
ot777.core=> (use 'overtone.core)
#出力
--> Loading Overtone...
--> Please boot a server to start making noise:
* (boot-server) ; boot default server (honours config)
* (boot-internal-server) ; boot an internal server
* (boot-external-server) ; boot an external server
* (connect-external-server) ; connect to an existing external server
nil
#以下のように入力する:
ot777.core=> (boot-external-server)
--> Booting external SuperCollider server...
--> Connecting to external SuperCollider server: 127.0.0.1:30711
--> Connection established
_____ __
/ __ /_ _____ _____/ /_____ ____ ___
/ / / / | / / _ \/ ___/ __/ __ \/ __ \/ _ \
/ /_/ /| |/ / __/ / / /_/ /_/ / / / / __/
\____/ |___/\___/_/ \__/\____/_/ /_/\___/
Collaborative Programmable Music. v0.10.6
Hello User, just take a moment to pause and focus your creative powers...
:happy-hacking
ot777.core=>
#(デモ)以下を入力する:
ot777.core=> (demo (sin-osc))
#<synth-node[loading]: ot777.core/audition-synth 33>
ot777.core=> (demo 7 (lpf (mix (saw [50 (line 100 1600 5) 101 100.5]))
#_=> (lin-lin (lf-tri (line 2 20 5)) -1 1 400 4000)))
#<synth-node[loading]: ot777.core/audition-synth 34>
ot777.core=>
#以下を入力する:
ot777.core=> (definst foo [] (saw 220))
#<instrument: foo>
ot777.core=> (foo)
#<synth-node[loading]: ot777.core/foo 39>
ot777.core=> (stop)
nil
ot777.core=>
#以下を入力する(複雑なもの)
---------------------------------------------------
(definst kick [freq 120 dur 0.3 width 0.5]
(let [freq-env (* freq (env-gen (perc 0 (* 0.99 dur))))
env (env-gen (perc 0.01 dur) 1 1 0 1 FREE)
sqr (* (env-gen (perc 0 0.01)) (pulse (* 2 freq) width))
src (sin-osc freq-env)
drum (+ sqr (* env src))]
(compander drum drum 0.2 1 0.1 0.01 0.01)))
(definst c-hat [amp 0.8 t 0.04]
(let [env (env-gen (perc 0.001 t) 1 1 0 1 FREE)
noise (white-noise)
sqr (* (env-gen (perc 0.01 0.04)) (pulse 880 0.2))
filt (bpf (+ sqr noise) 9000 0.5)]
(* amp env filt)))
(def metro (metronome 128))
(defn player [beat]
(at (metro beat) (kick))
(at (metro (+ 0.5 beat)) (c-hat))
(apply-by (metro (inc beat)) #'player (inc beat) []))
---------------------------------------------------
#上のプログラムの実行:
ot777.core=> (player (metro))
#音を止める:
ot777.core=> (stop)
Overtone関連:
https://github.com/overtone/overtone
Overtoneで音楽プログラミング!
Clojureで音楽を奏でる
Clojure (overtone + quil)によるコーディングとコードを音楽にするライブコーディング環境の試作
Overtone: Clojureで音楽を書こう
Clojure で楽器を演奏しよう! Overtone をインストールしてみた
FoxDot関連:
Pythonで始めるアルゴレイヴ入門
FoxDot - Live Coding with Python v0.8
FoxDot(音楽用ライブコーディング環境)をインストール
Python&SuperColliderで奏でる音楽ライブコーディング環境「FoxDot」をセットアップ(インストール)する方法!
FoxDotの「超基礎」第一弾!「テンポ設定&サンプルを鳴らす&シンセを鳴らす」で遊び始めろ!
Pythonでライブコーディングできると聞いて、FoxDotを触ってみた
SuperCollider関連:
SuperCollider
Designing Sound in SuperCollider
オープンソースの音響プログラミング言語「SuperCollider」の紹介
SuperCollider自主練 - 基本編
以上