Ubuntu QuantalでPureData

PureDataUbuntu 12.10 (Quantal Quetzal)で動かす。

JACKの導入

JACK Audio Connection Kit経由で音声を出力する。なぜか自分の環境ではjackd2が動かなかったので、jackd1を導入する。

sudo aptitude install jackd1

PulseAudioとの共存

Ubuntu標準のサウンドサーバーはPulseAudioで、普通のアプリケーションはPulseAudio経由で音声を流している。JACK起動中はサウンドカードをjackdが専有してしまうので、PulseAudioを使っているアプリケーションと共存させるには少し作業が必要になる。作業についてはHow use PulseAudio and JACK? | JACKを参照のこと。

今回は、Option 3のJACK起動中はPulseAudioのデータをJACK経由で出力する方法を採用する。この方法では、ALSAの管理するサウンドカードから出力するならPulseAudio→JACK→ALSAという経路で音声が出力されることになる。

PulseAudioのmodule-jackdbus-detectというモジュールはJACKサーバーが起動すると自動的にPulseAudioとのルーティングを行なってくれるのだが、jack1では使えないので、ハックすることにする。

次のスクリプトをconnect_pulse_jackというファイル名で保存してパスを通しておく。

#!/bin/sh
src=$(pactl load-module module-jack-source)
snk=$(pactl load-module module-jack-sink)
trap "pactl unload-module $src ; pactl unload-module $snk ; exit" 1 2 3 15
while true ; do
  sleep 1d
done

QjackCtlのSetupウィンドウOptionsタブで、実行するスクリプトを次のように設定する

Execute script on Startup:
  pasuspender -- sleep 1 &
Execute script after Startup:
  connect_pulse_jack &
Execute script on Shutdown:
  killall connect_pulse_jack
Execute script after Shutdown:
  killall jackd

(pasuspenderで1秒だけPulseAudioを止めているあたり汚いハックだと思う)
f:id:mandel59:20121112142727p:plain

また、MiscタブのEnable D-Bus interfaceのチェックボックスをオフにしておく。これを行わないとjackdが起動しなかった。

JACK起動後は、サウンド設定からサウンドの出力先をJack sinkに切り替えておく。
f:id:mandel59:20121112143124p:plain

PureDataの導入

リポジトリにあるものを導入する。

sudo aptitude install puredata puredata-import pd-cyclone gem

PureDataの動作確認

QjackCtlでJACKサーバーを起動した後、PureDataを起動する。

Mediaメニューからjackを選択するとウィンドウが出てくるので、そのままOKを選択する。

その後、MediaメニューからTest Audio and MIDI...を選択する。
TEST TONESの左側のラジオボックスをいじって、音が出るか確認する。マイクが接続してあるなら、monitor-inputsのチェックボックスをオンにすることで、マイクからの入力が出力される。
f:id:mandel59:20121112145058p:plain

Gemを使う

Gemを使ってみる。importオブジェクトでGemライブラリを読み込むことができる。
f:id:mandel59:20121112151809p:plain

追記: PPAからpd-extendedを導入する

pd-extendedは最初から各種ライブラリがセットになっているPureDataディストリビューション。PPAがあるので、そこからインストールできる。Ubuntu標準リポジトリPureDataと同時にインストールしても大丈夫。UIも日本語になる。

sudo apt-add-repository ppa:eighthave/pd-extended
sudo aptitude update
sudo aptitude install pd-extended