投稿記事

2022年 09月の記事 (1)

Quietude. 2022/09/10 10:19

山吹色の波面疾走 / AES67-Linux-Daemon

波面進捗


このようなうすぎたない事務所で諸君らのおかずが錬成されている。

さて、最小構成くらいの規模にはなった。
非常に面白いのはスピーカーから音が出ている感じが希薄で、まるでスピーカーの前に人が居て喋っているかのような感じで聞こえてくる。もちろん動かしたりもできる。
…が、まだまだ有効範囲が1^2mくらいの範囲でしかない。
したがってもう3倍くらいはスピーカーを用意する必要がある。
まだまだお披露目はできないが、一応は出来ているといった具合。

そんなわけでたくさんの入力を十把一絡げにしてたくさんの出力デバイスへとパッチ
そしてたくさんスピーカーを鳴らすために小さくて軽いコンピュータにAES67サービスをインストールする。

AES67についてはググれば理解できると思う。たぶん。

AES67 <-> USB Audio

こんな手のひらサイズシングルボードコンピュータを購入。

https://github.com/radxa-build/rockpi-4b/releases

このへんからお好きなイメージを落として焼いて遊ばせ。
なお今回はArmbian_22.08.0-trunk_Rockpi-4b_focal_current_5.15.58_xfce_desktop。



わ ぁ い

んでもってPipewireのインストール

sudo add-apt-repository ppa:pipewire-debian/pipewire-upstream
sudo apt update

sudo apt install libfdk-aac2 libldacbt-{abr,enc}2 libopenaptx0

sudo apt install gstreamer1.0-pipewire libpipewire-0.3-{0,dev,modules} libspa-0.2-{bluetooth,dev,jack,modules} pipewire{,-{audio-client-libraries,pulse,bin,locales,tests}}

そのへんに転がっているppaから。

・様々な設定例とGUIルーティングアプリ

sudo apt install qpwgraph pipewire-doc

・Pulse Audio の無効化

systemctl --user --now disable pulseaudio.{socket,service}
systemctl --user mask pulseaudio

・pipewire-media-sessionのALSA用コンフィグ

sudo touch /usr/share/pipewire/media-session.d/with-alsa
sudo cp /usr/share/doc/pipewire/examples/alsa.conf.d/99-pipewire-default.conf /etc/alsa/conf.d/

・Pipewire開始

systemctl --user --now enable pipewire

んで、ターミナルにpactl info とか打って

Pipewireで動いてる旨表示されたら成功。
なに?動いてない?再起動してもだめだったらエラーメッセージでググれ。

AES67−Linux-Daemonのビルド

まずはこのへんをgit cloneする。んでもって必要なパッケージがまとまったシェルスクリプトを実行。

git clone https://github.com/bondagit/aes67-linux-daemon.git
cd aes67-linux-daemon
./ubuntu-packages.sh

すると

E: パッケージ linux-headers-5.15.58-rockchip64 が見つかりません

ときたもんだ。
ムカつくことになぜかRockPi公式リポジトリには5.15.58のカーネルヘッダが無いため自分で新しくビルドするか手っ取り早くこのへんのリポジトリから引っ張ってくること。

https://imola.armbian.com/beta/pool/main/l/

・MergingのRavenna-ALSA-LKMのビルド

公式のドライバは新しいカーネルで動かないのでこの辺から落とす

cd 3rdparty
git clone -b aes67-daemon https://github.com/bondagit/ravenna-alsa-lkm.git
cd ravenna-alsa-lkm/driver

make

んで、

sudo su
cp MergingRavennaALSA.ko /lib/modules/$(uname -r)/kernel/drivers
depmod

・カーネルにロード
sudo insmod MergingRavennaALSA.ko

・ついでに起動時にドライバ読み込み
echo -e \MergingRavennaALSA >>/etc/modules-load.d/modules.conf

