Skip to content

CS8409: host layout 57 in its own PipeWire client - #18

Open
gavinmclelland wants to merge 7 commits into
mainfrom
feat/cs8409-speaker-tuning
Open

gavinmclelland wants to merge 7 commits into
mainfrom
feat/cs8409-speaker-tuning

Conversation

@gavinmclelland

Copy link
Copy Markdown
Owner

Moves the A1707 speaker graph off the PipeWire daemon drop-in and into a separate client (cs8409-speaker-tuning.service). Apps still see MacBook speakers (cs8409_speakers), not Omarchy’s stock omarchy_speaker_tuning name.

  • Stereo → 4ch layout 57 (tweeter HP 1150+650, woofer LP 1180+1500, invert, 5-sample delay)
  • LSP limiter_stereo on the 2ch bus (alr/boost off); clamp ±0.98 after split
  • DSP sink stays 100%; Touch Bar volume is the physical 4ch node (do not lock it)
  • One PipeWire restart to unload 60-cs8409-crossover.conf; after that, host on/off does not drop Spotify
  • Lid-mic tones on the host: 1 kHz vs 500 Hz +0.5 dB (was −0.7 dB / an 18 dB hole earlier)

Requires lsp-plugins-lv2. omarchy audio tuning status still says nothing ships for this laptop — that is honest until a tuning lives in the Omarchy package.

Not a new kernel driver. Not ArchProAudio. Not EasyEffects. Not speakersafetyd.

Closes nothing yet — #14 stays open (Mozart / BuzzKill / thermal still not cloned).

Move the stereo→4ch graph out of the daemon drop-in so Spotify
survives DSP changes. Sink stays cs8409_speakers (MacBook speakers);
LSP limiter_stereo on the 2ch bus, clamp after the split. Do not
lock Touch Bar volume. Lid-mic 1 kHz vs 500 Hz is +0.5 dB.
Layout 57 PEQ without DspLoudness left 125–280 Hz at −25 to −34 dB vs
500 Hz on the lid mic (Apple’s −20 dB / 280 Hz notch). Add a 150 Hz
low shelf, 6.5 kHz high shelf, +6 dB at 180 Hz, and keep a −8 dB
cabinet dip. Woofers were already electrically loud down there; this
is the missing contour. Limiter still on the 2ch bus.
@gavinmclelland

Copy link
Copy Markdown
Owner Author

Follow-up on the hollow/no-bass report.

The 1 kHz crossover was already fine. The hole was 125–280 Hz (kick/body): lid mic −25 to −34 dB vs 500 Hz, because we cloned Apple’s −20 dB / 280 Hz notch without DspLoudness.

Live now (host reloaded, no Pulse restart):

  • low shelf 150 Hz +4 dB, +6 dB @ 180 Hz, high shelf 6.5 kHz +2.5 dB (air)
  • 280 Hz dip −8 dB (XML −20)
  • that band ~28 dB louder on the lid mic

Mozart dual-band / BuzzKill / thermal still not cloned. Play the same track again — if it crackles, the limiter is the next knob, not more bass.

Full voicing on this hardware is 80 Hz–16 kHz. Run layout 57 in CoreAudio
order on the 2ch bus: HPF → Mozart (−18 dB / 1.8 / +6 dB) → Loudness
shelves 300/2000 Hz → XML PEQ (280 Hz −20 dB) → dual-band 400/1250 Hz
→ limiter, then split. PW 1.6 ignores live biquad Gain, so Loudness is
a baked mid-curve. Do not lock Touch Bar volume.
@gavinmclelland

Copy link
Copy Markdown
Owner Author

Full Apple range on this chassis is 80 Hz–16 kHz (Apple’s HPF and last EQ band — not a 30 Hz sub).

Live host now runs layout 57 in CoreAudio order:

HPF 80 → Mozart compressor → Loudness 300/2000 Hz → XML PEQ (280 Hz −20 dB) → dual-band 400/1250 Hz → +1.5 dB → limiter → 4ch split / invert / delay.

PipeWire 1.6 does not apply pw-cli set-param on filter-chain biquad Gain, so Loudness is baked at a mid curve (+4 / +3 dB) instead of tracking the Touch Bar. BuzzKill / thermal still opaque.

Play the same track. If it crackles at 100%, say so — that’s Mozart makeup vs the limiter, not a missing driver.

A Q=0.5 highshelf at 2 kHz sat on Apple’s +13 dB @ 1550 Hz and Mozart
makeup, which is a stuffed-nose vocal. Move air to 6.5 kHz, cap 1550 Hz
at +8 dB, Mozart makeup +3 dB, dual-band mid ratio 1.8.
Lid-mic vs electrical on All The Stars / Still Dre / Don’t Start Now:
these speakers add ~20 dB of 700–1200 Hz vs 160–350 Hz. Don’t Start
Now is flagged in that list as too bright and is not the target.
On that mix the woofers already get 40–160 Hz as the loudest electrical
band; the cabinet still loses it to 350–700 Hz in the air. 100 Hz is
the tone these MAX98706s can play. Not a 40 Hz sub.
Best speaker test is Still D.R.E. TB idle/dim sysfs matches Omarchy
screensaver/lock; dim still needs a 150s idle confirm.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant