Returns: SC3 on Linux

帰ってきたりなっくす!
昨年は爆発的にSCユーザが増えた年となり、かなりの方がSCに興味を持ち、触ってみて、挫折したのではないでしょうか?max6もリリースされ、SCなんていらなかったんや!との気持ちもなきにしもあらずです。
今年一発目は仮想環境上にSC on Linux環境を構築する方法を記載しました。もうこれでmac持ってないよ?とか言い訳はできませんね!linuxで音を扱う際にはなめてかかってはいけません。相当苦労するはめになります。SCをリポジトリからインスコしたからといって音がでるわけではありません。
環境は、仮想化ソフトとしてvirtualbox4.1.8、仮想マシンとしてubuntu11.10になります。vmwareでも構いませんが、virtualboxだとデフォで実機側に音を渡せます。また、SC開発版は結構仕様が変わっていますので、これを機にビルドして開発版をインストールしてみましょう!

準備

virtualbox

https://www.virtualbox.org/
バイナリ落としてインストールする。問題ない。

ubuntu

http://www.ubuntulinux.jp/
日本語Remix CDイメージのダウンロード。virtualboxの新規仮想マシンをデフォルトで作成して、isoからインストール。最近のlinuxディストリは驚くほど親切だ。数クリックでインストールが完了する。ubuntuのインストールが完了したら、とりあえずアップデートしておく。インストールからアップデート完了まで結構時間がかかる。コーヒーでも淹れてこよう。ココアでも良い。
なお、以降ターミナルで作業することになるが、なぜかxtermが前面にあるが使いづらいためアプリケーションの検索でterminal(端末)を探しておこう。

インスコ

supercollider

先はまだまだ長い。ダレる前にSCを入れてしまおう。

$ sudo apt-get install  git clone --recursive git://supercollider.git.sourceforge.net/gitroot/supercollider/supercollider
$ cd supercollider
$ cat README_LINUX.txt

なにやら面倒なことが書いてあるがbuild requirements (debian users)に書いてあるパッケージを入れよう。

$ sudo apt-get install build-essential libqt4-dev libqtwebkit-dev libjack-dev libsndfile1-dev libasound2-dev libavahi-client-dev libicu-dev libreadline6-dev libfftw3-dev libxt-dev pkg-config cmake

ここでcmakeするのはまだ早い。実は足りないものがあるので入れておこう。

$ sudo apt-get install emacs libcwiid-dev

これでビルドする準備は整ったはずだ。

$ pwd
  xxx/supercollider
$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install

これでSCの最新版インストール完了。ビルドにちょっと時間がかかるけれども、SCのインストールは特に難しくはないはずだ。ただ、linuxはそれほど甘くない!残念ながらまだまだ音は出ない。めげずに続けて必要なことをやっていこう。

さらにインスコ

linuxで音を扱うにはカーネルをlowlatencyかrealtimeにする必要がある。ブチブチさせたくないならな。今回選択したubuntuではこの辺りが若干ごたごたしている。とくに今回いれた11.10はいまいちよく分からない部分がある。安定して、さらに日本語記事がアップされるまで気長に待とうじゃないか。
ここではlowlatencyカーネルを入れてみよう。
https://wiki.ubuntulinux.jp/UbuntuStudioTips/Setup/Kernels
”PPAからLowLatencyカーネルやRealtimeカーネルを導入する方法”に従う。

$ sudo add-apt-repository ppa:abogani/ppa
$ sudo apt-key adv --recv-key --keyserver keyserver.ubuntu.com F141B61E
$ sudo apt-get update
$ sudo apt-get install linux-lowlatency

低レイテンシカーネルを加えたのでgrubの設定を変えておこう。

$ sudo vi /boot/grub/grub.cfg
  set default="2"に変更

13行めのset default="0"をset default="2"にしておく。menuentryの3つ目が先ほどいれたLinux 3.0.0-13-lowlatencyだからだ。一旦リブートしてカーネルがlowlatencyに変更されたのを確認しよう。

$ sudo reboot
 ...
