Skip to content

feat(playback): add selectable playback speed - #53

Open
mihaimetal wants to merge 1 commit into
NUber-dev:mainfrom
mihaimetal:feature/playback-speed-pr
Open

feat(playback): add selectable playback speed#53
mihaimetal wants to merge 1 commit into
NUber-dev:mainfrom
mihaimetal:feature/playback-speed-pr

Conversation

@mihaimetal

Copy link
Copy Markdown

Summary

  • Add a discrete playback-speed control on the player chrome (0.1×–2×).
  • Persist the chosen rate and apply it via HTMLAudioElement.playbackRate.
  • Keep the floating player in sync; scale Discord Rich Presence progress timestamps by the selected rate.

Why

Useful for practice / review / long podcasts without changing the rest of the playback stack. Uses the browser's built-in rate control (pitch is preserved by default).

Scope

Frontend-only, rebased cleanly on current origin/main. Independent of media-key PRs (#43) and auth work.

Test plan

  • pnpm test (includes playback.test.ts rate validation)
  • tsc --noEmit
  • Play a track, open the speed menu, switch 0.5× / 1.25× / 1.5× / 2× — audio rate changes
  • Restart app — selected rate is restored
  • Floating player reflects rate changes when used
  • Discord RP (if enabled) progress bar roughly matches wall-clock at non-1× rates
  • Seek / skip / next still work at non-1× rates

Notes

Compatible with NUber-dev/YTubic main as of the PR base; no media-key or auth commits included.

@mihaimetal
mihaimetal force-pushed the feature/playback-speed-pr branch from 82c4db3 to d5e4376 Compare August 2, 2026 07:48
Expose discrete rates (0.1×–2×) on the player chrome, persist the
choice, and drive HTMLAudioElement.playbackRate. Floating player and
Discord progress timestamps follow the selected rate.
@mihaimetal
mihaimetal force-pushed the feature/playback-speed-pr branch from d5e4376 to 3dccceb Compare August 2, 2026 18:27
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.

1 participant