こんどはこのドライバを動かすデーモンのビルド
これは一発でどうにかなるスクリプトが付属しているので、aes67-linux-daemonのルートディレクトリにあるbuild.shを実行すれば良い。

./build.sh

出来上がったらdaemonディレクトリに移動。
そして適当なエディタで

cd daemon
nano daemon.conf

"interface_name": "lo",

この箇所を自分のメカに搭載されたNICの名前に変更。
eth0とかenp2s0とかそんなやつ。ここをいじれば最低限は動く。

あとは  "custom_node_id": "付けたい名前",
とかも追記しておくとANEMANなどのマネージャから名前がわかるようになる。

・ほいでもって然るべき場所にポイ。

sudo cp daemon.conf /etc

・アホな権限をくれてやる

sudo chmod 777 /etc/daemon.conf

・動くか確認

./aes67-daemon

バババババと様々なメッセージが出るが PTPがLockされた旨表示されたらとりあえずは動いている。CTRL+Cで停止。
んでもって実行ファイルを/usr/binに投げ込むなりln -sするなり
.bashrcにエイリアス貼るなりして実行すればよい。

あとはそのNICのアドレスのポート8080をブラウザで開けば綾波レイの部屋のようなコンフィグ画面が出てくるので


アウトプット→Source
インプット→Sink

を設定

するとANEMANなどのルーティングユーティリティにAESの盾アイコンのソースが出現するので適当にルートしてやれば良い。


でもなんかこれ、挙動不審なんだよ。
出ないときは一旦aes67-daemonをCTRL+Cで終了して再び立ち上げるとうまくいく。

あとはドライバのプロファイルをProAudioに書き換えて
pw-link "${USB-no-nanika:capture_AUX0}" "${aes67no_driver:playback_AUX0}"とかやるなり、GUIユーティリティのqpwgraphで繋いでやれば良い。

AES67で受け取ったストリームをUSBオーディオインターフェースに。
あるいはUSBオーディオインターフェースにつないだマイクの入力を別のコンピュータのDAWで受け取れるようになった。やったね。

まとめ

Qiitaでやれ。

あと、RockPiシングルボードの他にもRyzen 1605Bが乗った手のひらPCを2万円の激安中古で買ってあるのでそっちを使おうかと思う。ぶっちゃけ、こっちのが遥かに速い。


結構スコアも回る模様。

Appendix

あとAES67−Linux-DaemonじゃなくてMergingのRavenna_ALSA_LKMを新しいカーネルで使いたい人は

git clone -b aes67-daemon https://github.com/bondagit/ravenna-alsa-lkm.git

してビルドするところまでは一緒で

XenialやらBionicあたりのリポジトリからlibcurl3とlibssl1.0.0を落としてきて

sudo cp /usr/lib/x86_64-linux-gnu/libcurl.so.4.5.0 /usr/lib/x86_64-linux-gnu/libcurl3.so.4.5.0

こんなふうにlibcurl3のバックアップアップを作って

sudo apt install libcurl

とか再度libcurl4をインストールして

あとは

alias swcurl3='sudo ln -sf /usr/lib/x86_64-linux-gnu/libcurl3.so.4.5.0 /usr/lib/x86_64-linux-gnu/libcurl.so.4'

alias swcurl4='sudo ln -sf /usr/lib/x86_64-linux-gnu/libcurl.so.4.7.0 /usr/lib/x86_64-linux-gnu/libcurl.so.4'

とかエイリアス作ってRavenna動かすときだけlibcurl3を参照するとか、LD_LIBRARYなんかを編集しとくとかで動かせる。あんまり動かす必要もないのだが。

参考にしたところ

・Andrea Bondavalli
https://github.com/bondagit

・Debian wiki pipewire
https://wiki.debian.org/PipeWire

・UbuntuにPipewireを入れてみる
https://zenn.dev/moru3_48/articles/e50c4ef9b0a5c8

・AES67ーEurorack
https://github.com/elektrofon/eurorack-to-aes67

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

月別アーカイブ

記事のタグから探す

記事を検索