/
/
/
# What does this implement/fix? When a speaker's volume is handled by something other than the output playing the audio — an explicitly configured Home Assistant volume entity, or the Chromecast/DLNA side of a device that also has AirPlay — the announcement volume was silently ignored. The announcement volume is worked out for the speaker as the user sees it, so it is a level on the scale of whatever control handles that speaker's volume. It was then handed to the output playing the clip, which is a different thing entirely. For an AirPlay output the level was set, then reset to full scale the moment the stream started (it must not attenuate on top of the control already doing so), so the configured announcement volume was calculated, applied and thrown away again. It now goes to the control that actually handles the volume, and is restored when the announcement finishes. Speakers that do handle their own volume are unaffected and keep applying it themselves. Spotted while working on #5679 and deliberately left out of scope there. Not something a user reported, hence `maintenance` — happy to relabel if you'd rather have it in the notes as a bugfix. - The announcement volume is applied through the control that owns the speaker's volume when the output playing the clip does not own it, and restored afterwards. - Speakers whose own output handles the volume (including a bridge riding on it) are unchanged and still apply it themselves. - A speaker configured without any volume control no longer has a volume applied to it at all. ## 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` ## 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.