-
Notifications
You must be signed in to change notification settings - Fork 106
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feat: Add multi device DSP support #1839
Merged
marcelveldt
merged 10 commits into
music-assistant:dev
from
maximmaxim345:feat/dsp-multiroom
Jan 9, 2025
Merged
Feat: Add multi device DSP support #1839
marcelveldt
merged 10 commits into
music-assistant:dev
from
maximmaxim345:feat/dsp-multiroom
Jan 9, 2025
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This will only reload in case that the DSP is enabled and multi_device_dsp is not supported with the player provider.
marcelveldt
reviewed
Jan 8, 2025
Similar to slimprotos MultiClientStream, we can now generate a stream on a per device basis. This has two main advantages: - a filter can be applied when necessary, allowing us to use an individual DSP on every device in the group - we are no longer forced to use MP3 for every device
This is the final piece that allows us to apply a DSP on a per player basis when using universal groups.
maximmaxim345
force-pushed
the
feat/dsp-multiroom
branch
from
January 9, 2025 16:51
c6bdc19
to
88e1642
Compare
marcelveldt
reviewed
Jan 9, 2025
marcelveldt
approved these changes
Jan 9, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, nice work!
models have been bumped btw |
This was referenced Jan 13, 2025
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Requires music-assistant/models#29 to be merged first.
Overview
This PR primarily adds grouped playback support to the DSP of Music Assistant.
DSP is automatically disabled when grouped playback is enabled on player providers that do not support the new
MULTI_DEVICE_DSP
PlayerFeature
flag.If a player provider has this flag, it is responsible for retrieving
get_player_filter_params
for each sub-device separately.Universal Groups allow all contained devices to apply their own DSP.
So if a user wants to use DSP on two players that do not support MULTI_DEVICE_DSP (like Snapcast), they can still create a Universal Group with them that will apply the DSP separately (at the cost of synchronization).
Universal Group Adjustments
Universal Groups previously were forced to use MP3 for all devices. This PR decouples the audio processing into two stages:
This has two main advantages:
Currently, all players except Slimproto, Snapcast, and AirPlay still use MP3, but this can be changed in the future.
Supported Providers
With this PR, DSP is supported on:
With automatic disablement in unsupported cases.
Testing
I have verified this PR as follows:
update()
Future Work