Sonic PiをUbuntuで使う場合のサウンドサーバー絡みのあれこれ

Sonic Piについて

Sonic Piはミュージックシンセサイザーで、プログラミング教育にも用いられているソフトです。まぁ簡単に言うと、音楽をプログラムを使って書くみたいな感じです。
Sonic Pi - The Live Coding Music Synth for Everyone

Raspberry Pi (Raspbian)で動くソフトですが、例えばUbuntuのような他のLinuxでも使うことが出来ます。


Sonic Piの画面はこんな感じで、プログラミングコードを書いていくとすぐにそれを元に音楽を鳴らすことが出来ます。聴覚的にプログラミングとはなんなのかをつかむことが出来るため、始めてプログラミングをする人向けの学習ソフトとしても有用だと思います。

UbuntuにSonic Piをインストールした場合

まぁSonic Piの紹介はこんなところにしておいて、このソフトをUbuntuで使う場合にはちょっとした対処が必要になってきます。まずインストール自体はaptコマンドで出来ます。AptURLでインストール出来るようリンクを貼っておきます。
sonic-pi  (AptURLについてはこちらの記事を参照して下さい → AptURLを試してみる )
新しいバージョンをインストールする場合はPPAを利用するといいでしょう。

Sonic PiはJACKというサウンドサーバーを利用しますが、UbuntuではPulseAudioというサウンドサーバーを利用しています。Sonic Piをインストールしてソフトを立ち上げると、同時にJACKも起動してそれで音楽を流すようになっているようです。

ここで一つ問題が起きてきます。どうもJACKとPulseAudioは同時には動作出来ないため、Sonic PiによりJACKが使われると他のPulseAudioを使っているソフトで不都合が起きてきます。
自分の環境で起きたこととしては
・Firefox、ChromeでYoutube、ニコニコ動画のHTML5による動画再生が出来なくなる
・Clementineなどの音楽再生ソフトでも音楽が再生出来なくなる
といったことがありました。
Sonic Piを終了すれば直る場合と、終了した後も不都合が起きたままになることがあり、これではちょっとSonic Piは使いにくいです。

一応対処についても解説はあったのですが、Linuxのサウンドサーバーについての知識が必要になってきます。自分なりに何となくこうすれば大丈夫だろうというあたりはつかめたのですが、どういう理屈で大丈夫か理解出来ていないので、参考にした情報やサイトだけ紹介しておきます。
大雑把な理屈としては
・Sonic Piを終了した後にJACKを確実に終了させ、PulseAudioに確実に戻す
で大丈夫だと思います。また
・ JACKとPulseAudioを同時に動作させる
といった対処方法もあるようです。こっちを使えばわざわざJACKとPulseAudioを気にすること無くSonic Piを利用できるはずです。

参考になりそうな情報

まずは
・JACKサウンドサーバーの起動・終了方法
・PulseAudioサウンドサーバーの起動・終了方法
あたりを押さえておくといいかと思います。

またSonic Piをインストールすると以下のようなドキュメントも作られます。ここを読むと簡単に対処方法の紹介が書かれています。
/usr/share/doc/sonic-pi/README-JACKD

その他に参考になりそうな情報として、日本語の情報では以下のようなもの。
UbuntuStudioTips/Application/JACK-PulseAudio - Ubuntu Japanese Wiki
その他にはこういった情報もありました。
Linux Audio and Sonic Pi · Issue #1109 · samaaron/sonic-pi · GitHub

JACKの制御に関しては qjackctl というソフトが便利のようです。

 

 確認時の情報

2017年7月29日
環境 : Ubuntu 16.04.2
Sonic Pi 2.10.0 (PPAからインストール)




コメント

スポンサーリンク


このブログの人気の投稿

Ubuntu Softwareが起動しないのでいろいろと調べてみる(Ubuntu 20.04.1 LTS)

gnuplotでプロットなどの色をcolornameの指定で変更する

gnuplot : グラフにグリッド線を描く方法(set grid)

gnuplot : プロット画像のサイズ指定について(set sizeとの違い)

Pythonのformat()を使って1桁の16進数でも2桁で出力する方法