From 3667c682c96673e90c6f0d2ac801ffe44df508ec Mon Sep 17 00:00:00 2001 From: Maxim Raznatovski Date: Mon, 15 Dec 2025 22:17:47 +0100 Subject: [PATCH] Sendspin fixes (#2810) --- music_assistant/providers/sendspin/manifest.json | 2 +- music_assistant/providers/sendspin/player.py | 13 +++++++++++-- requirements_all.txt | 2 +- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/music_assistant/providers/sendspin/manifest.json b/music_assistant/providers/sendspin/manifest.json index 2d0b0304..afd07c96 100644 --- a/music_assistant/providers/sendspin/manifest.json +++ b/music_assistant/providers/sendspin/manifest.json @@ -6,7 +6,7 @@ "description": "Sendspin is an audio playback, control and synchronization protocol developed by the Open Home Foundation and is the native playback protocol built into Music Assistant, used for playback to supported clients like the Music Assistant Web interface, supported (mobile) clients and supported hardware", "documentation": "https://music-assistant.io/player-support/sendspin/", "codeowners": ["@music-assistant"], - "requirements": ["aiosendspin==1.1.0"], + "requirements": ["aiosendspin==1.1.1"], "builtin": true, "allow_disable": false } diff --git a/music_assistant/providers/sendspin/player.py b/music_assistant/providers/sendspin/player.py index d536533f..587ce7f7 100644 --- a/music_assistant/providers/sendspin/player.py +++ b/music_assistant/providers/sendspin/player.py @@ -49,6 +49,7 @@ from music_assistant.constants import ( CONF_ENTRY_HTTP_PROFILE_HIDDEN, CONF_ENTRY_OUTPUT_CODEC_HIDDEN, CONF_ENTRY_SAMPLE_RATES, + CONF_OUTPUT_CHANNELS, CONF_OUTPUT_CODEC, INTERNAL_PCM_FORMAT, ) @@ -140,8 +141,11 @@ class MusicAssistantMediaStream(MediaStream): assert multi_client_stream is not None dsp = mass.config.get_player_dsp_config(player_id) - if not dsp.enabled: - # DSP is disabled for this player, use main_stream + output_channels = mass.config.get_raw_player_config_value( + player_id, CONF_OUTPUT_CHANNELS, "stereo" + ) + if not dsp.enabled and output_channels == "stereo": + # DSP is disabled and output is stereo, use main_stream return None # Get per-player DSP filter parameters @@ -535,8 +539,13 @@ class SendspinPlayer(Player): async def _on_queue_update(self, event: MassEvent) -> None: """Extract and send current media metadata to sendspin players on queue updates.""" + if self.synced_to is not None: + # Only leader sends metadata + return queue = self.mass.player_queues.get_active_queue(self.player_id) if not queue or not queue.current_item: + # Clear metadata when queue has no current item + self.api.group.set_metadata(Metadata()) return current_item = queue.current_item diff --git a/requirements_all.txt b/requirements_all.txt index 004b5fe9..63c34a30 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -11,7 +11,7 @@ aiojellyfin==0.14.1 aiomusiccast==0.15.0 aiortc>=1.6.0 aiorun==2025.1.1 -aiosendspin==1.1.0 +aiosendspin==1.1.1 aioslimproto==3.1.1 aiosonos==0.1.9 aiosqlite==0.21.0 -- 2.34.1