Skip to content

burnes/jamscout-desktop

Repository files navigation

JamScout

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.

Screenshots

Welcome Recording Review / Mix
Welcome Recording Review/Mix

What It Does

  • 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.

Requirements

  • macOS 14+ (Sonoma)
  • Xcode 16+
  • xcodegen (brew install xcodegen)
  • A CoreAudio-compatible USB audio interface (or built-in mic for testing)

First-time setup

# 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.xcconfig

Local.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 for com.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.

Build

# Generate Xcode project
xcodegen generate

# Build
xcodebuild -scheme JamScout -destination 'platform=macOS' build

# Run tests
xcodebuild -scheme JamScout -destination 'platform=macOS' test

Architecture

JamScout/
├── 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

Tech Stack

  • Swift 6 with strict concurrency
  • SwiftUI
  • AVAudioEngine + CoreAudio HAL
  • vDSP for signal processing
  • Custom AUAudioUnit subclasses for real-time DSP

JamScoutCore

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.

Keyboard Shortcuts

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.

License

MIT

About

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. Built with Swift 6, SwiftUI, and AVAudioEngine.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages