macOS native music player — Swift/SwiftUI

aldiss 1171db3411 feat: make Soulseek source rows draggable (chunk 6) 2 months ago
.copilot d7edf76351 Initial commit: MixBoard macOS music player 3 months ago
.github 80550cca69 feat: upload state indicators and playlist upload UX 3 months ago
.orchestra 82770e1e94 UI revamp: browse panel, download service, queue view, cloud browser, export updates, agent configs 3 months ago
.swiftpm d7edf76351 Initial commit: MixBoard macOS music player 3 months ago
.vscode 82770e1e94 UI revamp: browse panel, download service, queue view, cloud browser, export updates, agent configs 3 months ago
Assets.xcassets 82770e1e94 UI revamp: browse panel, download service, queue view, cloud browser, export updates, agent configs 3 months ago
MixBoard.xcodeproj dc28168d4c feat: add Downloads tab to sidebar for Soulseek transfers (chunk 5) 2 months ago
Sources 1171db3411 feat: make Soulseek source rows draggable (chunk 6) 2 months ago
Tests 3f029f4e37 feat: migrate cloud browse from right panel to center content area 2 months ago
UITests 3f029f4e37 feat: migrate cloud browse from right panel to center content area 2 months ago
XCUITest 3f029f4e37 feat: migrate cloud browse from right panel to center content area 2 months ago
briefs 80550cca69 feat: upload state indicators and playlist upload UX 3 months ago
.gitignore 82770e1e94 UI revamp: browse panel, download service, queue view, cloud browser, export updates, agent configs 3 months ago
INSTRUCTIONS.md d7edf76351 Initial commit: MixBoard macOS music player 3 months ago
Package.swift d7edf76351 Initial commit: MixBoard macOS music player 3 months ago
README.md 86e3a0a2f2 Update README: add Chad Music setup, API key instructions, current features 3 months ago
SPEC.md d7edf76351 Initial commit: MixBoard macOS music player 3 months ago
design-system.md 80550cca69 feat: upload state indicators and playlist upload UX 3 months ago
pm-log.md 82770e1e94 UI revamp: browse panel, download service, queue view, cloud browser, export updates, agent configs 3 months ago
project.yml d7edf76351 Initial commit: MixBoard macOS music player 3 months ago

README.md

MixBoard

A native macOS music player built with Swift 5.9 and SwiftUI, targeting macOS 14+ (Sonoma). Play local files, stream from a Chad Music cloud server, analyze BPM and key, build playlists, and export to your DAW.

Features

Music Library

  • Import audio files (MP3, WAV, FLAC, AAC, AIFF, M4A, OGG Vorbis, and more)
  • Scan directories recursively
  • Search and filter by title, artist, album, genre, BPM, or key
  • Sort by any column
  • Playlist folders for organization

Cloud Streaming (Chad Music)

  • Browse your cloud library by artist, album, genre, year, publisher, country
  • Stream tracks directly — no download required
  • Album artwork from the server
  • Drag albums or tracks into local playlists
  • Lyrics fetching via LRCLIB

Audio Analysis

  • BPM Detection — Energy-based onset detection with autocorrelation (Accelerate framework)
  • Musical Key Detection — Chromagram analysis with Krumhansl-Kessler key profiles, Camelot wheel codes
  • Waveform Visualization — High-resolution waveform display with efficient downsampling

Playback

  • AVAudioEngine for local files, AVPlayer for cloud streaming
  • Interactive waveform with seek
  • 3-band EQ (Low / Mid / High)
  • Volume control, media key support
  • 14 retro skins

Playlist & Mix Building

  • Create playlists and organize in folders
  • Drag and reorder tracks
  • Crossfade durations between tracks
  • Per-track gain adjustment, start/end trimming
  • Cue points and markers (Intro, Outro, Drop, Breakdown, Verse, Chorus, etc.)

DAW Export

Format Extension Compatible With
Adobe Audition Session .sesx Adobe Audition
DAWproject .dawproject Bitwig Studio, Studio One, REAPER
Edit Decision List .edl Pro Tools, Audition, DaVinci Resolve
Cue Sheet .cue Audacity, foobar2000, CD burners
M3U Playlist .m3u Any media player

Requirements

  • macOS 14 (Sonoma) or later
  • Xcode 15+ (for building)
  • Swift 5.9+

Building

Option 1: Xcode (Recommended)

open MixBoard.xcodeproj

Select the MixBoard scheme and press ⌘R.

Option 2: xcodegen + Xcode

If you prefer to regenerate the Xcode project from project.yml:

brew install xcodegen   # if not installed
xcodegen generate
open MixBoard.xcodeproj

Option 3: Command Line

xcodebuild -scheme MixBoard -destination 'platform=macOS' build

Chad Music Setup

MixBoard can connect to a Chad Music server to stream your cloud music library.

1. Get your API key

Chad Music uses Telegram-based authentication. To obtain an API key:

  1. Open the Chad Music web UI (e.g., https://music.your-server.com)
  2. Log in via the Telegram login widget
  3. Once logged in, your session token is your API key — copy it from the browser's developer tools (Application → Cookies or Network tab → Authorization header)

Note: Ask the server admin if they have a simpler way to issue API keys, as the method may vary by deployment.

2. Configure in MixBoard

  1. Open MixBoard → Settings (⌘,)
  2. Go to the Chad Music tab
  3. Enter your Server URL (e.g., https://music.tailnet.ts.net)
  4. Enter your API key
  5. Click Test Connection to verify

The API key is stored locally via UserDefaults. The connection uses Bearer token authentication over HTTPS.

API Endpoints Used

Endpoint Purpose
GET /api/stats Library statistics, connection test
GET /api/cat/:category Browse by artist, album, genre, year, etc.
GET /api/cat/album Full album listing with metadata
GET /api/album/:id/tracks Track list with stream URLs

Project Structure

MixBoard/
├── Package.swift              # SPM package definition
├── project.yml                # xcodegen project config
├── Sources/
│   ├── MixBoardApp.swift      # App entry point
│   ├── Models/                # SwiftData models
│   ├── Services/              # Audio engine, BPM/key detection,
│   │                          # Chad Music API, streaming, lyrics
│   ├── ViewModels/            # Player and playlist view models
│   ├── Views/                 # SwiftUI views
│   ├── Export/                # DAW export formats
│   └── OGG/                   # OGG Vorbis decoder (C bridge)
└── Tests/                     # Unit, integration, E2E tests

Running Tests

xcodebuild test -scheme MixBoard -destination 'platform=macOS'

License

MIT