Repository navigation
Conversation
The rootless capture loop added up to ~0.5 s of delay, which puts video out of sync. The new "Low-latency mode" setting (on by default) reads in small blocks, caps the output queue, uses the low-latency output path and drops a block whenever the output queue grows past its target.
Runs the EQ curve (GEQ + PEQ) inside each app with Android's DynamicsProcessing effect instead of capturing audio, so video stays in sync. The curve is fitted to the effect's pre-EQ, MBC and post-EQ stages (up to 380 bands) against its actual block response. Settings: Android EQ on/off, latency (~10/20/40 ms) and a limiter.
- LiveEqBottomSheet edits the bands in real time: logarithmic frequency slider, gain and Q controls, and chips to pick the band. Changes are saved when a slider is released. - A Live EQ button on the parametric EQ screen opens it. - NumberInputBox clamps on focus loss instead of while typing, and Q is kept at 0.1 or more.
Points the submodule at the libjamesdsp commit that adds a stereo arbitrary EQ entry point (separate left and right curves), which the per-channel parametric EQ needs.
Each band can apply to both channels, the left or the right one. The engine sends separate left and right curves to libjamesdsp's stereo arbitrary EQ, and the preview draws both. The preamp applies to both channels when only one side has bands.
This was referenced Sep 24, 2026
Measures the long-term spectrum of the captured audio before JamesDSP processing and compares it with a reference curve, per song. - Analysis: stereo FFT into 1/12-octave bands, averaged in the power domain on a worker thread; the capture thread never blocks or allocates. Songs are split by media session metadata (with notification access), by silence, or by a sustained change of the spectrum. - References: IEC 60268-1 programme simulation noise (default), M-Noise, pink noise, an adjustable tilt, average spectra of popular music overall and of its least and most percussive tracks (Elowsson & Friberg, AES 2017), an average learned from the songs played, and a custom reference from the playing song or an imported WAV (the official M-Noise file is recognized by its checksum). - Card on the DSP page: verdict, seven band values, song/live and compensated/raw graphs, hold, reset and a reference picker. Each band is judged against a normal range; a source's codec cut-off and missing deep bass are detected and left out. - Settings get their own page, also opened from the card.
PEQHUB
force-pushed
the
rootless-features
branch
from
September 24, 2026 00:37
84ba4f5 to
afee321
Compare
|
Title: JamesDSP Full ARM64 – Play Protect warning and user experiences Hello PEQHUB, I'm interested in testing your JamesDSP Full ARM64 build ("JamesDSP-Full-arm64-v8a.apk") on my Samsung Galaxy S26 running Android 17. However, Google Play Protect blocks the installation with a warning about access to sensitive data and possible identity theft or financial fraud. Before installing it, I would appreciate some clarification:
I would also appreciate feedback from anyone who has personally tested this exact build, particularly on recent Samsung devices. Thank you for your work and for any clarification. |
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.
This bundles the rootless features I've been working on into one PR. It replaces #349 (low-latency mode and Android EQ), which is included here unchanged apart from dropping its measuring tools.
Per-channel PEQ needs a small libjamesdsp change: timschneeb/JamesDSPManager#6. The submodule is pinned to that commit. GitHub serves it through the existing
.gitmodulesURL, so the URL is unchanged. Merge the libjamesdsp PR first.Low-latency mode (on by default)
Rootless capture added up to ~0.5 s of delay, so video went out of sync.
Bluetooth, cold start: A/V offset about 340 ms before, about 120 ms after.
Android EQ (off by default)
Instead of capturing, the GEQ/PEQ curve runs inside each app with Android's DynamicsProcessing effect, so video stays in sync. The curve is fitted to the effect's pre-EQ, MBC and post-EQ stages (up to 380 bands) against its actual block response. Left and right curves are applied separately. Settings: latency (~10/20/40 ms) and a limiter. Other effects are off in this mode.
Measured on the speaker with a mic: 10/21/42 ms added depending on the latency setting, and a -10 dB preamp comes out at -9.4 dB.
Live EQ
A bottom sheet on the parametric EQ screen for editing bands while listening: a logarithmic frequency slider, gain and Q controls, and chips to pick the band. Changes are saved when a slider is released.
Per-channel parametric EQ
Each band applies to both channels, left only or right only. The engine sends separate left and right curves to the stereo arbitrary EQ, and the preview draws both. Equalizer APO import and export use
Channel:lines, so per-channel presets round-trip.Song tonality analyzer (off by default)
A card on the DSP page shows how the music you play compares with a reference spectrum. It measures the captured audio before JamesDSP processing, per song.
Testing
Channel:import/export, the tonality analyzer (reference feed-back, codec cut-off, missing bass, resets, bad input), reference curves against the IEC table, the resampler and the WAV decoder.