90 Commits

Author SHA1 Message Date
mynameisdeleted
906470ba2d fix: update eq.py to call ./apply.sh --bake for full reliable WirePlumber reload and volume restoration 2026-09-01 09:45:17 -04:00
mynameisdeleted
4cd548c643 feat: finalize low-latency baked DSP graph with crisp treble, virtualbass-first sub-bass drive, atomic reloads, and eq.py CLI 2026-09-01 09:44:16 -04:00
mynameisdeleted
48a946e9b4 feat: implement True-Peak ISP guarding, stereo loudness node consolidation, crossover phase alignment, and eq.py CLI utility 2026-09-01 09:13:42 -04:00
mynameisdeleted
2bfa50b792 feat: add automatic master volume and mute state preservation across WirePlumber restarts in apply.sh 2026-09-01 09:09:45 -04:00
mynameisdeleted
d22bbfd325 feat: complete single-stage FIR baking with dynamic graph.json parsing, 5ms lead trimming, and master limiter removal 2026-09-01 09:04:25 -04:00
mynameisdeleted
f2a467996a feat: add single-stage FIR baking with 5ms low-latency lead, lopsided tail extension, and sweep analyzer 2026-09-01 08:10:26 -04:00
mynameisdeleted
ec75582cd6 fix: bypass user_eq node merge in apply.sh when --bake is enabled 2026-09-01 07:53:13 -04:00
mynameisdeleted
e6c60b18ca feat: add bake-graph.py and ./apply.sh --bake for single-stage FIR convolver baking 2026-09-01 07:51:38 -04:00
mynameisdeleted
dc5550122b feat: adjust audio processing parameters for improved sound quality 2026-08-31 20:57:56 -04:00
mynameisdeleted
17d03202f3 feat: update filter parameters in graph.json for improved audio processing 2026-08-31 20:56:28 -04:00
mynameisdeleted
6549b51af9 feat: set default user_eq g_out to 1.5 in graph.json for stock clean volume headroom 2026-08-31 14:26:03 -04:00
mynameisdeleted
4ae3bdbb1d docs: polish README formatting, badge row alignment, and section readability 2026-08-29 12:06:47 -04:00
mynameisdeleted
e8f349d6d3 docs: add GitHub and Fairfax Media repository links to README 2026-08-29 12:05:26 -04:00
mynameisdeleted
d8fcc5d4da docs: optimize README headline and introduction for SEO 2026-08-29 12:05:26 -04:00
mynameisdeleted
c653818dbc chore: remove unused audio file cap.wav 2026-08-29 12:05:26 -04:00
62a84ce275 Merge pull request 'docs: add badges for platform, ecosystem, audio, and target hardware in README' (#5) from loudness-tracked-tilt into main
Reviewed-on: #5
2026-08-29 11:41:06 -04:00
70c7a1021b Merge branch 'main' into loudness-tracked-tilt 2026-08-29 11:41:00 -04:00
mynameisdeleted
7bb875cce0 docs: add badges for platform, ecosystem, audio, and target hardware in README 2026-08-29 11:40:38 -04:00
b779f53a71 Merge pull request 'loudness-tracked-tilt' (#4) from loudness-tracked-tilt into main
Reviewed-on: #4
2026-08-29 09:58:55 -04:00
ed3a44d127 Merge branch 'main' into loudness-tracked-tilt 2026-08-29 09:58:40 -04:00
mynameisdeleted
606cc96a9e docs: update audio processing pipeline diagram with enhanced structure and color coding
Replaced the mermaid flowchart with a more detailed vertical layout showing four distinct processing stages with improved visual organization and consistent color coding for different audio processing components.
2026-08-29 09:58:13 -04:00
mynameisdeleted
759f6b6c79 fix: improve formatting and clarity in README for signal processing chain 2026-08-29 09:55:53 -04:00
mynameisdeleted
2420f6edb1 docs: Simplify README and highlight key improvements over upstream DSP chains
Refactored the README to provide a clearer overview of the custom PipeWire DSP graph for MacBook Pro 15,1 speakers. Removed detailed technical explanations and prior art discussions, focusing instead on concise documentation of the key improvements: warm voicing, multiband dynamics, FIR correction, and driver safety features. This makes the documentation more accessible while preserving essential information about the non-driver nature of the solution and its advantages over upstream configurations.
2026-08-29 09:54:18 -04:00
e53c500933 Merge pull request 'feat: add user_eq override functionality and update documentation' (#3) from loudness-tracked-tilt into main
Reviewed-on: #3
2026-08-29 09:28:04 -04:00
9c96be76d4 Merge branch 'main' into loudness-tracked-tilt 2026-08-29 09:27:57 -04:00
mynameisdeleted
11d14caff7 feat: add user_eq override functionality and update documentation
This commit introduces support for overriding the user_eq settings via a local user_eq.json file, allowing users to customize their audio profile without modifying the committed graph.json. The change includes:

- Adding user_eq.json to .gitignore
- Updating apply.sh to merge user_eq.json contents into the effective graph when present
- Rewriting INSTALL.md and README.md to document the new override workflow
- Enhancing preflight checks in apply.sh to use the merged graph
- Providing clear instructions for both override file and direct editing approaches

The new approach allows users to maintain custom EQ settings across git pulls while preserving the ability to edit graph.json directly when needed.
2026-08-29 09:27:16 -04:00
5cd526d10b Merge pull request 'Enhance installation process: add scripts for dependency installation and preflight checks; update documentation for clarity' (#2) from loudness-tracked-tilt into main
Reviewed-on: #2
2026-08-29 09:17:52 -04:00
a582af12b4 Merge branch 'main' into loudness-tracked-tilt 2026-08-29 09:17:46 -04:00
mynameisdeleted
c48172e48a Enhance installation process: add scripts for dependency installation and preflight checks; update documentation for clarity 2026-08-29 09:17:07 -04:00
0ea346484a Merge pull request 'loudness-tracked-tilt' (#1) from loudness-tracked-tilt into main
Reviewed-on: #1
2026-08-29 09:11:10 -04:00
mynameisdeleted
97b8229ce1 Add installation instructions for MacBook Pro 15,1 DSP graph under Linux
- Document prerequisites including kernel, ALSA, and required packages.
- Provide steps to clone the repository and install LV2 plugin dependencies.
- Include instructions for verifying plugin URIs and applying the graph.
- Outline troubleshooting steps for common issues.
2026-08-29 09:10:16 -04:00
mynameisdeleted
a3e795767b enhance DSP performance: adjust EQ parameters for improved warmth and reduce distortion risk 2026-08-29 07:48:55 -04:00
mynameisdeleted
944b5fd2bb update DSP parameters for improved bass response and dynamics; add parameter reference documentation 2026-08-28 23:15:56 -04:00
mynameisdeleted
88e5a4ea7c split-limiting: adjust gain values for midbass and bass frequencies 2026-08-26 22:29:12 -04:00
Steve
8e48caa391 split-limiting: -2 dB ceiling on the midbass woofer bands
al_1 (90-200 Hz) 0.161 -> 0.128, al_2 (200-500 Hz) 0.200 -> 0.159.
With cr 20 / cr 15 these bands pin near threshold, so a ~2 dB lower
threshold = ~2 dB lower peak ceiling. Sub band (band 0) and quiet
material unchanged.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-26 22:10:10 -04:00
Steve
3129b557a1 split-limiting: move bass drive from woofer FIR into the EQ
- convLW/convRW gain 1.5 -> 1.15 (near unity)
- EQ bass bells g_1..g_5 raised ~+2.3 dB (1.4/1.9/2.5/2.0/1.5 ->
  1.82/2.48/3.26/2.61/1.75) to keep the same woofer output level

Net woofer SPL unchanged, but the low-end drive now passes through
the multiband + main limiter + wlim instead of being a fixed gain
applied after every dynamics stage. Side effect: ~250-500 Hz woofer
output is ~1-2 dB leaner (g_5 only partly compensated, g_6 not) -
raise g_5/g_6 if you want it flat. README updated.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-26 22:04:01 -04:00
Steve
69214eafff split-limiting: raise ratios on the sub-500 Hz bands
cr_1 (90-200 Hz) 10 -> 20, cr_2 (200-500 Hz) 7 -> 15. The three
bands below ~500 Hz now all behave as limiters, tightening excursion
and boom control. Thresholds/attacks unchanged. README updated with
the boxy-vocal caveat on band 2.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-26 22:01:00 -04:00
Steve
9621f3b2bf split-limiting: pad EQ pre-amp, restore level post-detector
Lower headroom pressure in the EQ / virtualbass stages:
- equalizer g_in 0.7 -> 0.5 (~-3 dB more pad)
- restore the ~3 dB at multiband_compressor g_out 1.0 -> 1.4, after
  the band detectors and right before the main limiter
- scale band thresholds al_0..al_5 by 0.5/0.7 so the compressor
  behaves identically at the lower internal level

Path is 32-bit float end to end so this is about keeping virtualbass
and the plugin detectors out of the red, not fixing hard clipping
(which only occurs at the sink). README updated.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-26 21:58:56 -04:00
Steve
72dbd1fd62 split-limiting: per-band peak control + post-FIR driver limiters
Keep the EQ (and quiet-listening tonality) untouched; move all peak/
excursion control into the dynamics stages so turning the volume up
runs into limiting, never clipping or woofer bottoming.

- multiband_compressor: 4 -> 6 bands, Modern mode, crossovers
  90/200/500/1500/5000 Hz. Band 0 near-brick-wall (cr 50, al 0.13,
  6 ms); higher bands limit progressively gentler. Thresholds kept
  near stock so sub-threshold (quiet) material is unaffected.
- main limiter release 0.8 -> 0.35 s.
- new wlim (-2 dB) after convLW/convRW and tlim (-1 dB) after
  convLT/convRT: fastLookaheadLimiter instances that clamp the actual
  post-FIR driver signal. wlim is the mechanical-excursion backstop;
  tlim also keeps the tweeter/woofer paths time-aligned.
- outputs rewired to wlim/tlim (FL/FR/RL/RR order preserved).

README updated: signal chain, change table, rationale, tuning knobs.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-26 21:55:03 -04:00
Steve
a7d905f972 Custom MBP 15,1 speaker DSP graph + installer
Fork of lemmyg/t2-apple-audio-dsp configs/15_1/graph.json:
- add LSP 16-band parametric EQ front stage (warm voicing tilt, g_in 0.7)
- EQ band 0 as 24 dB/oct high-pass @ 50 Hz to protect the woofers
- swap single-band compressor for LSP 4-band mb_compressor so only the
  sub band (<120 Hz) is clamped on bass beats, keeping mids open
- woofer FIR gain 1.0 -> 1.5

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-26 21:43:25 -04:00