Skip to content

Expose output volume on LumePlayer - #37

Merged
bilipp merged 1 commit into
bilipp:mainfrom
adiberk:host-volume
Oct 2, 2026
Merged

bilipp merged 1 commit into
bilipp:mainfrom
adiberk:host-volume

Conversation

@adiberk

@adiberk adiberk commented Sep 29, 2026

Copy link
Copy Markdown
Contributor

What

A volume property (0...1) on LumePlayer, forwarded to the session's SystemRenderer.volume and carried across load.

Why

SystemRenderer already has volume, but a host can't reach it through LumePlayer, so it can't fade audio. Audio that starts or stops mid-waveform at full level is heard as a click. It's most noticeable in a live-TV app that changes channel quickly: the old session is torn down while it's playing, and the new one starts mid-programme at full level.

With this, a host can open a stream silent, ramp it up once the state reaches .playing, and ramp it down before replacing or stopping a session. We use a 40 ms fade out and a 150 ms fade in, and the clicks on channel changes got noticeably better.

Notes

  • Additive only; the default of 1.0 keeps today's behaviour.
  • Built and used in our tvOS/iOS app against v0.2.2; I haven't run the full test suite here.

🤖 Generated with Claude Code

`SystemRenderer` already has a `volume`, but a host can't reach it through
`LumePlayer`, so it can't fade audio in or out. Audio that starts or stops
mid-waveform at full level is heard as a click, which is most noticeable
when a live-TV host changes channel quickly.

`volume` (0...1) is applied to the current session and carried across
`load`, so a host can open a stream silent and ramp it up once playback
starts, and ramp it down before replacing or stopping a session.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@bilipp
bilipp merged commit 987058c into bilipp:main Oct 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants