Scribble at 2021-02-20 18:00:22 Last modified: unmodified
さて、セットアップして無線 LAN での動作は安定してきたため、次はいよいよ USB マイクを常時稼働させたサーバ側の Raspberry Pi と、スピーカーに繋げたクライアント側の Raspberry Pi に、ソフトウェア的なセットアップをする段階だ。
恐らく、Linux audio programming のスタンダードな設計として言えば、ALSA + Plusaudio といった組み合わせでストリーミング・サーバを建てて、クライアント側では VLC のクライアントで USB に音声データを流して 3.5mm ジャックへ変換してスピーカーから音を出すということになるのだと思っているのだけれど、これがなかなか単純にはいかない。だが、こういうところから少しずつ始めたほうが勉強になるし、堅実だ。
そもそも、サーバ側に VLC を入れるというのが最も簡単な方法として出回っているのだが、これはクリーン・インストールした Raspberry Pi OS ではぜんぜん動かなかった。依存関係のあるライブラリと合計して 1GB ほどのストレージを消費してるくせに、やってることは単に ALSA と Pulseaudio に連携してるだけなのに、"no stream_filter modules matched" の一言でストップしてしまう。おまけにログを見ると Python だ、Lua だと色々な処理系に依存していて、これではメンテナンス性に強い不安がある。
次に、ROC というフロントエンドも「簡単」という触れ込みで出回っているようだが、これも Docker.io やら Git をわざわざ入れてまで環境を用意しても、そもそも Docker からして書かれているオプション(--rm)を「なんだ、こんなオプション無いぞ」とはねつけてしまう。だいたい、自分の特殊な環境に依存してる自覚もない人に限って、「簡単にインストールできる」とか「すぐに終わる」などとウェブ・ページやブログ記事に書くものだ。プロの技術者であり、しかもインストールしたライブラリについて全ての依存関係を理解していないならなおさら、どういう条件でソフトウェアが動くのか正確に理解してはいない〈ということを理解している〉ものだ。無知の知、そのものである。
よって、そういう〈お手軽なツール〉はできるだけ無視して、冒頭で述べたようにオーソドックスな要件で始めるのがいいようだ。