overtoneとは、clojureで動く、ライブコーディング可能な音に関するライブラリです。
wavファイルを作るにあたり、いくつか詰まりどころがあったので、メモを兼ねて共有します。
使った環境
- PC (Ubuntu 16.10)
- leininnge 2.7.1
プロジェクトの準備
プロジェクトを作って、project.cljのdependenciesにovertoneを追加します。lein new audio-practice
project.clj
[overtone "0.10.1"]
project.cljにovertoneを追加できたら、lein depsでovertoneをダウンロードします。
lein deps
注意
lein depsで取得しようとするscsynthとscsynth-extraのダウンロードに凄く(30分位)時間がかかります。
lein depsで止まっているように見えますが、裏側では動いていることがあります。(自分の場合はそうでした。)
進捗を知りたい方は、m2のダウンロード先のディレクトリをlsで参照すると、止まっていないことが分かって、安心して待てます。
ls -la ~/.m2/repository/overtone/scsynth/3.5.7.0 ls -la ~/.m2/repository/overtone/scsynth-extras/3.5.7.0/
overtone実行の準備
overtoneのプロジェクトを作り、leplを立ち上げて(use 'overtone.live)を実行してみます。すると、自分の環境では下記のエラーが出てovertoneが立ち上がらなかったり、立ち上がっても音が出なかったりしました。
これは、overtoneが音に関するライブラリなので、OSの設定が必要なためです。
*** ERROR: open directory failed '/home/asuki/.local/share/SuperCollider/synthdefs' Cannot connect to server socket err = そのようなファイルやディレクトリはありません Cannot connect to server request channel Cannot connect to server socket err = そのようなファイルやディレクトリはありません Cannot connect to server request channel Cannot connect to server socket err = そのようなファイルやディレクトリはありません Cannot connect to server request channel Cannot connect to server socket err = そのようなファイルやディレクトリはありません Cannot connect to server request channel Cannot connect to server socket err = そのようなファイルやディレクトリはありません Cannot connect to server request channel jack server is not running or cannot be started JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for 4294967295, skipping unlock JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for 4294967295, skipping unlock # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00007f0995aba0dc, pid=3974, tid=0x00007f09882ef700 # # JRE version: OpenJDK Runtime Environment (8.0_131-b11) (build 1.8.0_131-8u131-b11-0ubuntu1.16.10.2-b11) # Java VM: OpenJDK 64-Bit Server VM (25.131-b11 mixed mode linux-amd64 compressed oops) # Problematic frame: # C [libscsynth.so+0x220dc] SC_UdpInPort::SC_UdpInPort(World*, int)+0x9c # # Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again # # An error report file with more information is saved as: # /home/asuki/gitprojects/audio-video-practice/hs_err_pid3974.log # # If you would like to submit a bug report, please visit: # http://bugreport.java.com/bugreport/crash.jsp # The crash happened outside the Java Virtual Machine in native code. # See problematic frame for where to report the bug. # could not initialize audio. SocketException The transport's socket appears to have lost its connection to the nREPL server
ubuntu16.04でovertoneを使うために、自分は下記の対応を行いました。
関連するプログラムをインストール
sudo apt install supercollider-dev alsaplayer-jack pluseaudio-module-jack
audio関連の機能が使えるように、自分をaudioグループに追加
sudo adduser ${USER} audio
pulseaudioの設定を変更
overtoneで使うjackdは、音量調節を行うpulseaudioと共存できないらしいです。
そのため、pulseaudioを止めてjackdを起動します。
pulseaudio --kill jackd -R -d alsa -d hw:1
以上の設定でovertoneが動くと思います。
overtoneを実行
replで起動して、演奏をwavファイルに保存します。lein repl
(use 'overtone.live) (use 'overtone.inst.piano) (recording-start "overtone.wav") (piano) (piano 70) (piano 80) (recording-stop)
実際の音はこちらです。
overtone実行後
overtoneでの試行錯誤が終わったら下記のコマンドでpulseaudioを起動します。pulseaudio --start
これをしないと、PCのボリューム制御ができないままになります。
まとめ
scsynthのダウンロードに時間がかかったり、OSのオーディオ設定が必要でしたが、overtoneを動かしてwavファイルを作れました。sonic piのように音を変化させる方法をまだ見つけられてないので、「新しい音を作る」ことは出来ないのかもしれませんが、既に作られている音源(wavファイルなど)を組み合わせて音楽を作ることは出来そうです。
0 件のコメント :
コメントを投稿