Linux で音を鳴らす(PulseAudio)

私は Ubuntu を使用しているのだが、ディストリビューションのアップグレードをする度に、音声出力関連でハマっている。
そこで、今回 Ubuntu 9.04 にて PulseAudio を使用して音声出力してみた。
これはその時の記録。


まず、PulseAudio とは何者か?ということだが

PulseAudio - Wikipedia より

PulseAudio(以前はPolypAudioと呼ばれていた)は、クロスプラットフォームでネットワークに対応したサウンド・サーバのプロジェクトであり、 Enlightened Sound Daemon(ESD) の置き換えを指向している。

あとは、ここPulseAudioに注目すべき理由(とPulseAudioの始め方) | SourceForge.JP Magazineにもうちょい詳しい解説がある。

本家の説明を引用した方がわかりやすいか。

PulseAudio is a sound server for POSIX systems. A sound server is basically a proxy for your sound applications. It allows you to do advanced operations on your sound data as it passes between your application and your hardware. Things like transferring the audio to a different machine, changing the sample format or channel count and mixing several sounds into one are easily achieved using a sound server.

つまり、音を鳴らしたいアプリケーションと実際に音を出力するハードウェアの間に立って取りまとめをやってくれるサービスということになるだろうか。
Linux では、OSS とか ALSA とか ESD などの音声再生用ライブラリがあり、アプリケーションによって使用しているライブラリが違ったりしてややこしいらしい。
それを一まとめにしてくれる PulseAudio は素晴らしい、という解釈でいいのかな?
実は私も調べ始めたばかりなので詳細はよくわからない・・・


私が使用している Ubuntu 9.04 で PulseAudio を使用するために実行したことを列挙する。

    • pulseaudio 関連パッケージをインストール
    • /etc/asound.conf を作成&設定
    • pulse-access, pulse-rt グループにユーザを追加
    • 出力先の設定
    • PulseAudio Volume Control の設定

pulseaudio 関連パッケージをインストール

Ubuntu 9.04 の場合は、PulseAudio 用のパッケージが用意されているので、それをインストールする。
私は、Synaptic を使って、頭に "pulseaudio-” と付くパッケージを "*-dbg" 以外すべてインストールした。
更に "padevchooser" をインストール。
これは PulseAudio の設定などを行うツールだ。

/etc/asound.conf を作成&設定

次に、/etc/asound.conf を作成する。
これは ALSA を使用するアプリケーションのための設定。
Ubuntu 9.04 では pulseaudio 関連パッケージをインストールしてもこのファイルは作成されないので自分で作成する。
作成した /etc/asound.conf に以下の内容を追記する。

pcm.pulse {
type pulse
}

ctl.pulse {
type pulse
}

pcm.!default {
type pulse
}

ctl.!default {
type pulse
}

asound.conf の他に、ESD を使用しているアプリケーションのために、/usr/bin/esd という名前の edsdcompat へのシンボリックリンクを作成しないといけないらしいのだが、Ubuntu 9.04 では、pulseaudio-esound-compat というパッケージをインストールすることによって自動的に作成されているようだ。

pulse-access, pulse-rt グループにユーザを追加

PulseAudio 関連パッケージをインストールすると、以下の2つのグループが追加されているので音声出力を行うユーザ(自分)をそのグループに追加する。

    • pulse-access
    • pulse-rt

システム -> システム管理 -> ユーザとグループ から設定するのが楽かと思う。

出力先の設定

システム -> 設定 -> サウンド を開き、音声の出力先を設定する。
ここで少なくとも "楽曲と動画" の再生設定を "PulseAudio サウンド・サーバ" に設定する。
通常は、ここで[テスト]ボタンをクリックするとスピーカーから「ピー」という音が出力されるのだと思うが、実は私の環境では音が出なかった、それでいろいろ悩んだわけであるが・・・
それは、次の項で解決する事になる。

PulseAudio Volume Control の設定

上記までの設定で本来は音が出るはずなのだが、私の環境では音がでない。
Flash9 では libflashsupport をインストールする必要があるという情報があったが、私の環境は Flash10 を使用しており、Flash10 は PulseAudio に完全に対応しているので何もする必要はないとのこと。

実は、私は Creative の Xmod という USB オーディオ I/F を接続している。
それで、もしや?と思い、Xmod にイヤフォンを接続すると、ここから音が出ていた。
先ほどのサウンド設定画面でいろいろ設定を変えてみたりしたのだが、スピーカーはうんともすんとも言わない。

PulseAudio Volume Control を開いてみるとボリュームは最大になっているし、ミュートされているわけでもない。
Playback タブには、音声を再生しているモジュールが表示されているのだが、ふと、チェックマークのような絵のボタンがあることに気づき、これをクリックしてみる。
するとメニューが表示され、更に "Move Stream" という項目を選択すると、スピーカーを接続しているサウンドカードの名前と Xmod の名前が並んでいる。
そして、Xmod が選択されている。。。
ここで、スピーカーを接続しているサウンドカードの方を選択すると。
無事スピーカーから音がでるようになった・・・


今これを書いている時に気づいたのだが、Volume Control 画面に "Output Devices" というタブがあり、そこに Xmod と サウンドカードの名前が並んでいる。
ここにもチェックマークのボタンがあり、それをクリックすると "□Default" というチェックボックスが表示された。
ここで、標準の出力先デバイスを選択してやればよかったんだろうな・・・


正しい設定方法等については今後調べていくことにする。
何はともあれ、快適なニコ動生活が送れるようになってよかった。