tsutsuiの作業記録置き場

NetBSDとかPC-6001とかの作業記録のうち、Twitterの140字では収まらない内容や記事としてまとめるべき内容をとりあえず置いてみる予定

NetBSD + pkgsrc + pulseaudio メモの補足

前回の NetBSD + pkgsrc における oss, alsa, pulseaudio についてのメモ のエントリで一部書き忘れていることがありました。

このままだと「エントリに書いてあるとおりにやったのに鳴らない!!」ということになりそうだったので、いくつか補足してみます。

dbus の設定

pulseaudio で音を鳴らすためには dbusdaemon が走っている必要があるようです。

pkgsrc で pulseaudio を入れると dbus も依存分として自動的にインストールされますが、 dbus daemon を明示的に起動するためには /etc/rc.conf に以下の記述を追加して

dbus=YES

かつ、(再起動をしない場合は) root 権限で以下のコマンドを実行して明示的に dbus のデーモンを開始する必要があります。

# /etc/rc.d/dbus start

上記 rc.d/dbusスクリプト/etc/rc.d/dbus として入るのか /usr/pkg/etc/rc.d/dbus として入るのか、実はよくわかっていません……。
PKG_RCD_SCRIPTS=YES を設定するかどうかで変わる、という話もあった気がするのですが、ちゃんと調べていません。(すいません)

サウンドボード固有の設定

これもきちんと調べられていないのですが、マシンに搭載されているサウンドボードのデフォルトのサンプリング周波数によっては pulseaudio の再生で音程が狂ったり正常に再生してくれないアプリがあったりするようです。

デフォルトの /usr/pkg/etc/pulse/daemon.conf の設定には以下の記述があります。

; default-sample-format = s16le
; default-sample-rate = 44100
; alternate-sample-rate = 48000

いずれもコメントアウトされているものの、他のエントリの実績からするとここに記載されている値がバイナリビルド時のデフォルトに設定されていると予想されます。

こちらの手元にあるマシンのうち、1つは以下のようなサウンドバイスです。

000:27:0: Intel 82801JD High Definition Audio Controller (mixed mode multimedia, revision 0x02)
hdaudio1 at pci0 dev 27 function 0: HD Audio Controller
hdaudio1: interrupting at ioapic0 pin 16
hdafg1 at hdaudio1: ADI AD1984A
hdafg1: DAC00 2ch: Speaker [Jack]
hdafg1: ADC01 2ch: Mic In [Jack]
hdafg1: ADC02 2ch: Line In [Jack]
hdafg1: DAC03 2ch: HP Out [Jack]
hdafg1: 2ch/2ch 8000Hz 11025Hz 16000Hz 22050Hz 32000Hz 44100Hz 48000Hz 88200Hz 96000Hz 192000Hz PCM16 PCM20 PCM24 AC3
audio0 at hdafg1: full duplex, playback, capture, mmap, independent

この場合、 44100Hz をサポートしている(?)ので問題は出ないようです。

手元のもう一台のマシンは以下のようなサウンドバイスです。

000:20:2: ATI Technologies SBx00 Azalia (mixed mode multimedia)
hdaudio1 at pci0 dev 20 function 2: HD Audio Controller
hdaudio1: interrupting at ioapic0 pin 16
hdafg1 at hdaudio1: VIA VT1708S
hdafg1: DAC00 2ch: Speaker [Jack], HP Out [Jack]
hdafg1: ADC01 2ch: CD [Built-In], Line In [Jack], Mic In [Jack]
hdafg1: 2ch/2ch 48000Hz PCM16*
audio0 at hdafg1: full duplex, playback, capture, mmap, independent

この場合、 48000Hz しかサポートしていない(??)のか、 pulseaudio のデフォルトのままだと再生速度が狂ったりする場合がありました。

pulseaudio の daemon.conf の記述を以下のようにするととりあえずそれなり(?)鳴るようです。

; default-sample-rate = 44100
default-sample-rate = 48000

daemon.conf の設定には "alternate-sample-rate" という設定もあるようなのですが、ちゃんと調べられていません。(これまたすいません)
Arch の Wiki 等をもう一度調べるべきですね……。

pkgsrc-2016Q4 firefox 50.1.0 の alsa + oss での問題

前回のエントリで「ALSA にすれば OSS と PulseAudio を選択できる」と書きました。

が、確かに aplay(1) コマンドでの再生では OSS 設定でも PulseAudio 設定でもどちらでもちゃんと音は鳴るのですが、どうも肝心の firefoxALSA 設定でビルドされたバイナリでは ALSAOSS を使う設定にした場合に正常に音が再生されないようです。

ALSA で PulseAudio を使う設定にしている場合は問題ありません。


こちらの環境および設定の問題なのかなと思っていたのですが、 pkgsrc-users のメーリングリストでも同様の報告がある ようです。

上記 ML のメール返信でも書いているのですが、 "alsa_stream_destroy: pthread_cond_destroy failed: Invalid argument" のエラーメッセージについては pkgsrc のパッチで明示的に追加されているので、なにかしら組み合わせおよび設定に問題があるのかもしれません。
とりあえず自分の環境では pulseaudio で困っていないので優先度が上がっていません……。