Native macOS app that records multitrack audio from any CoreAudio USB mixer/interface, detects song boundaries in real time via gate logic, auto-mixes tracks to LUFS-normalized stereo, and exports sessions as .dawproject files for Studio One.
| Welcome | Recording | Review / Mix |
|---|---|---|
![]() |
![]() |
![]() |
- Record — Capture every channel from your USB mixer as individual WAV files. Multi-segment sessions for long gigs with breaks.
- Detect — Hysteresis-based gate automatically finds song boundaries while you record. Configurable profiles, offline re-detection, manual boundary editing.
- Review — Zoomable waveform, draggable boundary markers, per-channel mixer with faders/mute/solo/pan, real-time playback with DSP.
- Auto Mix — One-click stereo mixdown with role-based DSP (EQ, compression, limiting), LUFS-normalized gain staging, and A/B comparison.
- Export — DAWProject files for Studio One, master mix extracts (WAV/M4A), auto-mix bounces per song. Optional Google Drive upload.
- Import — Bring in multitrack WAV folders from other sources for mixing and export.
- macOS 14+ (Sonoma)
- Xcode 16+
- xcodegen (
brew install xcodegen) - A CoreAudio-compatible USB audio interface (or built-in mic for testing)
# 1. Copy the local-identity template and (optionally) fill it in.
# Leave both fields empty for a quick `sign-to-run-locally` build
# with no Google Drive integration.
cp JamScout/Local.xcconfig.example JamScout/Local.xcconfig
$EDITOR JamScout/Local.xcconfigLocal.xcconfig (git-ignored) holds two optional values:
DEVELOPMENT_TEAM— your Apple Developer Team ID. Leave empty for Sign-to-Run-Locally. With a real value, Automatic signing creates a Mac Development provisioning profile forcom.jamscout.JamScout.GID_CLIENT_ID— Google OAuth client ID for Drive upload. Leave empty to build without Drive — the upload UI hides itself when not configured. Setup steps are in the file's comment block.
# Generate Xcode project
xcodegen generate
# Build
xcodebuild -scheme JamScout -destination 'platform=macOS' build
# Run tests
xcodebuild -scheme JamScout -destination 'platform=macOS' testJamScout/
├── App/ # SwiftUI app entry point
├── Models/ # Session, device, state management
├── Views/ # Unified view, export/import sheets, sidebars
├── Components/ # Waveform, meters, faders, markers
├── Audio/ # Recording engine, playback, DSP pipeline
│ └── DSP/ # Biquad EQ, compressor, limiter, LUFS measurement
├── Drive/ # Google Drive upload (optional)
└── Export/ # DAWProject ZIP generation
Packages/
└── JamScoutCore/ # Gate state machine, profiles, audio buffers
└── Sources/ # Pure Swift, no Apple-framework dependencies
- Swift 6 with strict concurrency
- SwiftUI
- AVAudioEngine + CoreAudio HAL
- vDSP for signal processing
- Custom AUAudioUnit subclasses for real-time DSP
JamScoutCore is a Swift package containing the gate state machine,
profile management, and lock-free audio buffers. No Apple-framework
dependencies — testable in isolation via swift test.
A few of the common ones:
| Key | Action |
|---|---|
| Space | Play / Pause |
| R | Start / Stop recording |
| Left / Right | Previous / Next song |
| Up / Down | Previous / Next boundary marker |
| Cmd+X | Split song at playhead |
| Cmd+M | Merge songs at playhead |
| Cmd+Delete | Delete song at playhead |
| Cmd+scroll | Zoom waveform |
The full list lives in Help → Keyboard Shortcuts… in the app.
MIT


