mirror of
https://github.com/librespot-org/librespot.git
synced 2026-04-27 08:15:50 +03:00
[PR #935] [MERGED] New dynamic limiter for very wide dynamic ranges #1150
Labels
No labels
A-Alsa
SpotifyAPI
Tokio 1.0
audio
bug
can't reproduce
compilation
dependencies
duplicate
enhancement
good first issue
help wanted
high priority
imported
imported
invalid
new api
pull-request
question
reverse engineering
wiki
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/librespot#1150
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/librespot-org/librespot/pull/935
Author: @roderickvd
Created: 1/12/2022
Status: ✅ Merged
Merged: 1/14/2022
Merged by: @roderickvd
Base:
dev← Head:new-dynamic-limiter📝 Commits (4)
78ea638New dynamic limiter for very wide dynamic rangesdc530c8Small improvementsdce7944Spare CPU when not in limiting state681fe9dMerge remote-tracking branch 'origin/dev' into new-dynamic-limiter📊 Changes
4 files changed (+149 additions, -180 deletions)
View changed files
📝
CHANGELOG.md(+1 -0)📝
playback/src/config.rs(+13 -16)📝
playback/src/player.rs(+91 -120)📝
src/main.rs(+44 -44)📄 Description
Well that was a fun exercise! This time I actually think I know what I'm doing.
The current dynamic limiter was an amateur attempt that worked within a limited range and first Rust code I ever wrote. This time I took a article from the Journal of the Audio Engineering Society [1] and wrote a fresh implementation of the most recommended variant (feed-forward in the log domain with a smooth, decoupled peak detector).
So far it seems to work beautifully, including the tracks with wide dynamic range in the linked issue. Would be nice if some of you could give this a spin on various genres and let me know how it goes.
I purposely changed the field names to signal developers downstream that some of these fields now hold values in a different unit. Before in
0.2.0this caused distorted audio for some other applications and I'd like to prevent that this time.Closes: #934
[1] Giannoulis, D., Massberg, M., & Reiss, J.D. (2012). Digital Dynamic Range Compressor Design—A Tutorial and Analysis. Journal of The Audio Engineering Society, 60, 399-408
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.