dSL1200 AUv3 — turntable plugin loaded in GarageBand iOS Audio Unit Extension for iPhone & iPad

dSL1200 AUv3

The full dSL1200 deck — direct-drive motor, real scratch physics, quartz-locked strobe — packaged as an Audio Unit Extension that loads in GarageBand iOS, AUM, Cubasis, and any AUv3-compatible host on iPhone or iPad.

The same working deck, inside your iOS DAW.

dSL1200 AUv3 brings the full real-time turntable simulation from the dSL1200 standalone iPhone app to any AUv3-capable iOS host as a standard Audio Unit instrument extension. The same direct-drive motor model, the same slipmat physics, the same touch-tracking scratch controller, the same 120 Hz Metal renderer — running inside your session alongside everything else.

Drag an audio file onto the deck and it loads. Tap LOAD and pick a song from your Music library through the in-pane track picker. Touch the vinyl to scratch and the audio rate follows your finger through every back-cue and rub. The strobe dots freeze at 33⅓ and 45 RPM and drift the moment the pitch fader leaves center — exactly like the deck the plugin is modeled after.

Because it's a plugin, the deck's stereo output routes straight into the host's mixer — record it, run it through DAW effects, sidechain off it, send it to a bus, or layer it under a beat. It's a working turntable that happens to live inside your session.

What the plugin pane looks like.

Three views from inside GarageBand on iPhone — the deck, the in-pane track picker, and the About screen. All UI rendered natively at 120 Hz on ProMotion devices.

dSL1200 AUv3 deck inside GarageBand iOS — full DJ-front view with HUD pill
Deck — DJ-front view, RPM / LOOP / LOAD HUD
In-pane track picker showing Music library with search
Track picker — Music library + Files…
About screen with rotating SceneKit cube on the left and credits on the right
About — animated 3D logo

Built for producers and DJs who work in iOS DAWs.

Every interaction the standalone iPhone app supports works in the plugin — touch scratching, pitch fader, loop play — with the same sub-buffer audio precision and the same physics underneath.

Format

Standard AUv3 instrument extension

Bundled inside the dSL1200 iPhone app on the App Store. Install the app and the AUv3 extension auto-registers with iOS — discoverable from any AUv3-compatible host's instrument list.

Track Picker

In-pane track browser — no clipped modals

Custom UITableView picker built into the plugin pane, listing your Apple Music library with search by title / artist / album. Bypasses iOS's system pickers, which get clipped to the AUv3 host's tiny pane height and become unnavigable. A "Files…" fallback button drops to the system file browser for non-library tracks.

Drag & Drop

Drop any audio file onto the deck

Drag a WAV, AIFF, MP3, M4A, or CAF directly onto the plugin window from another app via iOS's system drag-and-drop. The track loads into the deck's streaming engine and is ready to scratch immediately.

Scratch

Touch-driven scratch with full PD physics

The same touch-to-audio scratch controller that powers the standalone iPhone app, working inside the host pane. Touch the vinyl and drag — the audio rate follows your finger through every back-cue and rub, with the same sub-6 ms response time and the same inertia release.

MIDI

Scratch & pitch from any MIDI source

Plays from any standard MIDI input the host routes in. Pitch-bend wheel drives the deck's scratch controller as a position-based wheel — centre is neutral, deflection scratches the vinyl. Engaging the wheel holds the on-screen vinyl in place (the motor keeps spinning underneath, exactly like a finger on the LP); releasing back to centre lets the slipmat re-couple from the wheel's last velocity. Mod wheel (CC1) drives the ±8 % pitch fader. Both smoothed across the audio buffer so they sound identical to a touch drag, and both host-automatable from track lanes.

Audio

Studio-grade audio path

Adaptive high-resolution rate-dependent sinc resampling keeps fast scratches free of aliasing artifacts. Output is rendered at the host's session sample rate and buffer size — 44.1 kHz / 48 kHz / 96 kHz all supported transparently.

Pitch

Accurate +8 % / −8 % pitch shift

Long-throw pitch fader with center-detent snap. Drag with your finger on the on-screen fader, or drive it from a MIDI controller's mod wheel. Strobe drifts in real time. Pitch can also be automated from the host's track lane for hands-free tempo changes.

Strobe

Quartz-locked rim strobe

The multi-dot rim ring locks at exactly 33⅓ and 45 RPM through honest motor-rate-driven strobe physics. Pitch off center and the dots drift; lock to nominal and they freeze. Identical to the standalone iPhone build.

Loop

Seamless loop play for chopping breaks

Tap LOOP and the track wraps with zero-sample-gap continuity — perfect for cutting up b-boy breaks and drum loops in a session. Loop mode hands off cleanly to the scratch controller, so you can scratch over a looping break without the loop point ever audibly clicking.

Display

120 Hz Metal renderer

Native 120 Hz on ProMotion-equipped iPhones and iPads, 60 Hz everywhere else. Same Metal engine as the standalone app — PBR lighting, real-time reflections, vinyl groove geometry, and live touch-density scaling. ProMotion opt-in is enabled in the extension's Info.plist so the host doesn't silently cap you at 60 Hz.

