Back to work

Systems · Audio · v0.1 · downloadable

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.