For quite a while now I've been wanting to completely redo timidity actually using TiMidity++. However, I can't get it to even compile&output a wav file let alone stream audio to the speakers. If anyone would be willing to help get timidity running let me know.. Once it actually works, it will be fully open source to comply with the license, but I will still charge $0.99.
What needs to be done (that I can't figure out):
Compile timidity as a dynamic or static library.
Write an interface that either uses opensles or preferably write bytes/shorts using android.media.AudioTrack for API<9 compatibility.
Avoid SDL at all costs.
Here are some possible resources I've found so far:
First, obviously the official TiMidity++ library (preferably compile this):
http://sourceforge.net/projects/timidity/files/TiMidity%2B%2B/TiMidity%2B%2B-2.14.0/The original devs usually show up once a year or less so they probably wont be much help. I got it to compile as a dynamic lib but it always crashed in resample.c, even if I tried to force it to not resample.
Second, someone managed to compile timidity as a static lib for the iphone:
https://github.com/yoyofr/modizer/tree/master/libtimCan't find what/where the equivalent of a makefile for xcode is. I asked the dev how he managed to compile it and am waiting for a response.
Third and least preferable option:
ftp://ling.lll.hawaii.edu/pub/greg/gt-0.4.tar.gzContains an older/simplified version of timidity, designed mainly as a binary file with interfaces missing that existed in TiMidity and full TiMidity++
This has been driving me insane for ages.
Other random notes:
Fluidsynth works and has been incorporated into another app as well, but is a huge processor hog and doesn't support certain soundfonts properly (nails on a blackboard).
The TiMidity++ binary compiled on my pandora will run once all of the libs are copied to the right place and can successfully output wav files. ALSA!=TinyAlsa. Once I get my nexus 7 back, I may be able to pipe the wav file to the tinyplay binary (only available on some devices) for dynamic playback instead of actually saving the file.