Layout

Pure UIKit deck — host-pane safe

The renderer's MetalView is a UIKit MTKView inside the AU's view controller, not a SwiftUI wrapper. Avoids the SwiftUI ↔ UIKit boundary glitches that produce off-center / clipped rendering inside iOS plugin hosts; deck always centers and fills the available pane.

Routing

Full DAW integration

Stereo output routes straight into the host's mixer — record the deck to a track, send it to a bus, run it through any AUv3 effect, sidechain off it. Pitch, loop state, and load events save with the host project file via standard AU state persistence.

CPU

Lightweight on the audio thread

The audio render path is hand-tuned C with no allocations, no locks, and no Swift on the audio thread. Typical CPU footprint is well under a percent on Apple Silicon iPhones — small enough to run alongside a full session of plugins without dropouts.

Tested in the hosts iOS producers actually use.

dSL1200 AUv3 is a standards-compliant AUv3 instrument extension (aumu type, subtype SL12, manufacturer MWlk). Specifically tested in:

GarageBand

iOS 16+

AUM

1.4+

Cubasis

3.x

BeatMaker 3

3.5+

Drambo

1.x

Logic Pro for iPad

1.x

Engineered for the details that matter.

The differences between a DJ plugin and a working deck-in-a-DAW live in the parts most people don't notice — until they're missing.

Touch input at display rate, not host buffer rate

The deck's render and input loop runs at the display refresh rate (120 Hz on ProMotion devices), independent of the audio buffer size. So a host running 1024-sample buffers at 48 kHz still gets the same scratch precision as one running 64-sample buffers — your finger motion isn't quantized to the audio block.

Slipmat physics, not state-machine fakery

Two independent rotating bodies — the motor-driven platter and the vinyl resting on the slipmat — coupled through a friction model. Grab the vinyl, the platter keeps turning underneath. Let go, the vinyl re-couples to the platter rate over a tuned ramp. The audio rate follows the vinyl, not the motor.

Streaming + ring buffer for long mixes

Tracks under fifteen minutes load fully in memory; longer tracks stream into a ring buffer with seek + back-cue support. You can scratch a 90-minute live recording the same way you scratch a 7" single — without bloating the host's memory footprint.

Anti-aliasing tuned for scratching

The high-resolution resampler automatically widens its anti-alias filter as your scratch speed rises, so back-cues and fast crabs stay clean instead of folding into harsh aliasing artifacts.

Per-buffer rate ramping

The scratch controller recomputes the playback rate every 16 ms; dSL1200 then smoothly interpolates that rate across each audio buffer instead of stair-stepping. The difference is the difference between a working deck and a glitchy emulator.

Multi-touch claimed for host-gesture safety

Some iOS hosts (notably GarageBand iPad) interpret 2-finger pans on a plugin pane as a host-level scroll gesture and yank the pane sideways mid-scratch. The deck explicitly claims multi-touch on its render view so the second finger never bubbles up to the host's scroll wrapper, and the pane stays put while you play.

Specifications

Format
Audio Unit Extension (AUv3), instrument type (aumu) — subtype SL12, manufacturer MWlk. Bundled inside the dSL1200 iPhone app.
Platform
iOS 16.0 and later (iPhone & iPad)
Architecture
Apple Silicon (arm64) — same binary as the host app
Hosts
GarageBand iOS, AUM, Cubasis, BeatMaker 3, Drambo, Logic Pro for iPad, and any other AUv3-compatible iOS host
Audio engine
Adaptive rate-dependent sinc resampling, ring-buffered streaming for long tracks; renders at session sample rate (44.1 / 48 / 96 kHz all supported)
Track loading
In-pane track picker (Apple Music library + search), Files… fallback (UIDocumentPickerViewController), drag-and-drop from any iOS app via system drag service. Reads WAV, AIFF, MP3, M4A, CAF, and any format supported by AVAudioFile
Scratch controller
Touch- and MIDI-driven, < 6 ms response, inertia release with realistic slipmat re-coupling
Pitch range
Accurate +8 % / −8 %, center-detent snap, real-time strobe-drift response, host-automatable
MIDI input
Pitch-bend wheel → position-based scratch wheel (engaging holds the vinyl visually + couples the slipmat on release, identical to the Mac AU2 build); Mod wheel (CC1) → ±8 % pitch fader, polarity flipped so a controller's "forward" gesture (low CC values) speeds the deck up. Both smoothed per-buffer; both host-automatable. Mod-wheel handler isolation-filters CC1=0 events that arrive more than 250 ms after the last non-zero CC1 — recognises GarageBand iOS's transport-Start broadcast as a host event and ignores it, so hitting Play doesn't pin the pitch fader.
Loop
Seamless zero-sample-gap loop play, scratch-compatible across the loop boundary
Renderer
Metal, real-time PBR; native 120 Hz on ProMotion (iPhone 13 Pro+ / iPad Pro), 60 Hz on standard displays. ProMotion enabled via CADisableMinimumFrameDurationOnPhone in the extension's Info.plist
Code signing
Signed with Apple Developer ID, distributed through the App Store as part of the dSL1200 host app