Your Android is a DJ controller for Mixxx

100% FREE NO ADS NO ACCOUNT

Plug your phone into your computer over USB-C and get 2 decks, jog wheels, EQ, filters, FX and a crossfader. Class-compliant USB MIDI with latency under 10 ms. No additional hardware. Free to use.

MobaDJ Mix tab: per-deck 3-band EQ, filter, volume faders, master column with VU meter and crossfader

The Mix tab: EQ, filters, faders, master and crossfader on a single screen.

// WHATProfessional DJ controls without the hardware.

MobaDJ uses Android's native USB MIDI peripheral mode to send class-compliant MIDI to your computer. The phone is recognized as a MIDI device, Mixxx loads the included mapping, and you gain a control surface organized around the real workflow of a live mix.

🎛️

2 full decks

Play / cue / sync / load, 8 hot cues, 9 beatloops, 12 beatjumps, jog with concentric scratch + bend zones, tempo fader with fine nudge.

🎚️

Live mix surface

3-band EQ, filter with chain selector, PFL cue, head mix and volume, master gain and crossfader. Everything on a single screen, with no swiping during the mix.

🌀

FX rack

Three effect slots per deck, with prev/next selectors and dry/wet mix. Slip mode for scratching without losing the beat.

<10 ms latency

Class-compliant, direct USB MIDI. No Wi-Fi, no Bluetooth pairing, no audio drift.

🪞

Bidirectional MIDI

Pads light up from Mixxx feedback: recorded hot-cue slots, active loop size, PFL state, FX-on, BPM and master VU. The phone reflects the Mixxx state in real time.

💾

Free, donations welcome

The app and the Mixxx mapping are distributed for free. Donations help fund maintenance and expand device compatibility.

// UIFour tabs designed around the live DJ workflow

Tab order mirrors the real flow of a live mix: Decks (prep and pads), Beatmatch (jog and tempo), Mix (live performance), FX (occasional effects). Tabs change by tap only, never by swipe, so they cannot be triggered accidentally during a scratch. Each tab is detailed below; calibration lives under Tuning.

// DECKSPrep + performance pads

MobaDJ Decks tab — both decks stacked with transport (PLAY/CUE/SYNC/LOAD), mode switcher (CUE/LOOP/JUMP), 6×2 pad grid and library scroll
  • TransportPLAY, CUE, SYNC and LOAD per deck. The PLAY pad lights up while the deck is playing, driven by direct Mixxx feedback.
  • 8 hot cuesPads light only at slots that already hold a recorded cue, preventing accidental taps on empty slots during a performance.
  • 9 beatloops, 1/8 to 32 beatsThe active loop's pad stays lit. Tapping it again releases the loop; tapping a different size switches the loop on the fly.
  • 12 beatjumps, ±1 to ±32 beatsSkip whole sections forward or back with a single tap.
  • Mode switcherCUE, LOOP and JUMP reuse the same 12-pad grid. Same hand position, three behaviors.
  • Library scrollVertical strip on the right for navigating the Mixxx browser, with haptic feedback on every item.

// BEATMATCHSync BPM in the headphones

MobaDJ Beatmatch tab — two concentric jog wheels (BEND outer ring, SCRATCH inner zone), SLIP toggles per deck, tempo faders with fine nudge pads on the outer columns
  • Concentric jogThe inner zone scratches via scratchEnable and scratchTick. The outer ring performs subtle pitch bend. The zone where the touch begins stays locked for the entire interaction, preventing accidental mode switches mid-scratch.
  • SLIP toggleWhen on, scratching keeps a phantom playhead advancing in the background. Releasing the jog resumes playback from where the track would have been. Dedicated button per deck, at the top of the tab.
  • Tempo faderVertical, with a center detent at pitch unity. Range is configurable under Tuning (±4, ±8, ±16, ±50%).
  • Fine BPM nudgeThe + and pads next to each fader increment or decrement BPM by 0.01.
  • Live BPMDisplayed prominently above each jog, pushed from the Mixxx script without polling.

// MIXThe most-touched moment, on one screen

MobaDJ Mix tab — per-deck 3-band EQ, filter knob with chain selector and toggle, vertical volume fader, master column with VU meter, master gain, headphone mix/volume, CUE A/B, and a horizontal crossfader at the bottom
  • 3-band EQHI, MID and LOW per deck, with a center detent. Double-tapping a knob restores the neutral position.
  • FilterQuickEffect knob paired with a ◀ FILT ▶ row that toggles the chain bypass and cycles through presets (LP/HP, Echo and others) without leaving the app.
  • Volume faderVertical, with detents at 0, 50 and 100%.
  • Master columnVU meter, master gain, head mix (cue/master balance), head volume and the CUE A and CUE B toggles (PFL).
  • CrossfaderHorizontal at the bottom. The color interpolates between the Deck A and Deck B accents as it moves.
  • PFL feedbackCUE pads light directly from Mixxx's pfl output, without relying on a local toggle.

// FX3-slot effects rack, mirrored from Mixxx

MobaDJ FX tab — three effect slots per deck with prev/next arrows, meta knob per slot, master mix knob and FX-ON pad on the right
  • 3-slot rackMirrors Mixxx's [EffectRack1_EffectUnitN] one-to-one.
  • Meta knob per slotDrag to adjust. A single tap toggles the slot's enable; a double tap restores it to 0.5.
  • Effect cyclerThe ◀ ▶ arrows above each slot walk through every effect installed in Mixxx.
  • MIX knobControls the dry/wet mix for the whole unit.
  • FX ON padRoutes the deck's audio through the FX unit, or bypasses it.
  • Disabled state mirroredA slot's knob dims when its enable is off, indicating at a glance which effects are active.

// TUNINGTune scratch and pitch sensitivity

