macOS native music player — Swift/SwiftUI

aldiss d7edf76351 Initial commit: MixBoard macOS music player 3 månader sedan
.copilot d7edf76351 Initial commit: MixBoard macOS music player 3 månader sedan
.github d7edf76351 Initial commit: MixBoard macOS music player 3 månader sedan
.orchestra d7edf76351 Initial commit: MixBoard macOS music player 3 månader sedan
.swiftpm d7edf76351 Initial commit: MixBoard macOS music player 3 månader sedan
Assets.xcassets d7edf76351 Initial commit: MixBoard macOS music player 3 månader sedan
MixBoard.xcodeproj d7edf76351 Initial commit: MixBoard macOS music player 3 månader sedan
Sources d7edf76351 Initial commit: MixBoard macOS music player 3 månader sedan
Tests d7edf76351 Initial commit: MixBoard macOS music player 3 månader sedan
.gitignore d7edf76351 Initial commit: MixBoard macOS music player 3 månader sedan
INSTRUCTIONS.md d7edf76351 Initial commit: MixBoard macOS music player 3 månader sedan
Package.swift d7edf76351 Initial commit: MixBoard macOS music player 3 månader sedan
README.md d7edf76351 Initial commit: MixBoard macOS music player 3 månader sedan
SPEC.md d7edf76351 Initial commit: MixBoard macOS music player 3 månader sedan
project.yml d7edf76351 Initial commit: MixBoard macOS music player 3 månader sedan

README.md

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)

cd MixBoard
open Package.swift

This opens the project in Xcode where you can build and run directly.

Option 2: Command Line

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