/
/
/
# What does this implement/fix? An AirPlay volume command does not attenuate the stream - it sets the speaker's own volume, and that level stays behind on the device after playback ends. Music Assistant was pushing a volume at the start of every stream, so it kept overwriting the level users had set on the speaker itself, and the two drifted apart. For a device that is also reachable another way (a Sonos speaker, an AV receiver, anything with a native provider), the volume now simply stays where the user set it. Music Assistant only sends a volume when nothing else owns it. This also removes the "play at unity gain" behaviour, which set the AirPlay volume to 100 when another control owned the volume. That assumed AirPlay was a separate gain stage in front of the device volume; it is not, so it was turning speakers up to full instead. **Related issue (if applicable):** - related issue <link to issue> ## Types of changes - [ ] Bugfix (non-breaking change which fixes an issue) — `bugfix` - [ ] New feature (non-breaking change which adds functionality) — `new-feature` - [ ] Enhancement to an existing feature — `enhancement` - [ ] New music/player/metadata/plugin provider — `new-provider` - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) — `breaking-change` - [ ] Refactor (no behaviour change) — `refactor` - [ ] Documentation only — `documentation` - [x] Maintenance / chore — `maintenance` - [ ] CI / workflow change — `ci` - [ ] Dependencies bump — `dependencies` Changes: - no volume is sent when the stream starts, and `--volume` is no longer passed to the streaming binary - removed the parent-volume adoption and the unity-gain reset - a volume is still sent when the AirPlay output itself is the volume control, when a mute has to travel with the stream, and when an announcement asks for a specific level - device-initiated volume changes over DACP keep working as before ## Checklist - [x] The code change is tested and works locally. - [x] `pre-commit run --all-files` passes. - [x] `pytest` passes, and tests have been added/updated under `tests/` where applicable. - [ ] For changes to shared models, the companion PR in `music-assistant/models` is linked. - [ ] For changes affecting the UI, the companion PR in `music-assistant/frontend` is linked. - [x] I have read and complied with the project's [AI Policy](https://github.com/music-assistant/.github/blob/main/AI_POLICY.md) for any AI-assisted contributions. - [ ] I have [raised a PR against the documentation repository](https://github.com/music-assistant/music-assistant.io/blob/main/CONTRIBUTING.md) targeting the main or beta branch as appropriate.