MusicPlayground
Source preview 0.6.0 / macOS · Swift 6.4

Write code.
Make music.
Play it live.

A native macOS playground
for live music with Swift.

MusicPlayground running Session.swift and Trance.swift on independent A/B decks, with spectrum EQ, shared vectorscope, Swift code and inline rhythm visualizations.
Real code. Real-time controls.MusicPlayground on macOS

02 / Made to be played

Your code is
the instrument.

Build sounds from sounds.
Turn patterns into rhythms.
Keep shaping them while they play.

Explore the workflow
Session.swift / template excerpt
// Compose sounds together.
var body: some Sound {
    RhythmSection()

    // Shape the filter live.
    SynthSection(
        acidAmount: slider(0.5, in: 0...1)
    )

    BusReturn("synths")
        .gain(slider($synthLevel, in: 0...1))
}
Inline controls, right beside your code.

Compose in Swift

Layer nested sounds, rhythms and effects with SwiftMusic’s declarative API.

Perform on two decks

Mix independent sessions. Tap the tempo, sync the beat and scratch the waveform.

See every sound

Waveforms, spectrum EQ and a shared vectorscope make the mix visible.

03 / Feel the performance

Hands on the sound.
One step ahead of the mix.

01 — Scratch

Touch the wave.
Move the music.

Move two or three fingers over a deck’s waveform to scratch forward or backward. Hear it even while the deck is paused.

Lift your fingers to return to playback, or to silence if paused.

Explore trackpad Play Mode
ASCRATCH / GESTURE GUIDE2–3 FINGERS
← Advance or move up ↑Rewind → or move down ↓
Follow the waveform. The playhead stays centered.

02 — Headphone cue

Hear what’s next.
Before everyone else.

Preview either deck in your headphones before bringing it into the main mix. Set the next moment while the audience hears the current one.

Select a headphone output different from the main output, then enable the deck’s headphone button.

BCUE / SIGNAL FLOWLISTEN AHEAD
Deck BAfter effects & gain
MAIN MIXCrossfader SpeakersWhat the audience hears
HEADPHONE CUE Your next trackBefore the crossfader · Separate output
Monitor the next deck without moving the crossfader.

04 / Play Mode

Your trackpad.
Your DJ controller.

Enable Play Mode in the app’s bottom log bar. The cursor disappears, and the edges become independent performance controls.

AScratchLeft 18%
One surface.
Independent hands.
Scratch and fade
at the same time.
BScratchRight 18%
ACrossfaderBottom 20% · corners includedB
Each touch keeps its initial region until you lift your finger.

Keep your hands on the mix

Less reaching. More playing.

These shortcuts apply in Play Mode. Tap Command on its own, then release. Press Option for CUE; hold to preview, release to return.

Play Mode keyboard shortcuts
KeyAction
SpacePlay / pause both decks
Left ⌘ CommandA Play / pause Deck A
Right ⌘ CommandB Play / pause Deck B
Left ⌥ OptionA Deck A transport CUE
Right ⌥ OptionB Deck B transport CUE
Shift + ⌥ OptionReturn the corresponding deck to the track start
EscExit Play Mode and restore the cursor

CUE sets a point while paused or returns to it while playing. Switching apps exits Play Mode. Headphone monitoring uses the separate headphone button and requires an output different from the main output.

05 / Your first session

From your first line
to your first beat.

Build from source. Create a project. Press play.

macOS 15+ · Swift 6.4
Xcode command-line tools

Get started
git clone --branch 0.6.0 https://github.com/1amageek/MusicPlaygournd.git
cd MusicPlaygournd
./Scripts/build-app.sh
open .build/MusicPlaygournd.app

This preview is built locally from source. Keep your Swift compiler and SDK installed. Initial package resolution and compilation can take longer; progress appears in the sidebar.

Read the installation guide