Add playback-speed compensation for audio queries - #241
Open
satpal123 wants to merge 1 commit into
Open
Conversation
satpal123
marked this pull request as ready for review
August 1, 2026 07:24
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.
Summary
From(AudioSamples, sourcePlaybackSpeedPercentage)extension for regular audio queriesWhy
DJ and vinyl sources often change tempo and pitch together. That produces different fingerprints and can prevent a query from matching the original catalogue entry, as discussed in #217.
When the source playback-speed percentage is known, reciprocal resampling can restore the query close enough to its original playback rate before fingerprinting. This keeps the stored catalogue unchanged. If the percentage is unknown, callers may try a small set of likely values, with one complete fingerprint and storage query per value.
The API is provided as an extension instead of adding a member to
IQuerySource, avoiding a source-breaking change for third-party implementations.Impact
Validation
dotnet test src\SoundFingerprinting.Tests\SoundFingerprinting.Tests.csproj --no-restore --filter "FullyQualifiedName~SoundFingerprinting.Tests.Unit.Audio|FullyQualifiedName~PlaybackSpeedQueryTest|FullyQualifiedName~QueryCommandBuilderTest"— 79 passeddotnet build src\SoundFingerprinting\SoundFingerprinting.csproj --configuration Release --no-restore— succeeded