はじめに
今日は音関係のことで、SuperCollider をインストールしたのでメモ。
自分は何をしたいのかわからないが、とりあえず、
- 演奏を録音したい
- 自作自演のピアノ演奏しながら、ドラムとか流したい
というのでまぁ、いじってみるか、ということに。かなり飛躍があるかな。
インストールした
半日かかりでしたが、できたのでメモ。環境は Linux Ubuntu20.04 (古いVAIO)です。
- SupperCollider
- FoxDot
FotDot
これはpip でなんの問題もなくインストールされました。
あとで tkinker がないと言われたので、これも入れました。
$ sudo apt install python3-tk
SuperCollider
ソースを持ってきて、cmake でbuildするも、いろいろ足りなくて怒られたので、いろいろインストールしたら最終的に動きました。
Linux Current Version 3.12.12 source tarball for Linux を持ってきました。
- Qt5 のインストール
これはソースファイルの README_LINUX.md にも書いてありますが、必要なので入れます。最初、何も入っていませんでした。
$ apt-cache policy qt5-default
qt5-default:
インストールされているバージョン: (なし)
候補: 5.12.8+dfsg-0ubuntu2.1
バージョンテーブル:
5.12.8+dfsg-0ubuntu2.1 500
500 http://jp.archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages
500 http://security.ubuntu.com/ubuntu focal-security/universe amd64 Packages
5.12.8+dfsg-0ubuntu1 500
500 http://jp.archive.ubuntu.com/ubuntu focal/universe amd64 Packages
そこで、オリャー、と全部入れました。確かREADMEに書いてあったとおりにしています。
sudo apt-get install qt5-default qt5-qmake qttools5-dev qttools5-dev-tools qtdeclarative5-dev qtwebengine5-dev libqt5svg5-
dev libqt5websockets5-dev
その結果、無事にQTがインストールされました。
$ apt-cache policy qt5-default
qt5-default:
インストールされているバージョン: 5.12.8+dfsg-0ubuntu2.1
候補: 5.12.8+dfsg-0ubuntu2.1
バージョンテーブル:
*** 5.12.8+dfsg-0ubuntu2.1 500
500 http://jp.archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages
500 http://security.ubuntu.com/ubuntu focal-security/universe amd64 Packages
100 /var/lib/dpkg/status
5.12.8+dfsg-0ubuntu1 500
500 http://jp.archive.ubuntu.com/ubuntu focal/universe amd64 Packages
- cmake でビルド
ソースをみると、CMakeList.txt があるので、いつものように
$ mkdir tmpdir
$ cd tmpdir
$ cmake ..
$ make
$ sudo make install
とするのですが、いろいろなくていれます。以下、順に対処しました。
$ sudo apt install libsndfile-dev
$ sudo apt install libxt-dev
$ sudo apt install -y libjack-dev
$ sudo apt-get install libasound2-dev
$ sudo apt install libqt5websockets5-dev
ときに
-- Building the Qt IDE
CMake Error at /usr/lib/x86_64-linux-gnu/cmake/Qt5/Qt5Config.cmake:28 (find_package):
Could not find a package configuration file provided by "Qt5WebSockets"
with any of the following names:
Qt5WebSocketsConfig.cmake
qt5websockets-config.cmake
Add the installation prefix of "Qt5WebSockets" to CMAKE_PREFIX_PATH or set
"Qt5WebSockets_DIR" to a directory containing one of the above files. If
"Qt5WebSockets" provides a separate development package or SDK, be sure it
has been installed.
の
$ sudo apt install apt-file
$ sudo apt-file update
$ sudo apt-file search Qt5WebSocketsConfig.cmake
$ sudo apt-file search Qt5WebSocketsConfig.cmake
libqt5websockets5-dev: /usr/lib/x86_64-linux-gnu/cmake/Qt5WebSockets/Qt5WebSocketsConfig.cmake
で場所を調べることはできました。が、結局は上記のapt install 作戦ですべて対応できたので CMAKE_PREFIX_PATHの設定は使いませんでした。
- SuperCollider 起動
$ scide
で起動しました。やったと思ったのですが、、、、。
- audio デバイスのライルタイム実行優先度の設定
scide 起動後に、デバイスについてのエラーが出でいた。権限の問題らしい。
(メッセージをメモし忘れた、さんざんググったのに)
$ sudo apt-get install -y libjack-jackd2-dev
$ sudo apt install qjackctl
で/etc/security/limits.d/audio.conf を作成して、リアルタイム実行優先度
の設定を有効にするか、と聞かれるので「はい」を選択しました。それでも、
音が鳴りません。
いろいろ書かれているが、jack2のためにとりあえずreboot したら、エラーが
出なくなりました。
https://github.com/Arkq/bluez-alsa/issues/369
https://note.com/foxdot_nakaji/n/neba6f98d2d71
https://ymotongpoo.hatenablog.com/entry/2018/05/20/214019
$ qjackctl
で起動されるGUIでデバイスの設定を確認できます。
- 音を出力するサウンドカードを指定する
それでSuperCollider を起動してFoxDot.startとし、FoxDotを起動すると、ま
たしてもエラーがSuperCollider の方で出る。出力するデバイスを指定するこ
とが必要だったらしい。
$ cat /proc/asound/cards
0 [HDMI ]: HDA-Intel - HDA Intel HDMI
HDA Intel HDMI at 0xb2530000 irq 48
1 [PCH ]: HDA-Intel - HDA Intel PCH
HDA Intel PCH at 0xb2534000 irq 49
$ aplay -l
**** ハードウェアデバイス PLAYBACK のリスト ****
カード 0: HDMI [HDA Intel HDMI], デバイス 3: HDMI 0 [HDMI 0]
サブデバイス: 1/1
サブデバイス #0: subdevice #0
カード 0: HDMI [HDA Intel HDMI], デバイス 7: HDMI 1 [HDMI 1]
サブデバイス: 1/1
サブデバイス #0: subdevice #0
カード 0: HDMI [HDA Intel HDMI], デバイス 8: HDMI 2 [HDMI 2]
サブデバイス: 1/1
サブデバイス #0: subdevice #0
カード 0: HDMI [HDA Intel HDMI], デバイス 9: HDMI 3 [HDMI 3]
サブデバイス: 1/1
サブデバイス #0: subdevice #0
カード 0: HDMI [HDA Intel HDMI], デバイス 10: HDMI 4 [HDMI 4]
サブデバイス: 1/1
サブデバイス #0: subdevice #0
カード 1: PCH [HDA Intel PCH], デバイス 0: ALC286 Analog [ALC286 Analog]
サブデバイス: 1/1
サブデバイス #0: subdevice #0
2つのデバイスがある。PCHを使いたい。HDMIではなくて。
$ jackd -R -d alsa -d hw:1
jackdmp 1.9.12
Copyright 2001-2005 Paul Davis and others.
Copyright 2004-2016 Grame.
Copyright 2016-2017 Filipe Coelho.
jackdmp comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details
no message buffer overruns
no message buffer overruns
no message buffer overruns
JACK server starting in realtime mode with priority 10
self-connect-mode is "Don't restrict self connect requests"
audio_reservation_init
Acquire audio card Audio1
creating alsa driver ... hw:1|hw:1|1024|2|48000|0|0|nomon|swmeter|-|32bit
configuring for 48000Hz, period = 1024 frames (21.3 ms), buffer = 2 periods
ALSA: final selected sample format for capture: 32bit integer little-endian
ALSA: use 2 periods for capture
ALSA: final selected sample format for playback: 32bit integer little-endian
ALSA: use 2 periods for playback
JackEngine::XRun: client = SuperCollider was not finished, state = Running
この状態のまま、
$ scide &
でSuperCollider を起動します。そこで、
FoxDot.start
を行います。エラーができませんでした。
音を鳴らす
いざ、python3 -m FoxDot
でFoxDotを起動し、FoxDotのコンソールで
Clock.bpm = 60
p1 >> pluck()
と入れると、音がなりました。ヤッター!!^^)/
これ、何に使えるのだろう。。。
まとめ
Linux Ubuntu20.04 でSuperCollider + FoxDot で音を鳴らすことができた。
録音、リアルタイムのインタラクションでなにか使えるかなー。。
といらえず、古いVAIO上のUbuntu20.04 で動いたのだが、これは、RasPiや
Windows ノートパソコンで使いたいな。設定が面倒そうだ。。。
(2022/04/17)