# 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](https://gogs.chad-partners.com/chad-partners/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](https://lrclib.net) ### 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) ```bash 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`: ```bash brew install xcodegen # if not installed xcodegen generate open MixBoard.xcodeproj ``` ### Option 3: Command Line ```bash xcodebuild -scheme MixBoard -destination 'platform=macOS' build ``` ## Chad Music Setup MixBoard can connect to a [Chad Music](https://gogs.chad-partners.com/chad-partners/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 ```bash xcodebuild test -scheme MixBoard -destination 'platform=macOS' ``` ## License MIT