ncos1のブログ

適当にメモ代わりに残しています、間違い・説明不足等はコメントしてただければ修正・追記します。

Navidromeのスマートプレイリスト作成ツール試作、検証用にWindowsにセットアップ

AIにお願いして一旦作成したが、検証用にWindowsにNavidromeをセットアップ。

 

今回はインストーラーつきの navidrome_0.63.2_windows_amd64_installer.msi をダウンロードして実行。

github.com

 

音楽データフォルダ等を設定。

とは言っても、C:\Program Files\Navidrome\にコピーするだけで実行は手動^^;

実行したら、エラーで停止した。

navidrome.ini を編集して設定変更出来るで確認。

現在

[default]
Port='4533'
MusicFolder='C:\work\Music'
DataFolder='C:\ProgramData\Navidrome\'
FFmpegPath='C:\Program Files\Navidrome\ffmpeg.exe'

 

エラーメッセージはデータフォルダ関連だった、データフォルダが存在しないので作成するか既存フォルダを指定する。(RaspberryPiでも手動で作成していた)

DataFolder='C:\ProgramData\Navidrome\' にはしたくないので

DataFolder='C:\work\Navidrome\'

に変更して実行。(エディタを管理者権限で実行しないと編集できなかった。)

 

http://localhost:4533/

にアクセス、成功。

とりあえず作成したバージョンで、スマートプレイリスト試作。

作成したnspファイルは音楽ファイルの保存フォルダにコピーする。

失敗、ツールに問題があったので修正。

とりあえずエラーせずに使えるっぽい、検証不十分だけど^^;

検証環境ができたので、スマートプレイリスト作成ツールのブラッシュアップを実施したい。

 

 

minosima.github.io

 

 

Navidromeでもスマートプレイリストが使えるっぽいので調査

Navidromeを検証中、操作レスポンスはとても良くDLNAサーバーとは全く異なる操作感。

KODI(DLNAサーバー)の良いところも有るので、併用するか検討中だがスマートプレイリストが使えそうなので調査。

ncos1.hatenablog.com

 

Gitに有るツールUIは無く、コマンドで実施。

github.com

英語なので使いにくい^^;

Navidrome-SmartPlaylist-Generator-nsp

で検索すると、既にUIの実装もベータ提供されているっぽい。

www.navidrome.org

 

github.com

 

こちらのクライアントアプリを使ってNavidromeにアクセスすれば簡単に作成できる?

github.com

ダウンロードして実行

github.com

Windowsから検証するので

Feishin-1.16.0-win.exe

スマートプレイリストに対応している。

KODIよりは使い勝手は劣るようだが検証してみたい。

スマートプレイリストを作成後に、編集で任意の画像を反映できた。(クライアントアプリによっては非対応)

別の端末(クライアント)からもアクセスできるので、作成するとサーバーと同期するみたい。

ただし、PublicをONにしないと他のクライアント(スマホ等)からは再生できない。

NASのデータ経由ではないので何とも言えないが、レスポンスはKODIより格段に速いしスマートプレイリストに任意の画像反映させることも出来たので有力候補になったがスマートプレイリストの柔軟性・編集しやすさはKODIが良さそう?

