How to play MIDI files on Android
Android has no guaranteed built-in player for .mid files, so you need an app that reads the file and turns its note events into sound. Install a MIDI player app with a built-in synthesizer, or route the file to a connected MIDI keyboard over USB or Bluetooth and let the keyboard produce the sound.
Why tapping a .mid file usually does nothing
A MIDI file contains no audio at all. It is a score for a machine: note numbers, velocities, timings, and instrument program changes, with no recorded sound anywhere inside it.
Playing one therefore requires a synthesizer to interpret those instructions in real time. Android's media player handles recorded audio formats out of the box, but rendering MIDI needs a soundbank of instrument samples, and there is no soundbank every device is guaranteed to expose to apps. So the file opens in a file manager, or the system offers you nothing, and people conclude the file is broken when it is simply waiting for an instrument.
Option 1: an app with a built-in synth
This is the simplest route. A MIDI player app bundles its own soundbank, so it can render the file to audio through your phone speaker or headphones with nothing else connected.
What to look for: support for both Standard MIDI File type 0 and type 1, so single-track and multi-track files both open; a visible track list so you can mute or solo parts; and tempo control for practice. Apps differ in soundbank quality, which is why the same file can sound convincing in one player and thin in another.
Option 2: play through a hardware MIDI keyboard
Connect the keyboard and let it be the sound source. Android has included a MIDI API since Android 6.0 (Marshmallow), so a phone can send note events to a connected instrument, which plays them with its own engine.
USB
Most class-compliant keyboards work over USB with an OTG adapter or a direct USB-C cable, and need no driver. Wired connections have the lowest latency and are the safer choice if the keyboard also has to light up in time with the music.
Bluetooth LE MIDI
Bluetooth LE MIDI removes the cable and is supported on Android from 6.0 onward. It is convenient for playback, and it adds a small amount of latency and occasional timing jitter compared with USB, which matters more for live playing than for listening.
Why the same file sounds different everywhere
A MIDI file specifies instruments by number, not by sound. Program change 1 means "acoustic grand piano" under the General MIDI convention, but each synthesizer supplies its own sample for that slot, so the same file genuinely is a different performance on different devices.
General MIDI Level 1 defines 128 instrument programs in families of eight, and reserves channel 10 for percussion. If a file's drums come out as pitched notes, something has ignored that channel 10 convention.
| Programs | Instrument family |
|---|---|
| 1–8 | Piano |
| 9–16 | Chromatic percussion |
| 17–24 | Organ |
| 25–32 | Guitar |
| 33–40 | Bass |
| 41–48 | Strings |
| 49–56 | Ensemble |
| 57–64 | Brass |
| 65–72 | Reed |
| 73–80 | Pipe |
| 81–88 | Synth lead |
| 89–96 | Synth pad |
| 97–104 | Synth effects |
| 105–112 | Ethnic |
| 113–120 | Percussive |
| 121–128 | Sound effects |
Troubleshooting checklist
- Silence with a keyboard connected: the phone is sending events but the keyboard's local sound is off, or the app is targeting a different MIDI port. Check the port selection first.
- Silence with no keyboard: the app has no soundbank loaded. Some players require a downloadable soundfont before they make any noise.
- Only one instrument plays: the file is type 1 with multiple tracks and the player is reading one. Look for a track list.
- Drums play as melody notes: the percussion channel is not being routed as percussion.
- Notes stick on: a note-off was missed, usually after a disconnect. Send an all-notes-off, or power cycle the keyboard.
- Nothing over USB: the cable is charge-only. Data cables and charge-only cables look identical.
Getting sheet music out of the file
Playback and notation are separate jobs, and a player will not necessarily show you the score. Turning the same file into readable notation means quantizing the timing and supplying the key and staff information MIDI does not carry.
Related reading: how to convert a MIDI file to sheet music and MIDI vs MusicXML vs ABC notation.
LuminaKeys
LuminaKeys plays MIDI songs on Android while lighting the matching keys on your MIDI keyboard in real time, with auto-detection for Yamaha lighted-key models, The ONE Smart Piano, and generic USB or Bluetooth MIDI keyboards. No keyboard connected means the built-in virtual piano takes over.