Amazonのアソシエイトとして、ラズパイダ(raspida.com)は適格販売により収入を得ています。詳しくは当サイトの プライバシーポリシーをご覧ください。

世の中には色んな事を考える人が居ますね。Raspberry Pi 5の使い方として、ちょっとご紹介したいプロジェクトを見つけました。「ProjectMオーディオレシーバー」です。

Redditをブラウンジングしていたら見つけました。GithubのReadmeの通りに導入できます。導入方法はよくまとまっていて、よく分からなくてもコピペで実現できるので、Pi 5を始めたばかりの方にもオススメです。

ビジュアライザー?

Winampはご存じですか? 昔に流行ったミュージックプレイヤーです。現在もリリースされていて、記事執筆時点でWinamp 5.9.2が最新でした。

当時Winampが人気を博したのは、スキンで見た目をカスタマイズできたからです。ユーザーがたくさんのデザインを公開していましたね。加えてビジュアライザーなるプラグイン的な機能があり、音楽に合わせて幾何学模様やグラフ、3Dっぽいものまで色鮮やかに楽しめます。

そのビュジュアライザーの部分だけをRaspberry Pi 5に担わせてしまうのが、この「ProjectMオーディオレシーバー」です。

GitHub

GitHub - kholbrook1303/RPI5-Bookworm-ProjectM-Audio-Receiver: Audio manager for the Raspberry Pi 5 s… Audio manager for the Raspberry Pi 5 supporting projectM visualizations. - kholbrook1303/RPI5-Bookworm-ProjectM-Audio-Receiver

他のOS(Windows/Mac/Linux/Android)へは既に実現されていて、それがProjectM - 最先端のオープンソース音楽ビジュアライザーです。

Raspberry Pi 5のスペックが上がったことで、今回ご紹介するRPI5-Bookworm-ProjectM-Audio-Receiverでラズパイでも動作させられました。

デモ動画が分かりやすいですね。

オーディオレシーバー?

このプロジェクトでは、オーディオレシーバーとなっています。

これはRaspberry Pi 5で音楽を再生してビジュアライザーとして動作させるのではなく、例えばレコードプレイヤーなど外部のデバイスからライン入力させ、Pi 5に繋いだHDMIのモニターにシンクしたビジュアライザーを表示するものです。

Pi 5にはライン入力もマイク入力端子もありません。USB接続の外部サウンドカードを使用する必要があります。

もう1つ、AirPlay2レシーバーとBluetoothオーディオレシーバーにも対応しています。

今回はAirPlay2がお手軽だったので試したところ、iPhoneのミュージック再生をPi5へ飛ばしてビジュアライザーとして問題無く動作しました。

デフォルト

インストールと設定はGithubページの通り

Githubページにある説明がよく出来ているので、上から順に実行していくだけで済みました。導入は途中のコンパイルなどで時間はかかります。特にエラーもなくスムーズに試せました。

あと、プリセットとテクスチャの導入の記述が足りていませんから、Raspberry Pi 5のプリセットとテクスチャから、ダウンロードしたファイルをコマンドでコピーすることをしました。

sudo nano /opt/ProjectMSDL/projectMSDL.properties

パスを記載する部分が中頃にあります。ここでは/etc/にしています。

### projectM settings

# Default path where projectMSDL will search for presets and textures. The directory will be searched recursively.
# To add additional preset paths, add them as shown in the examples below.
projectM.presetPath = /usr/local/etc/presets
#projectM.presetPath.1 = /another/preset/path
#projectM.presetPath.2 = /yet/another/preset/path

# Default path where projectMSDL will search for additional textures. The directory will be searched recursively.
# To add additional texture paths, add them as shown in the examples below.
projectM.texturePath = /usr/local/etc/textures
#projectM.texturePath.1 = /another/texture/path
#projectM.texturePath.2 = /yet/another/texture/path

指定した場所にコピー。

cd ~
git clone https://github.com/mickabrig7/projectM-presets-rpi5

sudo cp -r ~/projectM-presets-rpi5/presets /usr/local/etc/
sudo cp -r ~/projectM-presets-rpi5/textures /usr/local/etc/

Bluetoothレシーバーは使わないので実行していません。

設定ファイル