KODIと同じような自作編集ツールを作成できれば良いかも(・・?

 

家庭用オーディオ機器や自作WiFiスピーカー等にはKODIのDLNAサーバーで、スマホ再生はNavidromeと使い分けるのが良さそう。

統一したいが家庭用機器が対応するのは当分先の話だろう。(もしくは永遠になさそう^^;)

 

ncos1.hatenablog.com

 

 

RaspberryPi4にNavidromeインストールしてみる

音楽サーバーとしてRaspberryPi4にNavidromeをインストールしてみる。

 

ncos1.hatenablog.com

 

1. Dockerのインストール

# システムの更新
sudo apt update && sudo apt upgrade -y

# Docker公式インストールスクリプト
curl -fsSL https://get.docker.com | sh

 

エラーした。

curl -fsSL https://get.docker.com | sh# Executing docker install script, commit: 2b32480025b223ebfddae9a3a8bef09027680f53 Warning: the "docker" command appears to already exist on this system.If you already have Docker installed, this script can cause trouble, which is why we're displaying this warning and provide the opportunity to cancel the installation.If you installed the current Docker package using this script and are using it again to update Docker, you can ignore this message, but be aware that the script resets any custom changes in the deb and rpm repo configuration files to match the parameters passed to the script.You may press Ctrl+C now to abort this script.
  • sleep 20
  • sudo -E sh -c apt-get -qq update >/dev/null
  • sudo -E sh -c DEBIAN_FRONTEND=noninteractive apt-get -y -qq install ca-certificates curl >/dev/null
  • sudo -E sh -c install -m 0755 -d /etc/apt/keyrings
  • sudo -E sh -c curl -fsSL "https://download.docker.com/linux/debian/gpg" -o /etc/apt/keyrings/docker.asc
  • sudo -E sh -c chmod a+r /etc/apt/keyrings/docker.asc
  • sudo -E sh -c echo "deb [arch=arm64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian trixie stable" > /etc/apt/sources.list.d/docker.list
  • sudo -E sh -c apt-get -qq update >/dev/null
  • apt_flags=-y -qq
  • [ -n ]
  • sudo -E sh -c DEBIAN_FRONTEND=noninteractive apt-get -y -qq install docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-ce-rootless-extras docker-buildx-plugin docker-model-plugin >/dev/null E: Sub-process /usr/bin/dpkg returned an error code (1)

 

検証のために実施していた既存のDocker関連パッケージが残っていた事が要因みたいなので、きれいに削除してから再インストール実行。

# 既存のDocker関連を削除
sudo apt purge -y docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-ce-rootless-extras docker-buildx-plugin docker-model-plugin docker.io docker-doc docker-compose podman-docker

# 残骸を掃除
sudo apt autoremove -y
sudo apt autoclean

# 関連ファイルも削除
sudo rm -rf /var/lib/docker
sudo rm -rf /etc/docker
sudo rm -f /etc/apt/sources.list.d/docker.list
sudo rm -f /etc/apt/keyrings/docker.asc
sudo rm -f /etc/apt/keyrings/docker.gpg

再実行

curl -fsSL https://get.docker.com | sh

完了

================================================================================

To run Docker as a non-privileged user, consider setting up the
Docker daemon in rootless mode for your user:

    dockerd-rootless-setuptool.sh install

Visit https://docs.docker.com/go/rootless/ to learn about rootless mode.


To run the Docker daemon as a fully privileged service, but granting non-root
users access, refer to https://docs.docker.com/go/daemon-access/

WARNING: Access to the remote API on a privileged Docker daemon is equivalent
         to root access on the host. Refer to the 'Docker daemon attack surface'
         documentation for details: https://docs.docker.com/go/attack-surface/

================================================================================

 

 

# 現在のユーザーをdockerグループに追加(再ログインが必要)
sudo usermod -aG docker 現在のユーザー名

 

一度ログアウトして再ログイン。
または 
newgrp docker
確認:

docker --version
docker compose version

2. ディレクトリの準備

mkdir -p ~/navidrome/data
# 音楽フォルダのパスをメモしておく(例: /mnt/usb/music や /home/pi/Music)

 

3. docker-compose.yml の作成

cd ~/navidrome
nano docker-compose.yml

内容

services:
  navidrome:
    image: deluan/navidrome:latest
    container_name: navidrome
    user: 1000:1000          # 通常のpiユーザーのUID:GID(idコマンドで確認)
    ports:
      - "4533:4533"
    restart: unless-stopped
    environment:
      ND_SCANSCHEDULE: 1h     # 1時間ごとにスキャン
      ND_LOGLEVEL: info
      ND_SESSIONTIMEOUT: 24h
      # ND_DEFAULTLANGUAGE: ja   # 日本語UIにしたい場合
    volumes:
      - ./data:/data
      - /path/to/your/music:/music:ro   # ← ここを実際の音楽フォルダのパスに変更(:roは読み取り専用)

はてなの仕様問題でコピペ実行時に不可視文字が混入するので、この下記コマンドを実行。
sed -i 's/\xc2\xa0/ /g; s/\xe3\x80\x80/ /g' docker-compose.yml

 

ポイントuser: 1000:1000 は id コマンドで自分のUID/GIDを確認して合わせる(piユーザーなら通常1000:1000)
音楽フォルダは**読み取り専用(:ro)**でマウントするのが安全
パスの例:/home/pi/Music や /mnt/hdd/music

保存して終了(Ctrl+O → Enter → Ctrl+X)

 

4. 起動

docker compose up -d

ログ確認:

docker compose logs -f

ライブラリ更新している

5. アクセスブラウザで以下にアクセス:

http://RaspberryPiのIPアドレス:4533

起動した

初回アクセス時に管理者アカウントの作成画面が出るので、ユーザー名とパスワードを設定。

日本語化も可能

補足・ffmpegはDockerイメージに含まれているので別途インストール不要。
外付けストレージを使う場合は、マウントポイントを正確に指定。


ポート4533が空いているか確認(ファイアウォールを使っている場合は開放が必要)。
更新する場合は

cd ~/navidrome
docker compose pull
docker compose up -d

 

スマホ側にはとりあえず無料で使える

flo  -Navidrome Client をインストール、サーバーアドレスと設定したユーザー名・パスワードで接続。

 

レスポンスはとても速い、KODIのDLNAサーバーとは雲泥の違い。

画面も見やすくて好印象。

だが、プレイリストの作成がスマホアプリからできない?

ブラウザから作成してみるが、アルバム・曲単位で個別に設定していくしかなさそう。

KODIのスマートプレイリストの様に、アーティスト名で一括指定等の機能がない?

音楽データが少ない場合は良いが、タイトルが100以上になると面倒になりそう。

Plex Media Serverと違ってアカウントを取得する必要もなく、完全に自分の環境内で構築できるのでNavidromeの方が良さそう。

ncos1.hatenablog.com

 

Cloudflare Tunnel を設定して外部から使える環境も検証してみたくなった。

 

 

音楽サーバーを探してみる、NavidromeをCopilotが勧めるので確認

KODI以外の音楽サーバーの可能性を時々確認するのだが、CopilotがNavidromeを勧めてきた。

 

Navidrome と KODI の違い(要点)
Navidrome  
→ Subsonic API 対応の軽量音楽サーバー。
→ スマホ・PC・Web から Spotify 的にアクセスできる。
→ 音楽専用で、ヘッドレス運用に最適。
→ Gitnux と WifiTalents の比較でも 音楽サーバーとして最高評価。

KODI  
→ 動画・音楽・写真を扱う総合メディアセンター。
→ DLNA サーバー機能はあるが、音楽特化ではない。
→ 音楽管理は VideoLibrary を使うと柔軟になるが、
Navidrome のような “Spotify 体験” は提供しない。
→ Gitnux の比較では 音楽サーバーとしては 7.0/10 と控えめ。

 

導入方法

qiita.com

jisaku.com

 

Cloudflare Tunnel 設定すれば、VPN無しでも外出先からも聴けるらしい。

が、Subsonic APIなので、Subsonic API対応のクライアントアプリでないと当然使えない。

 

Subsonic API がそもそも一般的か確認する。

AIの回答なので、あてにはならないが

結論:Navidrome 以外にも Subsonic API に対応した音楽サーバーは複数存在します。
ただし “現役で安定して使える” のは非常に少なく、Navidrome がほぼ唯一の近代的実装です。

 

Navidromeが、良いのであってSubsonic APIそのものは、今後発展するのか?

DLNAは定着しており、サーバー・クライアントの開発もそれなりに存在しており途切れてはいないと思われる。

コントローラーやクライアントアプリも複数存在するので、将来的に考えても現時点ではDLNAサーバーを選択するしかないと判断。

 

Subsonic API で構築すれば軽量でレスポンスも良くなるかもしれないが、KODIで実現できているプレイリスト・スマートプレイリストに画像を適用させる事ができないっぽいので採用できない🤔

 

Geminiは

「PCやラズベリーパイ、ホームサーバーで自分の音楽ライブラリを管理・ストリーミングしたい層」の内部においては、プロトコルの主役がDLNAからSubsonic API(およびそれを採用するNavidrome等のサーバー)へ移行、あるいは完全に取って代わられたというのが実情です。

全体のシェアとしてDLNAが死滅したわけではなく、市販機器では依然としてDLNAが使われています。しかし、「自前で音楽サーバーを構築する層」のコミュニティ内においては、機能的・体験的な優位性から、事実上の標準プロトコルとしての地位をSubsonic APIが確立している状況です。

 

”完全に取って代わられた”とは本当なのだろうか?

Navidrome以外にまともなサーバーはなく将来性が有るとは思えない、Geminiを問い詰めると認めてSubsonic APIの将来性は明るくないと言い始めた🤔

どうも、一時期盛り上がった時点の情報を誇張してる?

AIは聞く度に回答が変わるのでイマイチ感触が掴めなない🤔

 

動作が軽いのは本当っぽいので、一度モバイルラズパイ環境で構築してみよう。

市販のオーディオ機器に採用し始めたら、広がりも感じられるが現時点では一部のユーザーに強く指示されている状況なのか(・・?

 

OracleVirtualBoxにインストールしたLinuxマシンとコピペできるようにしたい

VAIO Type P用のHaiku OSパッチを自分でも適用できる環境を作成するためにOracleVirtualBoxにUbutuをインストールしたが、そのままではコマンド等をコピペできないので可能にしたい。

 

ncos1.hatenablog.com

 

当初、OracleVirtualBoxの設定で可能と思ったができなかった。

後でわかったのだが、OracleVirtualBoxの設定と仮想マシンそのものにアプリインストールが必要だった。(Windows・Linux等に専用アプリが仮想CDROMとしてOracleVirtualBoxに用意されているので探さなくて良い。)

まずは設定。

デバイス・クリップボードの共有・双方向(双方向にしないとエラーメッセージなどを母艦側にコピーできないが用途によってはセキュリティ対策で母艦から仮想マシン等一方向にしたほうが良さそう。)

コピペ操作機能アプリのGuest Adissionsをインストール。

まず最初に、Guest Adissionsをアップグレードしておく。

デバイス・Guest Adissions CDイメージを挿入

CDアイコンをクリックして開く。

対象のOSの用の自動実行ファイルが含まれているので、”ソフトウェアの実行”をクリックしてインストールを実行。

実行。

*実行できない場合はターミナルから、autorun.shを実行すれば良いはず。

インストール中。

完了、Returnキー押下で閉じられる。

仮想マシン再起動すればコピペ可能となる。(再起動不要だったかも(・・?)

 

ファイルのドラッグ・アンド・ドロップはエラーしてできなかった。

Linuxではできない(・・?

 

 

 

LinuxからPhomemoに印刷できるか検証、Bluetoothでは不可っぽい(T_T)

前回の検証中にLinux用のドライバーがあったので検証しようとしたが、インストール方法の記述も見当たらず、スクリプト等もなさそうなので別のドライバーを探してみる。

 

ncos1.hatenablog.com

 

linux プリンタードライバー  で検索

Linux用のドライバーをダウンロードして解凍。

RaspberryPiでは、ブラウザ重いのでwgetかPCでダウンロードして、Magic-Wormholeで転送。

www.rongtatech.cn

RTPOS_LinuxDriver_v1.0.0 フォルダに移動して

sudo sh ./install.sh

Phomemoをペアリングする。

接続

失敗

 

Linux環境では、出来ないっぽい。


Windowsで Bluetooth プリンターが動く理由は「Bluetooth=COMポート化 → 仮想シリアルプリンターとして扱える」

Linuxではこの“COMポート化(HCRP)”が提供されていないみたい。

 


Windowsは Bluetooth プリンターを HCRP(Hardcopy Cable Replacement Profile) で扱い、
「Bluetoothデバイス → 仮想COMポート → プリンター(RAW送信)」
という流れで印刷。


● Windows
Bluetoothプリンターを HCRP で扱う

HCRP により COMポートが自動生成される

プリンタードライバはその COM ポートに対して RAWデータを送るだけ

そのため「Bluetoothプリンター」というより「シリアルプリンター」として動作している

● Linux
BlueZ(LinuxのBluetoothスタック)は HCRP をサポートしていない

そのため COMポートが生成されない

CUPS は Bluetooth印刷プロトコル(BPP/BIP/HCRP)をサポートしていない

結果:
ペアリングは成功するが、サービスが無いため印刷不可

 

Phomemoでは、Linuxの場合はUSBでないと無理っぽい。

 

次回にでもUSB接続で検証してみよう_φ(・_・

 

 

Haiku OSのVAIO Type PにUSBオーディオ機能を追加

以前Haiku OSをインストールしたVAIO Type PにELECOMのハイレゾ変換アダプタを接続してみたがUSB機器としては認識するが音は出なかった。

同時にBluetoothヘッドフォン・マウスも検証したが、ペアリングは完了するがへえどホンは音が出ないしマウスも全く動かなかった。

intelのチップならば音はでそうな情報があった。

一応手持ちのCSR(Qualcomm)USBアダプタ確認するもNG。(ペアリングまで可能)

 

ncos1.hatenablog.com

discuss.haiku-os.org

公式からUSBオーディオ対応ドライバー(メディアサーバー?)がリリースされた。

 

discuss.haiku-os.org

 

 

USB機器を簡単に視認するためにUSBDeskbarをインストールして実行。

USBにELECOMのハイレゾ変換アダプタを接続して確認。

インストール方法はターミナルからリポジトリ登録してからpkgmanでインストール

To Install
# 64-bit

pkgman add-repo https://hpkg.indispensablelabs.com/media-os/x86_64/current

# 32-bit (x86_gcc2 hybrid)

pkgman add-repo https://hpkg.indispensablelabs.com/media-os/x86_gcc2/current

pkgman install mediaos

VAIO Type Pは32bitの方で実施。

USBにELECOMのハイレゾ変換アダプタを接続してメディアアプリからメディアサービスを再起動する。

出力先が選択できるようになった。(ドライバー未インストール時は表示されないので当然選択できない状態だった。)

 

ELECOMのハイレゾ変換アダプタに接続したイヤホンから音楽再生できた(^^)

 

ただし、VAIO Type P用のパッチ適用済みHaiku OSで使えていたUSB無線マウスが使えなくなってしまった。

インストールした mediaos を削除しても変わらず。

pkgman uninstall mediaos

パッチの注意事項にアップデートしない事との注意書きが有るので、影響してしまったと思われる。

github.com

 

VAIO Type P以外の機器では問題無いと思われるので、ネットブック等が眠っている場合は、USBのDACをつないで高音質音楽再生マシンとして利用できるかも(・・?