fix: gapless autoplay transitions via Web Audio pre-scheduling#104
Open
chinmaykrishnroy wants to merge 1 commit into
Open
fix: gapless autoplay transitions via Web Audio pre-scheduling#104chinmaykrishnroy wants to merge 1 commit into
chinmaykrishnroy wants to merge 1 commit into
Conversation
|
@chinmaykrishnroy is attempting to deploy a commit to the freemanjiang's projects Team on Vercel. A member of the Team first needs to authorize it. |
This file contains hidden or 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
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.
Fix: Gapless Autoplay Transitions
Problem
When a song finishes and auto-advances to the next track, there's a 400ms-800ms audible gap caused by the server's audio loading coordination round-trip. Even bypassing coordination leaves a minimum 400ms scheduling delay.
Solution
Client-side gapless playback using the Web Audio API's sample-accurate scheduling. When a track starts playing, the next track's
AudioBufferSourceNodeis pre-scheduled to begin at the exact sample the current track ends, 0ms gap, no server round-trip.How It Works
nextNode.start(currentTrackEndTime, 0)on the AudioContext timeline, sample-accurateBehavior
Verification
Preview
Optional self-hosted preview: https://beatsync.prefect-sys.online/
Note: this preview is my self-hosted deployment and may include local deployment-specific configuration, but the PR itself only changes the gapless autoplay transitions behavior.