Skip to content

Qudelix for macOS 1.4.0

Latest

Choose a tag to compare

@FrankieMa77 FrankieMa77 released this 06 Sep 00:46

Qudelix for macOS 1.4.0

Equalizer

  • Band inspector. Click a band's dot to select it; a panel under the graph
    carries its filter type, gain and a logarithmic Q slider. Double-click a
    band to clear it. A readout badge in the graph's corner follows the drag,
    then the pointer, then the selection.
  • Flatten and Reset are two buttons. Flatten zeroes the gains and leaves
    every centre, filter type and Q alone; Reset restores the factory layout
    for the current mode. Each is one undo step.
  • Update writes the curve back into the slot it was loaded from, without a
    trip through the Save menu.
  • The curve and its markers dim when the equalizer is switched off, as the
    band table already did.
  • The gain controls stay on an empty or muted band row.

Presets and corrections

  • A preset library on the Mac, beside the twenty slots on the device,
    holding as many curves as you care to make. A preset is global or bound to
    one output device, records which EQ bank it was made for, and applies
    through the same gated, clamped, single-undo path as an import. It lives in
    presets.json, read and written with the same care as the other state
    files.
  • Headphones field. Name the pair on the end of the 5K. When the AutoEq
    project has measured that model, a fitted correction is offered once, as a
    banner and as a line under the field, with the alternative measurements in
    a menu. A name is looked up once, and only when it changes.
  • AI preset studio. Design a preset for the named headphones with an AI
    provider of your choosing, on your own key: fifteen kinds, from Correction
    and the published targets to Clarity, Warmth and a V-shape. The draft can
    be auditioned on the 5K, kept in the library or written into a slot. Silent
    until you press Generate; the key lives in the Keychain and nowhere
    else; Correction needs no provider at all when a measurement exists. The
    Privacy section of the README lists exactly what leaves the machine.
  • Per-app EQ. Give a single app a second curve of its own from the
    library, applied on the Mac before the audio reaches the 5K: a podcast
    player on a speech-shaped preset while music keeps the curve on the device,
    with no switching by hand. Up to eight apps, each on any library preset or
    Default. The section lists what is playing right now, and it inserts the
    Mac-side engine only while something is assigned.
  • Drop a preset file onto the menu bar icon to import it.
  • The parser now reads files the way they are actually published:
    tab-separated, lower case, pass filters without a gain, shelves without a
    Q, a preamble without its colon. When a file carries more filters than the
    device has bands, the ones doing the most work are kept rather than the
    first twenty, and everything a file asked for and did not get is now said
    rather than dropped in silence.
  • Fits are cached on the values the sliders actually take, so re-fitting a
    shape tried a moment ago costs nothing, and the cache keeps the whole
    result — the clipping warning and the predicted rating included.

Stage

  • Crossfeed by band. Three trims scale the crossfeed amount below 800 Hz,
    between 800 Hz and 4 kHz, and above 4 kHz. Trims at 100% are a genuine
    no-op, sample for sample.
  • Balance. Level, ±3 dB split between the sides so the loudness holds, and
    time, up to 0.5 ms, to correct a pair whose two sides have drifted. Applied
    last, just before the clipper.
  • True-peak limiter. The stage now ends in a limiter that holds the output
    under −1 dBTP by estimating the peaks between samples. Off by default. It
    runs after the soft clipper, so the last thing to touch the audio is the
    one stage that can state a ceiling and keep it.
  • Loudness compensation. An equal-loudness contour sized from how far the
    estimated level at the ear sits below a reference, so quiet listening keeps
    its bass. It follows a thirty-second average of the listening level, and
    glides to each new setting rather than stepping. Off by default.
  • Dynamic bass. The 5K applies its curve after the Mac, so a bass boost is
    a promise the driver has to keep. This stage measures what the device's own
    curve will do to the low band and eases the loudest passages before they
    get there; quiet passages keep the whole boost. Off by default.
  • Impulse response. Run a WAV, AIFF or CAF impulse response of your own
    over the Mac's output, with a Mix slider, per output device. Up to two
    seconds, with no added latency at any length; a response the output's
    buffer size cannot afford is refused with the two ways out named.
  • The chain order is fixed: room, crossfeed and balance; convolution; loudness
    shelves; dynamic bass; soft clipper; true-peak limiter.
  • Call awareness. When the 5K is on a call over Bluetooth, or a call app
    is holding the headset microphone, the Mac-side engine steps out of the way
    and comes back when the call ends. The automatic rate switcher never
    renegotiates under a call, and the stream verdict measured before the call
    is dropped rather than left voting.
  • Microphone guard. When an app makes the headset's microphone the Mac's
    default input and the Bluetooth link collapses to the voice codec, the app
    says so, or puts the default input back on the built-in microphone for you.
    Off, Ask or Fix. Two reverts of the same device in two minutes and it backs
    off; a Mac with no built-in microphone degrades to asking.

