2007年11月12日月曜日

PulseAudioなかなかよいかも知れない

さて、本日ようやく稼働し始めたFedora8ですが、PulseAudioには結構満足してます。Vistaにも導入されたらしいのですが、アプリケーションごとにボリューム調整が可能となっています。
ただ、正直私はこれの意味が分かってなかったんですよね^^; 各アプリケーションのボリュームが調節できるって、大抵のアプリケーションには音量調節機能はついてるじゃねーかと。マスターボリュームを調節してしまうステキ仕様のアプリもまれにありますが、最近ではそれもまずありません。
じゃー各アプリケーションのボリューム調整ができるってどーゆーことよ? って、実際見てみるとなるほど各アプリのボリューム調整ができる仕様となってました。
音を鳴らすアプリケーションと言えばマルチメディア系で、そいつらは基本的にボリューム調整できるだろと考えてましたが、よくよく考えればシステムサウンドもそうだし、Skypeなどのキャプチャソフトもそうです。結構ボリューム調整ができないか、あるいはマスターのボリュームを弄ってしまうアプリもありましたね。こいつらのボリューム設定も個別にできるようになったのは面白いです。
使いどころとしては、ちょっくらやかましいチャットクライアントのボリュームを下げておくとか、複数のサウンドデバイスを持ってるならシステムサウンドとマルチメディア系を振り分けちゃうとか。
複数デバイスを持っているときに好きなアプリケーションを好きな方のデバイスに割り振れるのは面白いと思うんですよ。音楽とかはヘッドフォンで聴いてるけど、システムサウンドはスピーカから出す、みたいなことができるというわけで。
これでヘッドフォンを繋いだと思っていたのにきちんと繋がっていなくてスピーカからエロゲサウンドが大音量で流れる心配もなくなるね!
と、いうことでPulseAudioを利用している状況をちょろっと紹介。

こんな感じで、サウンドを利用しているアプリケーションのボリュームを個別に指定できます。ついでにPulseAudioはネットワーク対応ですので、他のマシンのアプリケーションのサウンドを鳴らすことも可能。あるいは他のマシンに鳴らしてもらうことも可能です。なかなか面白そうだと思ったのは、マイクなどでキャプチャしたサウンドをマルチキャストして接続しているPulseAudioクライアントに一斉送信できる点です。こいつ使ったら特別なソフトなくして音声チャットできるじゃねーか!と。いやまぁルータの設定とかあるし、遅延とかえげつなさそうだけど、機能としては面白そうだわ。
また、仮想OSには向いてると思う。ゲストが持つ仮想デバイスはそりゃ品質よろしくないだろうし。いやまぁ、仮想OSにそんなものを求めるのはどうかという話はあるのだけれど^^;
ただ、Fedora8が出たばかりだと思いたいですが、先刻のポストに書いたように/dev/snd/*と/dev/mixerデバイスのパーミッションがおかしいです。あるいはPulseAudioの設定がおかしいです。
サウンドデバイスはudevによって管理されており、設定を見るとroot権限でのみ使用可能(0644)となっています。pulseaudioコマンド自体はsuidが有効になっているんですが、内部で即root権限からpulse-rt権限へ降格しているらしいです。
そのせいか、pulseaudio実行後、デバイス検知は行えますが設定が行えていません。Fedora8を新規でインストールしたらそのような不具合はでないのかもしれませんが、まだ情報が少ないため様子見ではあります。
が、毎度毎度起動する度に手動でchmodするのも面倒なので、しばらくの間は該当デバイスのパーミッションを0777にしておくことに。よい子は真似しちゃダメだよ!
設定方法は、/etc/udev/rules.d/40-alsa.rulesファイルを開き、controlCからmixerの部分まで各行の末尾に
,MODE="0777"
を追記したらOKです。これでudevが作成する該当デバイスのパーミッションが0777になります。まぁこのファイルは本来手動で書き換えてはいけないファイルであり、udevパッケージが更新されたら書き換えられる可能性が大です。まぁその頃までには解決法が分かっている・・・だろうと信じたい。Fedora7から8へアップグレードしたという記事はいくつか見つけましたが、あんまり「その後」を書いたサイトを見ていないですからねぇ。出てから間がないので仕方ありませんが。
とりあえずこれで問題なくサウンドが有効となりました。PulseAudio共々もう少し調べてやる必要がありそうですね。ゲストOSのサウンドをネットワーク経由で受けるというのも試してみよう。
ま、それもこれも今月の20日を過ぎないことには暇なんてできないんだけどね!Orz