Releases: alexex1993/SimpleSpectr
Release list
v2.5.8
New
- 2D bars video style. Segmented (LED) bars grow out of a glowing baseline with a mirrored, fading reflection underneath, and carry peak caps that hang and then slide back down. Bars are spread across the displayed frequency axis so they line up with the plot; a purely linear axis falls back to a Mel spread, so the musical range isn't crammed into the first couple of bars.
- Bar controls: bar count (16–128), peak height (0.4× – 2×, the same control the flyover has — it stretches the bars without resizing the LED cells), glow, attack/release smoothing, plus toggles for the LED segmentation and the mirror reflection.
- Custom colors. Colors follow the active colormap by default. A Custom colors toggle opens pickers for the background and for the bar gradient (color at the baseline, color at full height). The pickers open on exactly the palette colors they replace, so switching over never jumps the look; the baseline glow is derived from the bar color, and the picked background also drives the lift and the soft blobs behind the bars.
- The star field and pulse-with-the-music backdrop toggles now work in both styles (the neon floor grid stays 3D-only).
Fixed
- 2D bars looked translucent: they were composited additively, so anything brighter than pure black (the vignette, the backdrop blobs, a custom background color) bled into them and tinted them. Bars and peak caps are now painted over the backdrop; the bloom moved behind them, and only the reflection and the baseline glow stay see-through — as intended.
Under the hood
- Both styles share one export pipeline (AVAssetWriter setup, audio mux, back-pressure, cancellation) and differ only in the per-frame painter. The 2D mode uploads nothing up front: a CPU envelope produces one small per-frame buffer of levels and peaks, and a full-screen Metal fragment shader draws the rest. Shaders are still compiled from source at runtime — no .metal file, no build-system changes.
v2.5.1
What's new in 2.5.1
This release adds two major features on top of 2.3.1: a share-ready 3D flyover video export for social media, and multi-channel analysis that lets you inspect both channels of a stereo file at once.
🎬 3D flyover video export
Turn your spectrogram into a moving 3D landscape and render it to an .mp4 synced with the original audio — a share-ready clip for Reels, TikTok, Shorts, and YouTube. A new Export Video… toolbar button opens a configuration sheet:
- Aspect ratios framed for where you'll post — 16:9 landscape (YouTube), 9:16 vertical (Reels / TikTok / Shorts), or 1:1 square (feed).
- Resolutions from 720p up to 4K (H.264 up to 1080p, HEVC at 1440p / 4K), at 30 or 60 fps.
- Camera controls: peak height, camera tilt, and a gentle camera drift — three sliders for just the right amount of drama.
- Backdrop layers: a star field, a neon floor grid, and a pulse-with-the-music mode. The sky gradient is derived from your active colormap, so the backdrop always matches the spectrogram.
The cached dB grid becomes a height-field (X = frequency, Z = time, Y = magnitude): upcoming audio rises out of the distance, flows past a glowing "now" line, and slides under the camera in time with the music. Distance fog dissolves the far edge into the background. Export runs off the main thread with a live progress bar and a Cancel button.
🔈 Multi-channel analysis
The channel picker gains two new dual modes that analyze L and R side by side in a single pass:
- Stereo (L/R stacked) — renders the two spectrograms one above the other (left on top, right below), sharing one time axis, with an L/R badge on each pane and a separator line between them.
- Correlation (L↔R) — renders a single plot colored by the per-bin inter-channel correlation
cos Δφ = Re(L·conj(R)) / (|L|·|R|): red at −1 (anti-phase, what cancels in a mono fold-down), neutral grey at 0 (uncorrelated), blue at +1 (in phase, mono-safe). Colors are weighted by each bin's energy, so a silent bin's meaningless phase stays invisible. A dedicated diverging colormap (interpolated in Oklab, like the rest) drives the view.
The hover readout and the measure region now report which pane (channel) you're pointing at, and in correlation mode the readout shows the correlation value. A legend explains the color scale. Mono files collapse every mode to the single channel — correlation then reads a constant +1.
🌍 Localizations
Every new string — the two channel modes, pane labels, the correlation legend, and all video-export strings — has been translated across all 14 languages: Arabic, Bengali, German, Spanish, French, Hindi, Italian, Japanese, Korean, Portuguese (Brazil), Turkish, Chinese (Simplified), Russian, and English.
Full changelog: https://github.com/alexex1993/SimpleSpectr/blob/main/README.md#changelog
v2.3.1
What's new in 2.3.1
- Channel mode — analyze a stereo file as Mix (mono down-mix), Left, Right, or the Mid / Side (M/S) sum and difference. The M/S derivations are computed with
vDSP; mono files collapse every mode to the single channel. Changing the channel re-decodes the file. A quick picker also lives in the toolbar next to a magnitude picker. - Frequency scales — the frequency axis gained three perceptual mappings beyond the existing Linear / Logarithmic: Mel, Bark, and ERB. Each is a monotonic warp/unwarp pair, and the fraction↔frequency mapping normalizes by the warped end-points so image rows and axis labels always agree. The renderer resamples rows onto fractional bins for every non-linear scale.
- Magnitude scale — a new display-only toggle maps the spectrogram in Log (dB) (default) or Linear amplitude.
- Color window & reference level — the colormap now has an adjustable min/max dB window plus a reference-level gain that brightens quiet material without changing the window's shape. All three are display-only: the renderer re-renders from the cached dB grid with no re-decode. A Reset levels button restores the factory −90 / 0 / 0 dBFS.
- Smoothing — optional time- and frequency-axis smoothing averages the log-magnitude STFT grid over neighbouring columns and bins to tame speckle. Re-renders instantly; amplitude statistics and the measurement panel stay exact.
- Follow playhead — during playback the (zoomed) plot auto-scrolls to keep the playhead visible once it reaches the right margin, and a backward seek scrolls back too. It only follows while playing, so a paused file scrolls freely. Toggle from the toolbar or Settings; on by default.
- Settings inspector — Settings moved out of a separate window into a trailing inspector panel in the main window, toggled from the toolbar or with ⌥⌘I (View → Toggle Inspector). Channel mode and magnitude scale also have a quick picker in the toolbar.
- Richer file info — the file info popover now reports container, lossless/lossy compression, PCM sample format (e.g. Float · 32-bit · LE), Nyquist frequency, frames per packet, and total frame count, alongside the existing codec / sample rate / channels / bit depth / bitrate / duration / size.
- Playhead on its own clock — the ~60 fps playhead ticks moved to a separate
PlayheadClockobservable object so they no longer rebuild the toolbar every frame. Minimizing to the Dock now pauses (not stops) playback, so the prepared player survives a restore. - Localizations refreshed — every new string (channel mode, frequency scales, magnitude, color window, smoothing, follow playhead, file info fields) was translated across all 14 languages (Arabic, Bengali, German, Spanish, French, Hindi, Italian, Japanese, Korean, Portuguese (Brazil), Turkish, Chinese (Simplified), Russian, English).
Install
Open SimpleSpectr-2.3.1-macos.dmg, then drag SimpleSpectr.app into
/Applications (or onto the Applications folder shown beside it). The app is unsigned, so on first launch right-click → Open,
or run:
xattr -dr com.apple.quarantine /Applications/SimpleSpectr.appRequires macOS (built as an arm64 app on Xcode 17 / macOS 26.5 SDK).
v2.0.3
What's new in 2.0.3
- Proper drag-to-Applications installer — the disk image now ships with an
Applicationsfolder shortcut placed right next to the app icon, so you can install SimpleSpectr the standard macOS way: mount the DMG and dragSimpleSpectr.apponto theApplicationsfolder. Previous releases showed only the app icon with no drop target. - No application code changes in this release; the app itself is functionally identical to 2.0.1. The 2.0.2 number was skipped.
Install
Open SimpleSpectr-2.0.3-macos.dmg, then drag SimpleSpectr.app into
/Applications (or onto the Applications folder shown beside it). The app is unsigned, so on first launch right-click → Open,
or run:
xattr -dr com.apple.quarantine /Applications/SimpleSpectr.appv2.0.1
What's new in 2.0.1
This is a major release: SimpleSpectr can now record from the microphone and display its spectrogram live, alongside the existing file-based analysis. The numeric export pipeline is also brand new.
- Live microphone recording — open the microphone source to capture audio and watch the spectrogram grow in real time. The preview uses an incremental streaming STFT with a peak-hold downsampled grid, so per-frame render cost stays flat no matter how long the take runs. Stop recording, and the captured file reopens in the full analyzer with axes, hover readout, and playback.
- New export formats — CSV / JSON / PNG / Markers — the old one-shot "Save PNG" panel is replaced by a unified export sheet. Export the dB grid as a frequency × time CSV matrix, as JSON with full analysis metadata, as a rendered PNG (with or without axes), or dump session markers to CSV. Range, units, decimation, and number format are all tunable.
- Refactored colormap system — the palette code has been restructured for cleaner rendering and easier extension.
- Updated localizations across all 14 supported languages with new recording and export strings.
Install
Open SimpleSpectr-2.0.1-macos.dmg and drag SimpleSpectr to your Applications folder. The build is unsigned, so on first launch right-click → Open, or run:
xattr -dr com.apple.quarantine /Applications/SimpleSpectr.appNote: this version requests microphone access for the new live-recording feature. macOS will prompt on first use; the permission can be managed later in System Settings → Privacy & Security → Microphone.
v1.9
What's new in 1.9
- File info panel — a toolbar button shows the source file's codec, sample rate, channels, bit depth, bitrate, duration, and size.
- Markers / annotations — drop labelled markers on the time axis (press M or use the Markers popover), then rename or delete them.
- Horizontal time zoom — stretch the spectrogram along the time axis with + / − (or the zoom controls); the frequency axis stays pinned on the left while the plot scrolls.
- Keyboard shortcuts — Space play/pause, ← / → seek ±5 s, + / − zoom, M add marker.
- Recent files — File → Open Recent reopens recently analyzed files across launches.
- License — the project is now released under the PolyForm Noncommercial License 1.0.0.
Install
Download SimpleSpectr-1.9-macos.zip, unzip, and move SimpleSpectr.app to /Applications. The app is unsigned, so on first launch right-click → Open, or run:
```sh
xattr -dr com.apple.quarantine /Applications/SimpleSpectr.app
```
v1.7
What's new in 1.7
🎨 Colormap picker
- Choose the spectrogram palette in Settings (⌘,): Inferno, Viridis, Magma, Plasma, Turbo, Cividis, Grayscale
- Live gradient previews with a selection ring and checkmark on the active palette
- The choice is saved to settings and persists across launches; the spectrogram re-renders instantly when you switch
🌍 More languages
- Added 12 new localizations: Arabic, Bengali, German, Spanish, French, Hindi, Italian, Japanese, Korean, Portuguese (Brazil), Turkish, Chinese (Simplified)
- Each is selectable in the Settings language picker and auto-detected from the system language
Installation
- Download
SimpleSpectr-v1.7-macos.zipand unzip it. - The app is not signed with a Developer ID, so Gatekeeper may warn you on first launch. Right-click the app → Open, or clear the quarantine flag:
xattr -dr com.apple.quarantine /Applications/SimpleSpectr.app
v1.5
What's new in 1.5
🔊 Audio playback, synced with the spectrogram
- A player appeared at the bottom of the window that plays the same file shown in the spectrogram
- Synced cursor: a vertical playhead line moves across the spectrogram in time with the sound — you always see which moment is playing right now
- Click and drag on the spectrogram to seek through the file (the cursor doubles as navigation)
🎛 Controls
- Play/Pause button to start and pause playback
- Seek slider showing the current and total time (m:ss)
- Mute toggle: with or without sound — in muted mode the app works as before, showing only the spectrogram
Playback and the spectrogram are fully synchronized — everything you see on the plot corresponds to the signal being played.
Installation
- Download
SimpleSpectr-v1.5-macos.zipand unzip it. - The app is not signed with a Developer ID, so Gatekeeper may warn you on first launch. Right-click the app → Open, or clear the quarantine flag:
xattr -dr com.apple.quarantine /Applications/SimpleSpectr.app