Releases: ryoji-info/SoundBar
Release list
SoundBar 1.4
A full review pass — correctness, efficiency, quality
Every finding below came out of a multi-lens code review, was independently confirmed, fixed, and where reproducible, verified live on hardware.
Fixed
- The visualiser could get stuck on the Touch Bar indefinitely when "Start on Playback" was off but music kept playing behind a microphone session — the stop-check consulted unmasked audio state and cancelled a stop nothing would ever reschedule.
- Disabling SoundBar during the brief start delay no longer lets a pending timer present the visualiser while disabled.
- Dismissing during the stop fade (long press or menu) no longer silently swallows the auto-start for the whole next track.
- A missing audio permission no longer produces a dead black strip: if captures can't start, SoundBar leaves the Touch Bar alone and logs why. A manual start at idle still works and springs to life when audio arrives.
- Unplugging the captured microphone mid-call now moves the meter to the surviving mic instead of freezing it for the rest of the call.
- Double-tap mute no longer dies when it is the only gesture enabled; a keyboard wake no longer eats the next tap for up to 6 seconds.
- VU tick marks follow the configurable floor (
vuFloor) instead of a fixed scale that drifted the moment you tuned it.
Faster
- Zero heap allocations on the realtime audio thread (was ~94 malloc/free pairs per second).
- Each rendered frame is assembled once instead of twice; dimmed and waveform colours come from a cache instead of per-frame rebuilds.
Honest docs
- Tuning from the terminal requires restarting the agent (
launchctl kickstart -k "gui/$(id -u)/com.ryoji.SoundBar") — measured: an externaldefaults writenever reaches the running process. Menu changes apply immediately. The docs now say so instead of claiming live re-read.
SoundBar.dmg contains the app, installer, uninstaller and read-me. Ad-hoc signed — if macOS calls the download "damaged":
xattr -dr com.apple.quarantine ~/Downloads/SoundBar.dmg
Updating re-triggers the Screen & System Audio Recording and Microphone prompts (the code signature changes with every build).
SoundBar 1.3
Gesture fixes
Touching a dark Touch Bar no longer changes the colour. macOS dims the strip after about 75 seconds, and the touch you make to wake it used to land as a tap. It is now recognised as a wake and absorbed — exactly one touch, so the next deliberate tap works normally.
There is no API for the dim state (DFRGetStatus returns a constant whether the strip is lit or has been dark for minutes), so this goes via the system idle counter. The wrinkle: a finger on the strip resets that counter 67 ms before the contact reaches the app, so it is sampled ahead of time and read as a maximum over a short window rather than checked on arrival.
The long press now toggles the visualiser instead of only switching it off. Press once to stand it down, press again to bring it back — previously the menu was the only way back.
The volume slide has twice the resolution: 32 steps across the strip instead of 16, so 3.1 % per step over 7.3 mm of travel. A full sweep still covers exactly 0–100 %.
New settings, all adjustable without reinstalling:
defaults write com.ryoji.SoundBar volumeSteps -int 32 # 4-128, 16 matches the volume keys
defaults write com.ryoji.SoundBar wakeTouchIdleSeconds -float 70 # 0 disables the wake guard
launchctl kickstart -k "gui/$(id -u)/com.ryoji.SoundBar"
SoundBar.dmg contains the app, installer, uninstaller and read-me. The build is ad-hoc signed — if macOS calls the download "damaged", clear quarantine first:
xattr -dr com.apple.quarantine ~/Downloads/SoundBar.dmg
Updating re-triggers the Screen & System Audio Recording and Microphone prompts, because the code signature changes with every build.
SoundBar 1.2
What's new
The display is tuned out of the box. Two new controls sit between the analysis and the bars, and both are on by default:
- Frequency tilt (+3 dB/octave). Music carries most of its energy in the bass, so a raw spectrum leans heavily left and the treble end barely moves. The tilt rotates the response about 1 kHz to even it out. Measured as lit pixels in the right third of the strip versus the left: 0.27 → 0.75.
- Level boost (+12 dB). A flat cosmetic lift so quiet material fills more of the strip — mean bar height 16 → 22 px of the 30 pt strip, with peaks still short of clipping.
Both are purely visual: neither touches playback nor what is captured.
- VU floor is now a setting, defaulting to −40 dBFS. It is also the VU's only sensitivity control — the level boost deliberately skips the VU styles, whose narrower scale saturates and pins the meter at 100 %.
- All gallery images and the showcase animation recaptured at these settings.
Tune any of them without reinstalling:
defaults write com.ryoji.SoundBar frequencyTilt -float 3 # ±12 dB/octave
defaults write com.ryoji.SoundBar levelBoost -float 12 # ±24 dB, bars only
defaults write com.ryoji.SoundBar vuFloor -float -40 # lower = fuller meter
launchctl kickstart -k "gui/$(id -u)/com.ryoji.SoundBar"
Set the first two to 0 for the untuned spectrum of earlier versions.
SoundBar.dmg contains the app, installer, uninstaller and read-me. The build is ad-hoc signed — if macOS calls the download "damaged", clear quarantine first:
xattr -dr com.apple.quarantine ~/Downloads/SoundBar.dmg
Updating re-triggers the Screen & System Audio Recording and Microphone prompts, because the code signature changes with every build.
SoundBar 1.1.1
Fixed
- "Keep Touch Bar Awake" now takes effect the moment you switch it off. The 25-second wake ticker already checked the setting before signalling the strip, so an orphaned timer never actually woke the Touch Bar — but unchecking the option left it alive firing no-op ticks until the visualiser was next dismissed and re-presented. It is now torn down immediately, and restarted just as promptly if you re-check it while the strip is up.
No other changes. Palettes, patterns, gestures and the install flow are identical to v1.1.
SoundBar.dmg contains the app, installer, uninstaller and read-me. The build is ad-hoc signed — if macOS calls the download "damaged", clear quarantine first:
xattr -dr com.apple.quarantine ~/Downloads/SoundBar.dmg
Updating from an earlier version re-triggers the Screen & System Audio Recording and Microphone prompts, because the app's code signature changes with every build. See the README.
SoundBar 1.1
What's new
- Sakura and Fable Computer are now built-in colour palettes — previously personal imports, now shipped with every download. Nine ramps total: Rainbow (default), Green, Spectrum, Ice, Ember, Meter, Mono, Sakura, Fable Computer.
- Front-page gallery updated: Spectrum Mirror now shown in Fable Computer, Spectrum Blocks in Sakura.
- Bundle version 1.1.
Everything else — patterns, gestures, install flow, permissions — unchanged from v1.0.
SoundBar.dmg contains the app, installer, uninstaller, and read-me. The build is ad-hoc signed — if macOS calls the download "damaged", clear quarantine first:
xattr -dr com.apple.quarantine ~/Downloads/SoundBar.dmg
If you're updating from v1.0, macOS will re-prompt for Screen & System Audio Recording and Microphone permissions — the app's code signature changed, so previous grants don't carry over. See the README for details.
SoundBar 1.0
First public release.
SoundBar.dmg contains the app, an installer that sets up launch-at-login, an uninstaller, and a read-me.
- 11 visual patterns, 7 built-in colour ramps (default: Spectrum Bars + Rainbow), palette import
- Touch Bar gestures: tap = colour, two-finger tap = pattern, double tap = mute, long press = dismiss, slide = volume
- Input/output mixing for calls (Behaviour ▸ Input Meter)
- Requires macOS 14.4+, Apple Silicon, and a Touch Bar
The build is ad-hoc signed — if macOS calls the download "damaged", clear quarantine first:
xattr -dr com.apple.quarantine ~/Downloads/SoundBar.dmg
See the README for details.