Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Android USB MIDI Driver

Build Status Android Arsenal

USB MIDI Driver using Android USB Host API

  • No root privilege needed.
  • Supports the standard USB MIDI devices; like sequencers, or instruments.
  • Supports some non-standard USB MIDI (but protocol is compatible with USB MIDI) devices.
    • YAMAHA, Roland, MOTU, or other makers' devices listed on device_filter.xml can be connected.
  • Supports multiple device connections.
  • Has javax.sound.midi compatible classes.


  • Android : OS version 3.1(API Level 12) or higher, and have an USB host port.
    • The android Linux kernel must support USB MIDI devices. Some Android device recognizes only USB-HID and USB-MSD by kernel configurations.
  • USB MIDI (compatible) device

the optional thing:

  • The self powered USB hub (if want to connect multiple USB MIDI devices).
  • USB OTG cable (if the Android device has no standard USB-A port).
  • USB MIDI <--> Lagacy MIDI(MIDI 1.0) converter cable (if want to connect with legacy MIDI instruments).

Repository Overview

  • Library Project : MIDIDriver

    • The driver for connecting an USB MIDI device.
  • Sample Project : MIDIDriverSample

    • The sample implementation of the synthesizer / MIDI event logger.
    • Pre-compiled sample project is available on Google Play Market.

Library Project Usages

See the project wiki for the library usages.


  • What is the 'cable' argument of "onMidi..." or "sendMidi..." method?
    • A single USB MIDI endpoint has multiple "virtual MIDI cables". It's used for increasing the midi channels. The cable number's range is 0 to 15.
  • The application doesn't detect the device even if the USB MIDI device connected.


Apache License, Version 2.0