Repository navigation
Improve low-frequency pitch tracking down to 20 Hz - #36
Merged
Merged
Conversation
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
log2workMotivation
The previous maximum lag could not represent F#1 (46.25 Hz). Clean low notes could return no pitch, while harmonic-rich F#1 could be reported around 91-95 Hz. Simply extending the one existing window to 20 Hz fixed sustained tones but made transitions stale and increased analysis CPU substantially.
The hierarchical implementation keeps short analyses on the common path and runs longer evidence only for low or uncertain pitches. There are no UI or parameter changes.
Performance
Measured against
origin/mainwith 60 synthetic harmonic-rich probes:Testing
-Wall -Wextra -Wpedantic -Wconversion -Wsign-conversionRegression coverage includes 20-81 Hz boundaries, F#1 at 44.1/48/96 kHz, phase/level/DC variation, weak and missing fundamentals, unsupported 15 Hz input, acquisition latency, direct 46.25-to-20 Hz steps, 46.25-to-30 Hz bends, rapid note changes, silence, and stale-pitch release.
Residual limitation
The low-frequency tests use synthetic guitar-like signals because real eight-string and Kontakt recordings were not available.