TemperPlayer
A native macOS music player with Zig decoding and DSP.
TemperPlayer is a macOS player I built for listening to and inspecting a local music library. SwiftUI owns the application and workspace. Zig handles FLAC and WAV decoding, mastering analysis, and pitch processing behind a C ABI.
Overview
Problem
I wanted signal analysis to be part of listening. That meant useful meters, a compact menu-bar player, and pitch control that preserved transients and stereo placement.
Approach
SwiftUI handles the application and AVFoundation handles playback. A small C ABI connects the app to Zig code for the decoding, analysis, and pitch-processing work where I wanted direct control.
Build
What I built
I built the SwiftUI application, SQLite-backed library, queue and playlist flows, menu-bar player, waveform, spectrogram, and multiband goniometer. In Zig, I implemented FLAC and WAV decoding, mastering measurements, and an identity-phase-locked phase vocoder with transient resets and Kaiser-windowed sinc resampling.
Engineering focus
The engineering work includes the Swift and Zig C ABI, real-time analysis, bounded visual queues, sample-rate handling, track-switch lifecycle, stereo phase correlation, and native macOS packaging.
Details
Built with
SwiftUI, Zig, AVFoundation
Status
v0.1 · downloadable
Year
2026
Next
I'll finish hardening the current library and playback changes, test on more Macs and audio devices, and add formats after their playback paths are measured and reliable.