WildMidi - https://www.mindwerks.net/projects/wildmidi/
It says -
"The WildMIDI library uses Gravis Ultrasound patch files to convert MIDI files into audio which is then passed back to the calling application for further processing or output
- RIFF MIDI file support
- MIDI format 0, 1 and 2 support
- MIDI-like formats: KAR, HMI, HMP, MUS and XMI
- Cross Platform: Linux, Windows, OSX, FreeBSD and etc.
- Thread safe
- host-Endian native streaming
- WAV file output
- Linear and gauss re-sampling
- Final output reverb engine
- Timidity.cfg compatibility
- OSS and Alsa Output (Linux/FreeBSD)
- Windows Sound System support (Windows)
- OpenAL (OSX/Others)
- SoundBlaster 16 (DOS)"
In Player features Android sound system is not mentioned and that doesn't mean it cannot be used in Android. I compiled WildMidi for Android and the link to download the binary package is mentioned later in this page. I tested WildMidi on Ubuntu-Studio which had inbuilt "FreePats". The Gravis Ultrasound Patch files are used by WildMidi to synthesize sound. We can use WildMidi player to play midi files on Android by modifying its player code by sending PCM buffer to Android OpenSLES or AudioTrack.
Can wildmidi be used for sending MIDI events to build piano like app with fast response? Currently NO as per wildmidi source!
Looking at source code of wildmidi inside wildmidi_lib.h. It says "Not Yet Implemented". That "latency" thing! everywhere.
This can be used to build a midi player for android using wildmidi synthesizer. The build script is same as libpng build script mentioned on my other article.
Download wildmidi arm binary from here: