macOS native music player — Swift/SwiftUI

aldiss 919c61dbd4 test: add DownloadProgressTests + ProgressDownloader stub hai 2 meses
.copilot d7edf76351 Initial commit: MixBoard macOS music player hai 3 meses
.github 80550cca69 feat: upload state indicators and playlist upload UX hai 3 meses
.orchestra 82770e1e94 UI revamp: browse panel, download service, queue view, cloud browser, export updates, agent configs hai 3 meses
.swiftpm d7edf76351 Initial commit: MixBoard macOS music player hai 3 meses
.vscode 82770e1e94 UI revamp: browse panel, download service, queue view, cloud browser, export updates, agent configs hai 3 meses
Assets.xcassets 82770e1e94 UI revamp: browse panel, download service, queue view, cloud browser, export updates, agent configs hai 3 meses
MixBoard.xcodeproj 919c61dbd4 test: add DownloadProgressTests + ProgressDownloader stub hai 2 meses
Sources 919c61dbd4 test: add DownloadProgressTests + ProgressDownloader stub hai 2 meses
Tests 919c61dbd4 test: add DownloadProgressTests + ProgressDownloader stub hai 2 meses
briefs 80550cca69 feat: upload state indicators and playlist upload UX hai 3 meses
.gitignore 82770e1e94 UI revamp: browse panel, download service, queue view, cloud browser, export updates, agent configs hai 3 meses
INSTRUCTIONS.md d7edf76351 Initial commit: MixBoard macOS music player hai 3 meses
Package.swift d7edf76351 Initial commit: MixBoard macOS music player hai 3 meses
README.md 86e3a0a2f2 Update README: add Chad Music setup, API key instructions, current features hai 3 meses
SPEC.md d7edf76351 Initial commit: MixBoard macOS music player hai 3 meses
design-system.md 80550cca69 feat: upload state indicators and playlist upload UX hai 3 meses
pm-log.md 82770e1e94 UI revamp: browse panel, download service, queue view, cloud browser, export updates, agent configs hai 3 meses
project.yml d7edf76351 Initial commit: MixBoard macOS music player hai 3 meses

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