Creative Coding

SonicPi3.1.0をLinux環境にソースからビルドした覚書

SonicPiはイギリスのSam Aaronが開発しているオープンソースソフトウェア。MacOSでのリリースののち、今はWindowsそしてRaspberryPi版を提供している。Linux版もDebianにはパッケージが存在するが、現在のところバージョン2となっているため最新版をLinuxで使用したいと思いビルドすることにした。

[OSについて]

・Linuxバージョン・ディストリビューション
Linux mint 19 mate
https://linuxmint.com/download.php

linux mintは軽量デスクトップで検索して見つけた。
そのためかsonic-piが提供しているubuntu用のビルドスクリプトではエラーが発生してしまう。
理由としては、ubuntuバージョンの違いによりおそらくパッケージ名が異なるためとパッケージの指定不足、ライブラリパスの違いさらにはスクリプトのパスの違い(これは何故なのか不明)など。
それらの修正をbuild-ubuntu-appビルド用スクリプトとSonicPi.proに加える必要がある。

[事前準備]

・gitのインストール

sudo apt-get update
sudo apt-get install git

[ビルド手順]

1.ソースの取得
cd (ダウンロードフォルダ)
mkdir sonicpi
cd sonicpi
git clone https://github.com/samaaron/sonic-pi.git
2.バージョン3.1.0にcheckout
cd sonic-pi
git checkout 3b1bb2c

checkoutのチェックサムは、https://github.com/samaaron/sonic-pi/releases から探して指定。
チェックサム確認

3.ビルドの準備

a)使用するビルド用スクリプト
app/gui/qt/build-ubuntu-app

b)修正
b-1)SuperColliderのバージョン設定
SUPERCOLLIDER_VERSION=3.9.1
SC_PLUGIN_VERSION=3.9.0
b-2)Aubioのバージョン変更
AUBIO_VERSION=c6ae035 #ver 0.4.6
(Aubioもgithubからビルドしているので同サイトでバージョンを確認可能)
supercollider、audioのバージョン設定

b-3)パッケージインストール部の修正
libboost1.58-devをlibboost1.62.dev
b-4)パッケージインストール部に以下を追加
libqt5opengl5-dev
qtwebengine5-dev
libqt5svg5-dev
libqt5websockets5-dev

参考にした記事
https://github.com/supercollider/supercollider/wiki/installing-SuperCollider-from-source-on-Ubuntu

パッケージインストール部に追加

b-5)最後のあたり。build sonic-pi server extensionsのところのパスを修正

../../server/bin/compile-extensions.rbを
../../server/ruby/bin/compile-extensions.rb

../../server/bin/i18n-tool.rbを
../../server/ruby/bin/i18n-tool.rb

../../server/bin/qt-doc.rb -o ruby_help.hを
../../server/ruby/bin/qt-doc.rb -o ruby_help.h

b-6)SonicPi.proファイルの修正
-qt5scintilla2を-L/usr/lib/libqscintilla2-qt5にする

# Linux only
unix:!macx{
LIBS += -lrt -L/usr/lib/libqscintilla2-qt5
当初、コンパイルエラーが発生しても意味が分からなかったが、qscintilla2というものが見つからないのだろうと当たりをつけて、ubuntuのパッケージを探して見たところlibqscintilla2-qt5が見つかった。そこで、locate libqscintilla2-qt5としてローカルディスク内を検索したところ、/usr/lib/に存在することがわかり、その指定に修正した。

4.ビルドの実行
./build-ubuntu-app

これでコンパイルは完了するが、起動用スクリプトが同梱されていない。
githubにあるのでそのテキストを取得する。

ソースファイル群のトップフォルダ位置に設置

wget https://raw.githubusercontent.com/samaaron/sonic-pi/master/run-debian-app
chmod +x run-debian-app

ビルドが完了したら

pulseaudioとの兼ね合いからのようだが

sudo apt-get install qjackctl
pasuspender -- qjackctl

とするといいようだ。しかしながら何度か試して見ないとわからない。
何度かsonicpiの起動が上手くいかなくても試しているうちに動くようになったりした。(原因不明)

(野村秀樹)