Skip to main content

Guide: Reducing audio skipping and stuttering

Many of the advanced features of gmmp can consume a good amount of cpu so this is a guide for getting playback as smooth as possible.

To start I would like to explain why these features can consume a lot of CPU time.  In order to provide some of the advanced features like gapless playback, equalization, and extra format (flac, wv, wma, ape) support I had to write my own code to read in the audio data, decode it, then send it to the audio device for output. I will refer to this as the "audioengine". Normally you can just use a built in java class (MediaPlayer)provided by google to play an audio track, but the features I mentioned are simply not possible to do with the MediaPlayer class.

As time goes on it seems google is adding more features that make it possible to do some of these things just by simply using the built in API.  Examples of this are equalizer support in 2.3+ and flac support in 3.1+.  GMMP is smart enough to use the built in features when possible, then fall back to the audioengine if needed.  The built in features typically will take advantage of any additional hardware (dsp chips) on the device to reduce the amount of CPU needed.  The audioengine runs purely in software.

The following are settings you can tweak to improve playback.

1)  If you do not care about gapless playback or an equalizer, disable them.  This will force the android MediaPlayer to be used over the AudioEngine for all the supported formats.
Preferences -> Audio -> Uncheck Gapless Playback
Equalizer View->Menu->Toggle EQ (hit until you see Status: Disabled)

2) Adjusting Priority:  There are 2 priority settings you can play around with: Playback Priority and Decoding Priority.  This will cause the playback and decoding to be giving higher cpu priority over other processing running on the device.  I've found some devices actually skip more if the highest priority is used.  Each device is different so you will need to play around with the priorities to find the sweet spot.  Adjusting decoding priority will have much more of an effect than the playback priority.
Preferences -> Audio -> Playback Priority and Decoding Priority

3) Buffer size:  You can adjust how much memory is allocated to buffer the audio data before playback.  If you tried 1 and 2 above and still get skipping, try increasing the buffer size.
Preferences -> Audio -> Playback Buffer Size

Optimizing your equalizer settings:
If you are using the equalizer and are still getting skipping after doing everything suggested above, try the following:

1) Decrease the EQ quality
Preferences -> Audio -> Equalizer -> Quality

2) Lower the amount of bands used
Preferences -> Audio -> Equalizer -> Number of Bands

3) Take advantage of the preamp setting.  The preamp uses next to no CPU time at all so use it.  A band that is set to 0 dB will be skipped during processing.   So set your bands so you have as many at zero as possible.  Instead of settings like this: preamp 0, b1 +3, b2 +2, b3 -1, b4 +2, b5 +2,  use this:  preamp -2, b1 +1, b2 0, b3 -3, b4 0, b5 0.   Only 2 bands need to be processed which saves CPU and the overall sound should be somewhat similar.

Edit:  If you want to use an equalizer but nothing above works and you have 2.3 or higher, you can try using the android EQ instead (Preferences - > Audio  -> Equalizer -> uncheck Use GMMP EQ)  The quality is not nearly as good but the playback should be smoother

Popular posts from this blog

3.4.5 Release / Preview of 3.5

3.4.5 was just uploaded to google play and should be rolling out over the next few days. Changelog: 3.4.5 (2023-08-29): Added Dutch translation Fixed crash editing rules in rule groups Disable IAP donation options if Full Version Unlock has not been purchased to prevent confusion Other changes since 3.4.0: Added Finnish translation and updated other translations Added donation options to the purchase settings area Fixed crash when trying to bookmark / unbookmark currently playing song Fixed Finnish not showing up in the language select Fixed other various crashes Fixed issue where rating or editing tags could potentially split the album Fixed some of the lists/grids not refreshing after changes 3.5 Preview I've been working on some new UI options planned for 3.5.  So far I've finished a new gradient background option for now playing.  There are 2 different styles (linear / radial) with 2 different color sources for each.  One source will take from the theme colors, the ot...

3.4.9

More fixes.  Check out discord for info on the 3.5 alpha. 3.4.9 (2024-02-14): Fixed tab navigation returning to the wrong view on screen orientation change Fixed queue not being focused on the playing track sometimes while using tab navigation 3.4.8 (2023-12-21): Fixed backup/restore intent receiver not working with IAP unlock Fixed crash sorting playlist contents

3.4.14

Google really messed with alarms and timers for android 14, so 3.4.14 should fix the sleep timer.  You will notice an alarm will show up in your alarms menu when the sleep timer is turned on.  This is the only way to actually get the sleep timer to reliably stop playback on time when your screen is off / phone locked. 3.4.14 (2024-05-17): Sleep timer should now be more reliable on android 14+ 3.4.13 (2024-04-29) Fixed metadata view incorrect sizing in now playing layout 1 3.4.12 (2024-04-23) Updated translations Fixed issues with left and right metadata alignment when no album art Multi artist/genre/composers should now be separated by a comma and space throughout GMMP 3.4.11 (2024-04-16) Added ability to choose whether to crop album art to 1:1 aspect ratio in now playing layout 2 (customize -> album art -> crop to fit) Fixed now playing tab 1:1 aspect ratio album art getting cropped Album art preview pop up should no longer crop art 3.4.10 (2024-03-31) Fixed auto bookma...