私はWindows 7ホストのVirtualBox 5.1.30でDebian 9.2.1を実行しています。私のプロジェクトでPortAudioライブラリを使用して複数のプラットフォームで使用できるようにしたいのですが、独自のサンプルプログラムを使用しても正しく機能しません。
Debianを新しくインストールしてアップデートした後、パッケージをインストールし、portaudio19-dev
PortAudio paex_sine.c
Webサイトの現在のソースディストリビューションからパッケージをインポートしました。うまくコンパイルされますが、(gcc paex_sine.c -lportaudio -lm
)実行すると多くのエラーが発生します。
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround71
ALSA lib setup.c:547:(add_elem) Cannot obtain info for CTL elem (MIXER,'IEC958 Playback Default',0,0,0): No such file or directory
ALSA lib setup.c:547:(add_elem) Cannot obtain info for CTL elem (MIXER,'IEC958 Playback Default',0,0,0): No such file or directory
ALSA lib setup.c:547:(add_elem) Cannot obtain info for CTL elem (MIXER,'IEC958 Playback Default',0,0,0): No such file or directory
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pcm.c:8306:(snd_pcm_recover) underrun occurred
ALSA lib pcm.c:8306:(snd_pcm_recover) underrun occurred
ALSA lib pcm.c:8306:(snd_pcm_recover) underrun occurred
ALSA lib pcm.c:8306:(snd_pcm_recover) underrun occurred
...
オーディオ自体が非常に「揺れて」歪んで、私が書いたサンプル/テストアプリでも同様の結果が得られました。 PortAudioのコールバックループは、追加データを要求する前にバッファが(ほぼ)空になるのを待つのではなく、できるだけ早く実行されるようです。 (WAVファイルの再生はaplay
うまく機能するため、VMが正しく設定されていると合理的に確信しています)。
私の仮想マシンにインストールされているPortAudioはバージョン1として報告されていますPortAudio V19.6.0-devel, revision 396fe4b6699ae929d3a685b3ef8a7e97396139a4
。既知の問題で解決しましたか? VirtualBoxとの奇妙な相互作用?それともPortAudioの問題トラッカーにバグを書く必要がありますか?
編集:ちょうどDebian 9.2 Live CDを使って実際のコンピュータでこれを試しました。私のテスト(paex_sine
サンプルとWAVプレーヤー)の両方が正常に再生を完了できましたが、PortAudioを初期化するときにまだいくつかのエラーが発生しました。
ALSA lib pcm_dmix.c:1052:(snd_pcm_dmix_open) unable to open slave
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm_route.c:867:(find_matching_chmap) Found no matching channel map
ALSA lib pcm_dmix.c:1052:(snd_pcm_dmix_open) unable to open slave
これは、VirtualBoxのオーディオ「ハードウェア」にPortAudioが完全に壊れるという問題があることを示唆していましたが、Raspberry Pi 3のオンボードオーディオにも同様の問題がありました(「トリム」、歪んだ再生)。今、私はこの質問をPortAudioチームに尋ねるべきかRPiのスタッフに尋ねるべきかわかりません。また、これらの「未知のPCM」エラーをすべて削除する方法も知りたいです。