Tap the gear icon at the top right of any tab to open the Settings sheet. Calibrate jog feel and tempo throw without leaving the app or editing the script. Settings persist across sessions.

MobaDJ Settings sheet — SCRATCH sensitivity, BEND sensitivity, SCRATCH zone size sliders and TEMPO range buttons
  • SCRATCH sensitivityPitch variation per finger rotation in the inner zone. Higher values produce more aggressive scratches.
  • BEND sensitivityOuter ring response. Lower values produce subtler nudges for beatmatching.
  • SCRATCH zone sizeFraction of the jog allocated to scratch (40 to 80%); the remainder behaves as bend.
  • TEMPO range±4, ±8, ±16 or ±50%, applied to Mixxx's rate_range.

// COMPATIBILITYCompatible Android devices

MobaDJ requires Android 9 or higher, with USB host support and USB MIDI peripheral mode (Settings → Developer options → Select USB Configuration → MIDI). Most modern Samsung Galaxy and Google Pixel devices are supported; entry-level phones with limited USB OTG may not work.

✓ Samsung Galaxy S23 FE: fully tested in daily use
? Other Samsung Galaxy and Google Pixel devices: likely compatible

If you tested MobaDJ on a different device, please submit a quick report with the model and Android version to help grow this list.

// INSTALLInstall MobaDJ in three steps

Initial setup takes around five minutes. After that, it is plug-and-play.

1

Enable USB MIDI on your phone

Connect the phone to your computer over USB-C, using a data cable (charge-only cables do not work). Open the notification bar, tap "Android System · Charging via USB", and select MIDI.

  • If the MIDI option does not appear, enable Developer Options (Settings → About phone → tap "Build number" seven times) and then go to Developer options → "Select USB Configuration" → MIDI.
  • On some Samsung devices, Auto Blocker may block USB commands. Disable it under Settings → Security and privacy.
2

Install the MobaDJ APK

Download the APK using the button at the top of the page, open it in your file manager, and authorize "install from unknown sources" when prompted (an Android requirement for manually installed apps).

  • Android may display a Play Protect warning; tap "Install anyway". The app makes no network calls, with the exception of an optional manual update check triggered from the About screen.
  • The APK is approximately 3 MB. After installation, the app opens in landscape mode.
3

Install the Mixxx mapping

Download MobaDJ.midi.xml and MobaDJ.script.js from the Drive folder and copy both files to Mixxx's controllers directory:

  • macOS (.dmg): ~/Library/Application Support/Mixxx/controllers/
  • macOS (brew cask): ~/Library/Containers/org.mixxx.mixxx/Data/Library/Application Support/Mixxx/controllers/
  • Windows: %APPDATA%\Mixxx\controllers\
  • Linux: ~/.mixxx/controllers/

In Mixxx, open Preferences → Controllers, select SAMSUNG_Android, open "Load Mapping", choose MobaDJ, tick Enabled and confirm with OK.

// MAPPINGThe hard part is already done

A Mixxx controller mapping is not drag-and-drop: it combines XML bindings with custom JavaScript for everything Mixxx cannot express declaratively. The MobaDJ mapping is hand-tuned, validated in real use and ready to load. Simply copy two files into the Mixxx controllers folder.

132pre-mapped MIDI bindings
31bidirectional feedback outputs
0 hof manual configuration

Building a mapping of this caliber from scratch requires hours of reading through the Mixxx engine documentation before the jog reaches a usable feel. The MobaDJ mapping delivers that work ready to use. If the project saved you time, consider supporting it with a donation.

// FEEDBACKFound a bug or tested another device?

A single form covers everything: bug reports, feature suggestions and device-compatibility entries (model, Android version, outcome). It requires no login or account, and sends no automated messages in return.

📝 Open the form Send email →

// FAQMobaDJ frequently asked questions

Why isn't the app on the Play Store?

Direct distribution keeps the app fully free, without a paywall, and avoids the mandatory closed-test step required by the Play Store for new personal accounts (12 testers for 14 days). A free listing may be added later, purely for discoverability. The official source will remain mobadj.com.

Does the app send my data anywhere?

No. The app sends MIDI bytes locally over USB to your computer; no data leaves the device. The only network call is an optional, manual check for new releases, triggered from the About screen inside the app itself. Full details in PRIVACY.

Does MobaDJ work on iPhone?

No. iOS does not expose USB MIDI peripheral mode the way Android does; an iOS app would need to act as a MIDI host, which does not address the scenario where the computer is the host. MobaDJ is Android only because of this platform constraint.

Why not Bluetooth MIDI?

Latency. BLE-MIDI typically operates between 30 and 60 ms, with jitter, which is unacceptable for scratching and beatmatching. USB-C is class-compliant, keeps latency under 10 ms, requires no pairing and does not consume battery unpredictably during a set.

What about saved loops with custom in/out points?

Mixxx already covers this case natively. In CUE mode, set a hot cue while a loop is active; Mixxx automatically stores the loop's in/out positions on that cue. Triggering the cue later jumps to the position and reactivates the loop with the same bounds, without requiring any additional app feature.

Can the MIDI mapping be customized?

For day-to-day adjustments (jog feel, tempo range), use the Settings sheet inside the app, described under Tuning. For deeper changes (remapping a button, changing which Mixxx control a knob targets, or rewriting the jog math), edit the MobaDJ.midi.xml and MobaDJ.script.js files available in the Drive folder. Mixxx reloads the script when you toggle Disable and Enable on the controller in Preferences.

How do I report a bug or device compatibility?

Use the feedback form, which covers bugs, feature requests and compatibility reports. Alternatively, send an email to digital@mobadj.com.

Ready to mix?

Free APK and mapping. Donations sustain maintenance and continued updates.