Skip to main content


Showing posts from June, 2011

0.20 - True gapless playback + wavpack/wma support

I'm headed off to vacation tomorrow so here is a new version before I go.  The main feature I added was true gapless playback for every supported filetype (mp3/aac files need to be encoded properly to support it.. ie with itunes or lame encoder).  You can enable it in the new audio section of the preferences. 

I have gotten 2 different reports about force closes due to libraries failing to load.  This unfortunately is one of the downfalls to the android OS.  Different devices and even different firmware versions of the same device can have different versions of libraries that may be incompatible.  I implemented a work-around if the audioengine library fails to load.  GMMP will just run just with some features disabled.  I will try to come up with a better solution but without getting my hands the actual device.. it will be tough.

Download 0.20 alpha here

edit: I forgot to state that mp3 and aac gapless support depends on the device.  If gmmp cannot find a decoder it can use on th…

Gapless playback

I was successfully able to implement gapless playback.  I've tested with mp3 and ogg since they are the only formats i have mixed albums in, but the aac code works the same as mp3 so should that work fine and flac and the other formats are naturally gapless so they should work as well.  I am leaving for vacation on wednesday so I will try to wrap up the next release tomorrow

0.19.1 Patch

Fixed some immediate issues that I noticed and were reported to me

Download here

0.19.1 (06/20/11):
-Fixed AAC reader to recognize end of file instead of endlessly looping
-Properly registers audioengine native functions to prevent possible force
    close on startup
-Fixed crash when adding folders to the playlist in browser view
-Tracks are now added/enqueued in the correct order when using the browser view

0.19 - New underlying audio engine adding FLAC, TTA, and APE support

It's been awhile but I am finally happy enough with the current build to release it.  GMMP no longer relies on the built in android mediaplayer to process/decode audio files for playback.  This will open up many new features in the future.  I wrote A LOT of code in c++ for this and integrated 3 libraries (ffmpeg, opencore, and libflac) so I expect here to be some bugs.  I've used 1.6 and 2.2 emulator, the archos 5IT and the HTC thunderbolt to test, so the stability should be fairly good.

Due to patent issues with AAC and MP3, I do not include decoders for these formats because I do not want to get sued.  I do however, search the device to see if the standard decoders are present and use them.  Devices with DSP chips on them may not contain the standard decoders (the archos 5IT has a custom aac decoder specifically for the dsp on board).  In cases like this, gmmp will revert to using the built in mediaplayer for those specific formats.

I am trying a new site to host my download…

m4a issues

Just an FYI.  There seems to be issues with m4a right now.  The files play fine but the scanner is unable to read any tags.. at least with the m4a files I use to test.  If you have a large amount of m4a files, stick with 0.17.  It wont read them but I have gotten reports that things can get pretty sluggish in 0.18.  If you only have mp3/ogg 0.18 should work fine. 

The next update is going to be a big one and it should address the issues with m4a files.  Also I successfully got gapless playback working with ogg tonight.  MP3/M4A are a bit trickier so that may take some time, but I am making good progress.


I am currently hard at work at replacing the underlying audioplayer that the android provides with my own custom audio engine.  Why you ask? Well there are 3 big reasons

1) Audio format support.  The default player only supports mp3 m4a ogg 3gp midi and wav (flac is supported in 3.1+ now).  What I am working on will support mpc, wma, ape, shn, tta, and wavepack as well.
2) Gapless playback for mp3 / aac.  The way mp3 and aac files are encoded leaves a slight bit of silence at the end of each track.  If they are properly encoded, metadata is added to the files that give you information about this gap so you can account for it.. giving gapless playback.  The default player does not give access or support any of that.
3) There is no way to access the actual binary data of the audio stream with the default player.  Without this data you cannot do gapless playback, crossfading, or add equalizer support (android 2.3+ adds supports for EQ but my app needs to support older versions)

I am hopi…