Audio Unit Extension for iPhone & iPad
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.
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.
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.
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.
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.
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 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
dSL1200 AUv3 is a standards-compliant AUv3 instrument extension
(aumu type, subtype SL12, manufacturer
MWlk). Specifically tested in:
iOS 16+
1.4+
3.x
3.5+
1.x
1.x
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.
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.
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.
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.
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.
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.
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.
aumu) — subtype SL12, manufacturer MWlk. Bundled inside the dSL1200 iPhone app.CADisableMinimumFrameDurationOnPhone in the extension's Info.plist