Level

  • Estimated level at the ear. One number about the world rather than the
    signal, built from the K-weighted loudness of what is playing, the
    attenuation the 5K itself reports, and a population figure for the
    headphone that a per-output calibration slider lets you shift. Always
    marked as an estimate, never printed with a decimal, and the pane says what
    it rests on.
  • The live row shows what the limiter, the loudness shelf and the bass guard
    are doing this second, and the signal path names each stage only while it
    is actually in the audio path.

Tune

  • Shape. Bass, then presence, then tilt, one axis at a time, three rounds
    each: twelve comparisons instead of twenty. What you hear is exactly the
    curve Keep writes. When the pre-gain headroom cannot carry the full
    ranges with matched levels, the ranges shrink until it can, and the intro
    says by how much.
  • Blind check. Five trials of your curve against a flat one, sides
    randomised and levels matched. It writes nothing whatever the answer.
  • Proper level matching. Pairs are matched on the mean magnitude response
    from 100 Hz to 8 kHz rather than on the mean of the band gains, so a bass
    shelf no longer reads as a large change and a treble tilt as a small one.
    The louder side is trimmed down to the quieter, so matching never makes a
    session louder than the pre-gain already judged safe.
  • A by-ear session earns a verdict before anything acts on it. Too many
    presses on the silent checks, readings too far apart, or too few of them
    refuse the result and show the counts the refusal turned on, on the Tones
    side and the Compare side alike.
  • A Compare session survives closing the popover.

The app

  • A new shell. The app owns its status item and popover, so clicking the
    icon no longer leaves a view graph behind each time, and the per-second
    meter values republish only while the popover is on screen.
  • A drawn menu bar icon: headphones in a circle, with EQ bypass, the
    Soundstage, the stream verdict, battery and a call composed as marks on it.
  • Install with a double-click. The disk image carries an installer that
    copies the app, clears the download flag and launches it, so Gatekeeper
    asks once, for the installer, and never again for the app.
  • The footer shows the version and the source revision it was built from.
  • The release build refuses to package a binary that is not universal.

Fixes

  • The audio tap consumed the wrong input buffer when the output device had
    inputs of its own, so a headset or dock microphone was mixed into what the
    Soundstage wrote back out and metered as the listening level. The tap's
    buffer is now taken from the end of the list.
  • A tone test could renegotiate the USB rate under itself. Detection sits the
    session out while the pipeline is muted, and a frozen window is never
    re-judged as new evidence.
  • Hi-res content was downsampled to 44.1 kHz on outputs that stop at 48 kHz.
    Auto-rate now takes the highest rate at or above 88.2 kHz the output
    offers, and holds where there is none.
  • Outputs that appear a few seconds after login are enumerated again three
    seconds in, so their saved Soundstage settings no longer look lost.
  • Preset and device names are no longer parsed as Markdown in the profile
    prompt, the microphone banner, or the footer.
  • A pane that outgrows its region is clipped at its edge instead of drawing
    over the footer.
  • Imported files go through the hardened reader: no symlink is followed, no
    FIFO can wedge the load, and a short read is a failed read rather than a
    truncated document parked as recovered.
  • Two bands sitting on the same frequency can no longer be dragged through
    each other.
  • The microphone guard's alerts, the battery alerts and every other
    notification share one delivery path with fixed identifiers, so a battery dipping in and out of
    "low" replaces its warning instead of stacking a column of them.

SHA-256 Qudelix-1.4.0.dmg

60524c470f93641992186920436093ebe4472bad5ae6b629ddd7074d26469851

Verify before opening:

shasum -a 256 ~/Downloads/Qudelix-1.4.0.dmg

Requires macOS 14 or later; per-app EQ and everything else that works on the Mac's own audio needs 14.2. Universal binary (Apple Silicon and Intel; only run on Apple Silicon so far). The disk image carries a double-click installer, so Gatekeeper's "Open Anyway" is asked once, for the installer, and never for the app. macOS asks for the System Audio Recording permission again on first launch of a new version because the grant is keyed to the signature.