設定は/opt/ProjectMSDL/projectMAR.confと、/opt/ProjectMSDL/projectMSDL.propertiesの値を修正することになります。

sudo nano /opt/ProjectMSDL/projectMSDL.properties
sudo nano /opt/ProjectMSDL/projectMAR.conf

AirPlay2とBluetooth経由だとバグがあるとあるように、基本はライン入力みたいですね。

ProjectMオーディオレシーバーの自動起動

現行のWayland環境ではwayfire.iniファイルに自動起動エントリとして追加することで実現できます。

sudo nano ~/.config/wayfire.ini
[autostart]
par = /opt/ProjectMSDL/env/bin/python3 /opt/ProjectMSDL/projectMAR.py

shairport-syncの有効化

shairport-syncサービスを有効(enable)にする。

sudo systemctl enable shairport-sync
sudo systemctl start shairport-sync

ps aux | grep shairpで2つ表示されていたら、sudo systemctl status shairport-syncでエラーになっているハズです。

shairport-sync[4316]: fatal error: could not establish a service on port 7000 -- program terminating. Is another instance of Shairport Sync running on this device?

■Pi 5は8GBモデルがオススメ

繋がらない時はWiFiの省電力をオフ

AirPlay2に繋がったのに今度は繋がらないなどは、もしかしたら、Wi-Fiの低電力モードでAirPlay2が機能しないからかも知れません。Wi-Fiのパワーセーブをオフにしておくと原因が掴めます。

オフにするなら次のコマンド。

sudo iw dev wlan0 set power_save off

終了方法

SDLが全画面で表示されます。デフォルトでフルスクリーンで1280x720がデフォルトです。終了するのにはキーボードで Alt + F4 なのですが、2回実行してターミナルを終了させることで終了できました。

コマンドでKillするのを何かに割り当てた方が良いと思いました。

エラーに遭遇して音が出ない?!

エラーが出て音がでなくなり、原因を調べたら別の方法で回避できました。shairport-syncのサービスは有効にせず、PipWireのバックエンドを利用した方法です。shairport-syncは起動時に実行する形です。

今回のProjectMオーディオレシーバーと連携させるなら、次の記事のパターン2を試してみてください。

Pi 5にAirPlay 2のインストール方法2つ - ラズパイダ ラズパイでAirPlay2を実現するためには、Shairport SyncとNQPTPをインストールします。古い環境(AirPlay1)ではNQPTPは必要ありませんでした。ここではAirPlay2の導入方法…

メニューもあるけど・・・

ProjectMオーディオレシーバーの実行画面では、ESCキーで上部メニューが出ます。

setting menu

これで何やらイジっていたら、おかしくなりました。設定ファイルから変更した方が無難です。

使えるなと思ったのは、前後のプリセットへ変更したり、プリセットを固定ロックするなどのショートカットキーです。

Alt + Nなどで効きます。

ランダムだと結構変わるのが早いので、固定化して手動で次々とプリセットを楽しみました。

Windowモードは使いづらい

あまりデスクトップの解像度を上げると、処理が遅くなります。なので、フルHDサイズくらいまででしょうか。推奨されていたのは1280x720でした。

解像度などは、先述した2つある設定ファイル(conf)で変更します。

Windowモードだとこんな感じ。

使うならフルスクリーンですね。

導入しておいてもいいかも

このプロジェクトは、Raspberry Pi 5を専用で用意しなくてもいいので、普段使っているPi 5のRaspberry Pi OSにインストールしました。

ディスプレイの解像度は設定したスケールに変更されますが、4Kディスプレイで試しました。終了しても解像度は元に戻らず、一旦ブランク画面になると戻っていました。ウィンドウ形式もオプションにありましたが挙動は同じです。

デスクトップPC利用しているPi 5に導入しておいても特に支障はありません。ProjectM Audio Receiverを起動しなければ良いからです。  → まともに動かないアプリも出てくるかもしれないため、専用で用意すると安心でした。

あと、AirPlayのShairpoint-syncは、NQPTP経由で動作するんですね。久しぶりにインストールしたので知りませんでした。

まだ細かく触っていませんが結構楽しめそうです。

はてな? はてな?
Presetsがランダムだと少し遅延している気がする