uConsole: raspotifyを使ってSpotifyの再生先デバイスにする

uConsole: raspotifyを使ってSpotifyの再生先デバイスにする
Page content

手元にあるなら音源再生にも

ガジェットとして最近あまりかまってあげられていない手元のClockworkPi uConsole Kit RPI-CM4 Liteを、Spotifyの再生先デバイス (Spotify Connect Client) に指定できると面白いかも、とふと思いついて実際にやってみたメモ。本記事の内容は基本的にRaspberry Piにも適用可能なはず。

raspotifyの導入手順

Debian系OSを対象にしている次のSpotify Connectクライアント「raspotify」を、Raspberry Pi OSがベースであろうuConsole RPI-CM4のOSへ導入する。

Spotify Connectの利用にはSpotify Premiumのサブスクリプションが必要とのこと (当方はサブスク中)。また、uConsoleにはHyBi FC5というUSB-DACを接続し、Spotifyで再生する音源をヘッドホンで聴く前提である。

【国内正規品】HiByMusic FC5 小型 DAC AMP

【国内正規品】HiByMusic FC5 小型 DAC AMP

HiByMusic

Step-0. uConsoleの環境を確認

記事執筆時点でのuConsoleのOSとkernelは次の通り。

$ cat /etc/os-release 
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
$ uname -a
Linux uconsole 5.10.17-v8+ #5 SMP PREEMPT Thu Jun 29 13:36:01 CST 2023 aarch64 GNU/Linux

Step-1. インストール

上記の公式ドキュメントに沿って、次のコマンドでraspotifyのインストールを行う。

$ sudo apt-get -y install curl && curl -sL https://dtcooper.github.io/raspotify/install.sh | sh

Step-2. サウンドデバイスの確認

認識されているサウンドデバイスを次のコマンドで一覧表示する。

$ librespot -d ?
(省略)
	Device:

		hw:CARD=FC5,DEV=0

	Description:

		HiBy FC5, USB Audio
		Direct hardware device without any conversions

	Supported Format & Sample Rate Combinations:

		Format: S16   Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
		Format: S24_3 Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz

	--------------------------------------------------------------------

	Device:

		plughw:CARD=FC5,DEV=0

	Description:

		HiBy FC5, USB Audio
		Hardware device with all software conversions

	Supported Format & Sample Rate Combinations:

		Format: S16   Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
		Format: S24   Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
		Format: S24_3 Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
		Format: S32   Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
		Format: F32   Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
		Format: F64   Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz

	--------------------------------------------------------------------

	Device:

		sysdefault:CARD=FC5

	Description:

		HiBy FC5, USB Audio
		Default Audio Device

	Supported Format & Sample Rate Combinations:

		Format: S16   Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
		Format: S24   Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
		Format: S24_3 Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
		Format: S32   Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
		Format: F32   Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
		Format: F64   Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz

	--------------------------------------------------------------------

	Device:

		front:CARD=FC5,DEV=0

	Description:

		HiBy FC5, USB Audio
		Front output / input

	Supported Format & Sample Rate Combinations:

		Format: S16   Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
		Format: S24_3 Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz

	--------------------------------------------------------------------

	Device:

		iec958:CARD=FC5,DEV=0

	Description:

		HiBy FC5, USB Audio
		IEC958 (S/PDIF) Digital Audio Output

	Supported Format & Sample Rate Combinations:

		Format: S16   Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
		Format: S24_3 Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz

	--------------------------------------------------------------------

	Device:

		dmix:CARD=FC5,DEV=0

	Description:

		HiBy FC5, USB Audio
		Direct sample mixing device

	Supported Format & Sample Rate Combinations:

		Format: S16   Sample Rate(s): 48kHz

	--------------------------------------------------------------------

Step-3. 設定ファイルの編集

/etc/raspotify/confを編集して、次の4行を表の状態にする。

変数名 (左辺)値 (右辺)
LIBRESPOT_DISABLE_AUDIO_CACHE※行自体を「#」でコメントアウトする
LIBRESPOT_BITRATE“320”
LIBRESPOT_CACHE_SIZE_LIMIT“16G”
LIBRESPOT_DEVICE“hw:CARD=FC5,DEV=0”

LIBRESPOT_DISABLE_AUDIO_CACHEは、この行の存在自体が変数名のフラグ状態を示し、行が存在することがLIBRESPOT_DISABLE_AUDIO_CACHE=Trueを意味する。今回はAUDIO_CACHEを使用したいので、この行を存在させないことが必要である。

/etc/raspotify/confの編集前と編集後の差分は次のようになる。

# diff /etc/raspotify/conf.original /etc/raspotify/conf
33c33
< LIBRESPOT_DISABLE_AUDIO_CACHE=
---
> #LIBRESPOT_DISABLE_AUDIO_CACHE=
58a59
> LIBRESPOT_BITRATE="320"
82a84
> LIBRESPOT_CACHE_SIZE_LIMIT="16G"
96a99
> LIBRESPOT_DEVICE="hw:CARD=FC5,DEV=0"

Step-4. サービス再起動&状態確認

raspotifyのサービスはインストール時から自動起動しているが、Step-3で設定を変更したのでサービスを再起動し、状態を確認する。

# systemctl restart raspotify.service
# systemctl status raspotify.service
● raspotify.service - Raspotify (Spotify Connect Client)
     Loaded: loaded (/lib/systemd/system/raspotify.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2024-04-27 12:01:48 JST; 52s ago
       Docs: https://github.com/dtcooper/raspotify
             https://github.com/librespot-org/librespot
             https://github.com/dtcooper/raspotify/wiki
             https://github.com/librespot-org/librespot/wiki/Options
   Main PID: 39964 (librespot)
      Tasks: 2 (limit: 4088)
        CPU: 2.081s
     CGroup: /system.slice/raspotify.service
             └─39964 /usr/bin/librespot

Apr 27 12:01:48 uconsole systemd[1]: Started Raspotify (Spotify Connect Client).

raspotifyの起動状態に問題がなければ、uConsoleと同一のLAN内でSpotifyのアプリを起動すると、uConsole上で起動しているraspotifyが、アプリのデバイス一覧に「raspotify (uconsole)」という名前で現れる。そのデバイスを選択してからアプリで音源を再生し、uConsoleに接続したUSB-DAC経由で音源が再生されれば目的達成だ。