Built-in equalizer #96
Labels
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
SBDeveloper/medley#96
Loading…
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?
A built-in equalizer for everything the app plays. Design decided in a grilling session; see ADR 0023 and the Equalizer / Equalizer preset terms in
GLOSSARY.md.Why built in, not a plugin
processruns on the decoder thread, which buffers about 8 s ahead of the Output, so a slider move would be heard up to 8 s late. The filters must sit after the buffer, in the host; a plugin would only draw sliders.Behaviour
Player::render, after the buffer and before volume. Every Output (local, VBAN, stream listeners) and the Visualizer tap (ADR 0016) see the shaped audio. Spotify via Soloist is shaped.Out of scope
Per-Output, per-Source or per-Playlist curves; parametric bands; a limiter.
Notes for the implementer
UiNode(plugin UI) has no slider and does not need one: this is core Svelte UI,ui/src/lib/Playback.sveltealready uses<input type="range">for Crossfade.Equalizer pluginto Built-in equalizerImplemented on main (commits
daa5584,e8c747a,72776fc,e5e9183,b3d7f89; not pushed when this was written).Built in rather than a plugin (ADR 0023): ten graphic bands and a preamp in Player::render, presets (built-in and user-saved), AutoEq import (FixedBandEQ exact, ParametricEQ kept as an Imported curve, GraphicEQ fitted to the sliders), a response graph, and the Playback settings card with two paths: Adjust yourself and Tuned for your headphones.
Scope added during the work and not in the original body: the AutoEq import, the response graph and the two-path card.
Not verified: the full core test suite (the one failure seen, low_delay
a_receiver_that_is_not_set_up..., also fails at HEAD without this work) and the UI in the running app.