Code to Muscle / Instrument 001
Play · v1.1.2
No. 001 / Vinyl Instrument
For phone & USB knob

Scratch live radio like record.

A vinyl scratch instrument for your phone. Pull in college radio, your own files, or the mic, then scratch it like wax. Velocity-based platter physics, lock-free C++ DSP, optional Griffin PowerMate knob.

Latency  sub-5 ms
Engine  C++17 · Oboe 1.9
Stations  KPSU · KEXP · KAOS · XRAY
Pro  $4.99 · one-time
Live radio · scratchable Sub-5ms latency Lock-free C++ DSP Griffin PowerMate One-time Pro · $4.99 No subs · no ads
§ 02 / The instrument

What it looks like.

SwiftUI on iOS, Compose on Android, the same C++ engine running underneath.

Main deck
FIG.01 Main deck

Touch-controlled vinyl. Sub-5ms total path.

Sources
FIG.02 Sources

Streams, files, samples, or the mic.

Controls
FIG.03 Controls

Open the drawer for full controls. Close it when you don't need them.

Pro
FIG.04 Pro

One-time purchase. No subscriptions.

Settings
FIG.05 Settings

Telemetry opt-out is right there in Settings.

Performing
FIG.06 Performing

The buffer fills as you scratch.

§ 03 / Capabilities

Everything ships in v1.1.2. No "coming soon" footnotes.

A. Sources
Live Icecast radio

College and indie streams, station presets baked in. Add any HTTP/Icecast URL. Cleartext-allowed for the stations that haven't moved to TLS yet.

Local files & samples

Drop in your own audio. Eight bundled scratch samples, ready to launch. Custom sample pads on Pro.

Live mic PRO

Scratch your own voice. Mic feeds the buffer in real time with a level meter and zero perceptible delay.

Custom sample pads PRO

Long-press to capture a frozen loop into a pad. Build your own kit, scratch it back.

B. The deck
On-screen vinyl

Circular gesture control with sliding-window velocity estimation. Disc responds like wax under your finger.

Crossfader & cues

Drag for chirps, flares, transforms. Stamp a cue point and snap back to it.

Reverse echo

Scratching backward feeds the buffer back into itself. Builds and decays.

Collapsible drawer

Hide it for a minimal UI. Open it when you need the full controls.

C. Pro tools
▶ PRO
Freeze Loop

Mark in/out, lock the segment, keep scratching while the stream buffers ahead.

▶ PRO
LFO Auto-Scratch

Automated rhythmic patterns you can layer and shape.

▶ PRO
WAV Recording

Capture performances. Export, share, sample back into the buffer.

▶ PRO
FX Chain

Filter, delay, bitcrusher post-scratch. Real-time, tweakable.

▶ PRO
Platter Weight

Adjustable inertia. Light 7-inch to heavy 12-inch wax.

▶ PRO
Vinyl Noise

Crackle, hiss, and rumble at adjustable levels.

▶ PRO
Loop Capture

Save frozen loops as WAV samples. Reload them as pads.

▶ PRO
PowerMate LED

LED state machine: pulse to BPM, dim on cue, flash on freeze.

D. Hardware
Griffin PowerMate USB knob with tomato-red LED ring
Griffin PowerMate

USB HID over OTG. Spin to scratch, click to cue, hold to cut. The LED ring syncs to scratch velocity. Weighted aluminum, zero latency.

Vendor 0x077d USB HID LED ring
PowerMate LED feedback

Brightness pulses to your scratch envelope. Cue state dims the ring; freeze-loop flashes; record arms it solid red. Full state machine ships in Pro.

E. Privacy
Telemetry, optional.

Anonymous performance traces help us tune the engine. The opt-out lives in Settings, not four menus deep. No accounts and no third-party trackers.

No account, no ads.

Open the app, scratch, close it. That's the whole loop. Pro is a one-time purchase tied to your store account, not ours.

§ 04 / Next platform

Coming to iPhone & iPad.

Native SwiftUI on top of the same C++ DSP core that ships on Android. An AUv3 Audio Unit plugin is in beta, so you can host the scratch engine inside GarageBand, Logic Pro, AUM, or any AUv3 host.

Build status
  • SwiftUI shell
    Feature parity with Android v1.1.2
  • Shared C++ DSP
    Same scratch_engine.cpp, AVAudioEngine bridge
  • StoreKit 2 Pro unlock
    One-time purchase, no subscriptions
  • App Review
    In prep, submission imminent
  • AUv3 plugin
    Beta · ships shortly after v1.0
§ 05 / On the dial

Built-in college radio, plus any URL you paste.

Featured
KPSU
91.7 FM
Portland, OR
Preset
KEXP
90.3 FM
Seattle, WA
Preset
KAOS
89.3 FM
Olympia, WA
Preset
XRAY
107.1 FM
Portland, OR

Add any Icecast or Shoutcast stream URL. Unlimited presets on Pro.

§ 06 / The unlock

$4.99. Pay once. Scratch forever.

Live mic, freeze loop, WAV recording, LFO auto-scratch, FX chain, platter weight, vinyl noise, loop capture, full PowerMate LED state machine. One purchase, restored to any device on the same store account.

Subs
None
Ads
None
Trackers
Zero
Account
Optional
Lifetime unlock
$4.99 · once · forever
§ 07 / Under the hood

Built like an instrument.

// scratch_engine.cpp
ExoPlayer / AVAudioEngine
   PcmBridgeProcessor      // mono → stereo, intercept
   nativeWritePcm()        // JNI / ObjC++ bridge
   SPSC ring buffer        // 2^21 frames, lock-free
   ScratchEngine::tick()   // Oboe / AU callback @ 44.1kHz
       variable-rate playback   // linear interp
       velocity estimation      // 8-sample sliding window
       crossfader · reverse echo · LFO modulation
   device output           // sub-5ms total path
DSP core
C++17, NDK, -O2 -ffast-math
Audio I/O
Oboe 1.9.0 (Android) · AVAudioEngine (iOS)
UI (Android)
Kotlin 2.0 · Jetpack Compose
UI (iOS)
SwiftUI · iOS 17+
Stream decode
Media3 1.5.1 / AVPlayer
Billing
Play Billing · StoreKit 2
Telemetry
OpenTelemetry → SigNoz
Hardware
Griffin PowerMate (USB HID 0x077d)
§ 08 / Roadmap

Where we're at.

  1. 01
    SHIPPED
    v1.0
    Live radio scratching · Android
    Touch-to-scratch with velocity physics, college radio presets, on-screen vinyl.
  2. 02
    SHIPPED
    v1.1
    Pro features + Play Billing
    Live mic, freeze loop, WAV recording, LFO, FX, weight, vinyl noise, loop capture. One-time purchase.
  3. 03
    SHIPPED
    v1.1.2
    Telemetry + station enrichment
    Privacy-respecting telemetry with in-Settings opt-out. Station name and session-dimension enrichment.
  4. 04
    IN FLIGHT
    iOS v1.0
    iPhone & iPad launch
    SwiftUI shell with feature parity, shared C++ engine, StoreKit 2 Pro unlock. In App Review prep.
  5. 05
    IN FLIGHT
    AUv3
    Audio Unit plugin (iOS)
    Host the scratch engine inside GarageBand, Logic Pro, AUM, any AUv3 host. Beta after v1.0.
  6. 06
    PLANNED
    wearables
    Apple Watch + Wear OS
    Remote control + Digital Crown / rotating bezel as crossfader. Companion to the phone deck.