$ uname -a
  Linux xxx 3.0.0-13-lowlatency

OKだ。linuxカーネル3.0にビビるな。でもまだまだ設定は続く。

$ sudo adduser 自分 audio
$ sudo su -c 'echo @audio -rtprio 99 >> /etc/security/limits.conf
$ sudo su -c 'echo @audio -memlock 250000 >> /etc/security/limits.conf
$ sudo su -c 'echo @audio -nice -10 >> /etc/security/limits.conf

なおこれらの値は昔どこかのサイトに載っていたままなので、自分の環境に合わせて変更してほしい。なんの設定かは未だに知らない。。。

jackd

linuxでSCを扱う場合、jackdというソフトウェアを通すことで音の出力を可能にしている。オーディオサーバみたいなものだ。これがまた厄介だったりするが、linuxでSCを使う上での特徴であり、便利といえば非常に便利だ。
では、設定だが横着するためにGUIのqjackctlをいれよう。

$ sudo apt-get install qjackctl

ここでなにやら変な画面に遷移するので、リアルタイム実行優先度の設定を有効にする、で、はいにしておこう。

$ qjackctl(もしくは、dashホームのメディア関係からqjackctl)

なんかGUIが立ち上がったので、設定変更をしよう。これが大事だったりする。
まず、MessagesをクリックしてMessagesウィンドウを開いておこう。なんらかのエラーがあった場合にはこのウィンドウが必要になる。
次にSetupだ。わけがわからないと思うが、問題ない。大半の人が意味不明だろう。まずは、Miscタブに遷移し、Enable D-Bus interfaceのチェックを外そう。これは新しいものなのか私は知らないものだし、なんらかの悪さをしているようだ。続いてSettingsタブに戻り、Realtime、No Memory Lockにチェック、Periods/Bufferを3にする。さらに、右側のAudioをPlayback OnlyにしてOKボタンだ。では、Playボタンをクリックしてみよう。ポップアップが出ずに、ウィンドウの真ん中がStartedでRTがピコピコすればOKだ。OKならStopしておこう。なんらかのエラーが出たならばググるしかない、エラーの場合相当苦労することになるかもしれないので、覚悟しておこう。
なお、ここでの設定は暫定的に音を出すための設定です。入力を殺していますしちゃんとした設定があるはずです。

エディタ

emacs,vim,geditどれでも好きなものを選択可能だ。ここではvimの使い方を紹介する。今年はvimが大流行すると思うのでこの機会に覚えておくのも良いかもしれない。vimでscを扱う場合には、scvimというプラグインを利用する、もちろんvimは必要だがrubyも必要だ。

$ sudo apt-get install ruby vim

scvimはscをビルドした際にインストールされるので、これで準備は完了になる。

使う

ここまでインストール、設定にかなりの労力が必要だったかと思われる。これがlinuxだ!
では早速使ってみよう。

$ scvim

なんか別ウィンドウが立ち上がり、動いている。ヘルプを構築?しているらしいのでちょっと待とう。Welcome to SuperCollider, type :SChelp for helpと表示されればOKだ。後は音を鳴らすだけだ。

s.boot;
{SinOsc.ar()}.play;

と入力して、s.boot;行でF6ボタンを押してみよう(fn+F6ボタンの場合も)。次にplay行でF6ボタン。サイン波が聴こえれば完了だ。お疲れ様でした!

いじょう

さて、これで仮想環境でSCが実行できることになりました。別にlinuxでSCが使いたい!というわけではありません。macありますし。1台のマシンでサーバ、クライアント環境を構築したかったわけですよ。仮想上のSCをサーバとして、実機側をクライアントとして色々やれればなあ、と。サーバサイドSC実現できると良いですね!

今回は初心に返り、linux環境を構築してみました。なんと本ブログにメモを取り始めてどうやら4年経つようです。全くもってSC力は上がっていないのはなんなんでしょう?むしろ始めて数週間の方が書けた気がします。。

以上となります、どうぞ今年もよろしくお願い致します。