# MixBoard A native macOS music player and mix preparation tool built with Swift and SwiftUI. Import your music library, analyze tracks for BPM and musical key, build playlists with crossfades, and export directly to your DAW. ## Features ### 🎵 Music Library - Import audio files (MP3, WAV, FLAC, AAC, AIFF, M4A, OGG, and more) - Scan entire directories recursively - Search and filter by title, artist, album, genre, BPM, or key - Sort by any column - Rate and tag tracks ### 📊 Audio Analysis - **BPM Detection** — Energy-based onset detection with autocorrelation (powered by Accelerate framework) - **Musical Key Detection** — Chromagram analysis with Krumhansl-Kessler key profiles, Camelot wheel codes - **Waveform Generation** — High-resolution waveform display with efficient downsampling ### 🎚️ Playback - High-quality playback via AVAudioEngine - Interactive waveform with seek - 3-band EQ (Low / Mid / High) - Volume control ### 📋 Playlist & Mix Building - Create playlists for your mixes - Drag and reorder tracks - Set crossfade durations between tracks - Per-track gain adjustment - Start/end offset trimming - Add cue points and markers (Intro, Outro, Drop, Breakdown, Verse, Chorus, etc.) ### 🔄 DAW Export Export your prepared mix to any DAW with multiple format options: | 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 | All export formats include: - Track ordering and timing - Crossfade/transition information - Cue points as markers - BPM and key metadata - Option to copy audio files alongside the session ## Requirements - macOS 14 (Sonoma) or later - Xcode 15+ (for building) - Swift 5.9+ ## Building ### Option 1: Open in Xcode (Recommended) ```bash cd MixBoard open Package.swift ``` This opens the project in Xcode where you can build and run directly. ### Option 2: Command Line ```bash cd MixBoard swift build ``` > **Note:** For a proper macOS app bundle with sandbox capabilities, building through Xcode is recommended. ## Project Structure ``` MixBoard/ ├── Package.swift ├── Sources/ │ ├── MixBoardApp.swift # App entry point │ ├── Models/ │ │ ├── Track.swift # Track model (SwiftData) │ │ ├── CuePoint.swift # Cue points and markers │ │ └── Playlist.swift # Playlist and entries │ ├── Services/ │ │ ├── AudioEngine.swift # AVAudioEngine playback │ │ ├── BPMDetector.swift # BPM analysis (Accelerate) │ │ ├── KeyDetector.swift # Musical key detection │ │ ├── WaveformGenerator.swift # Waveform data generation │ │ ├── MetadataService.swift # Audio metadata reading │ │ └── LibraryManager.swift # Library import & management │ ├── Export/ │ │ ├── DAWExporter.swift # Export protocol & dispatcher │ │ ├── AuditionExporter.swift # Adobe Audition .sesx │ │ ├── DAWProjectExporter.swift # Open DAWproject format │ │ ├── EDLExporter.swift # CMX 3600 EDL │ │ ├── CueSheetExporter.swift # Standard .cue sheets │ │ └── M3UExporter.swift # M3U playlists │ ├── ViewModels/ │ │ ├── LibraryViewModel.swift │ │ ├── PlayerViewModel.swift │ │ └── PlaylistViewModel.swift │ └── Views/ │ ├── ContentView.swift # Main 3-panel layout │ ├── SidebarView.swift # Navigation sidebar │ ├── LibraryView.swift # Track library browser │ ├── PlayerView.swift # Playback controls │ ├── WaveformView.swift # Interactive waveform │ ├── PlaylistView.swift # Mix/playlist editor │ ├── TrackRow.swift # Track list row │ └── ExportSheet.swift # DAW export dialog ``` ## Workflow 1. **Import** music files or folders into the library 2. **Analyze** tracks to detect BPM and musical key 3. **Browse** the library — search, sort, and filter tracks 4. **Create** a playlist for your mix 5. **Build** the mix — arrange tracks, set crossfades, adjust gain, add cue points 6. **Export** to your DAW format of choice 7. **Open** the exported session in Adobe Audition, Bitwig, REAPER, or any supported DAW 8. **Refine** the mix in the DAW with full multitrack control ## DAW Integration Details ### Adobe Audition Export as `.sesx` (Audition Session XML). Open directly in Audition — tracks appear on the multitrack timeline with crossfades and markers in place. ### DAWproject (Bitwig, Studio One, REAPER) The open standard for DAW interchange. Export generates the `project.xml` containing track layout, clip timing, fades, and markers. Audio files are placed in a companion folder. ### Edit Decision List Standard CMX 3600 format with SMPTE timecode. Widely supported by professional DAWs including Pro Tools and DaVinci Resolve. ### Cue Sheet Classic `.cue` format with track indices, performer info, and timing. Great for reference and compatible with many audio tools. ## License MIT