Friday, December 30, 2011

m4a fix (1.1.5)

It was brought to my attention today that many of the m4a files downloaded from iTunes Match were not playing in GMMP.  I found the issue and pushed out a patch to fix it.

Thursday, December 29, 2011

Preferences Explained

There are many options in GMMP that might be confusing since there is limited room in the app itself to give a good explanation.  Here is a detailed explanation of every preference available.

Updated: 1/2/11

Edit Scan Paths:  Create a list of paths where all your music is stored.  If your specific path is not found when clicking 'Browse Storage', simply enter the path in manually into the edit box and click add.

Edit Ignore Paths: List folders you specifically want the scanner to ignore.  Anything in this directory will not show up in any of the library views.

Delete database before scan:  Wipes the entire database before running a scan.  This option is not typically needed but is present in case the user wants to start fresh without having to uninstall then reinstall.

Only scan new files:  If this is enabled, any file that was already scanned into the database will be automatically skipped over.  If you are using an external tagger to retag your music, disable this option to pick up all the changes.

Ignore folders with .nomedia:  This is a behavior that the default android music player follows.  Any folder with a file named .nomedia, will get skipped over.  This is useful if you have folders with ringtones or other sound bytes that you do not want showing up into GMMP.  Note: the ignore paths can also be used to skip these paths.

Format artist/album tags:  Artist names and album names will be formatted into proper case before being entered into the database.  This is useful if your music collection is not tagged to any standard.  Example:  I have 3 albums by "insert band name here".  The first album the artist is tagged "Insert Band Name Here", 2nd album "INSERT BAND NAME HERE", and 3rd album "insert band name here".  With this option off, each album would be recognized as being from a separate artist.  With this option on, all 3 albums are inserted into the database as the same artist "Insert Band Name Here".  If you have taken the time to properly tag all your music, you will not need to worry about this option.

Ignore AlbumArtist tag:  By default the scanner will use the albumartist tag if it exists instead of the artist tag to label albums.  Enable this if you want to ignore that tag

Scanner Menu Options (Press the menu button in the scanner)
Clean Database:  Removes any missing songs, artists, albums, or genres from the database.  This is typically done at the end of a scan, but it can be done independently as through this option.

Setup Auto Scan:  This sets the scanner to run at the given interval

Database Stats:  Shows the number of songs, artists, album artists, albums, and genres scanned into the database

Enable Lockscreen Player:  When enabled, a view similar to now playing will show up overtop of your devices lockscreen, allowing full control of playback without unlocking the device.

Device Preferences 
Display Wake Mode:  Technical details can be found here
  1. Default:  Nothing is changed and the screen will shut off normally
  2. Dimmed: The display will not fully shut off, but will stay in a dimmed mode
  3. Screen Bright:  The display will stay fully lit
  4. Full Bright: The display and keyboard will stay fully lit
Always Keep Device Awake:  Prevents the device from falling into a deep sleep.  This option should only be needed on non phone android devices.

Headset Preferences 
Auto Play/Pause:  This will pause playback if the headset is removed while audio is playing.  If playback was paused automatically, plugging the headset back in will resume playback.  However if the user manually pauses playback before unplugging, plugging back in will not resume.

Auto Resume When Plugged:  Always resume playback when plugging in a headset

Prevent Sleep:  On devices that can go into a deep sleep / hibernate state, this option will prevent that from happening for the amount of time specified.

Enable Headset/Remote Controls:  This will allow GMMP to respond to any media intent sent by bluetooth/headset remote controls, or other apps that control playback.

High Priority Receiver:  When enabled, GMMP should be the first app to receive any of the media intents.  Disable this if you want GMMP to still respond to the commands, but allow other apps to intercept them first.

Multi-Press Enabled:  For headset controls that only have one button, this option will make it so a single press of that button will play/pause, double press will go to the next track, and triple press will go to the previous track.

Call Handling 
Resume On Call End:  When a phone call is being received, GMMP will automatically pause playback.  Turn this option on if you want playback to resume after the call ends.

Button Override When Screen On 
Volume:  This feature does not work very well, but if enabled and GMMP is in focus, and the screen is on, the volume buttons will let you change tracks.

Scrobbler Preferences
Scrobble Droid:  Scrobble plays through scrobble droid

Simple LastFM:  Scrobble plays through simple lastfm

Album Art Preferences
Auto Download Album Art:  Will search for album art if not present.  The search is not 100% accurate for artists with common names.  If the wrong image downloads, you can manually change it.

Save In Lossless Format:  If enabled the images will be downloaded and stored as PNG instead of JPG

Album Art Download Location:  If there is a specific path you would like to download album art to, set that here.  Album art is downloaded to /sdcard/gmmp/albumart/ by default

Show When Paused:  Enable if you want the notification icon to show when playback is paused

Error Reporting
Allow Crash Reporting:  Allows a crash report to be sent to the developer.  This is essential for making GMMP as stable as possible

Always Accept:  By default, the user is prompted with a popup asking if they want to send a crash report.  Enable this to automatically send it when an issue occurs.

Include System Logs:  Adds the system logs to the error report.  The logs contain extra information to help fix bugs.

Include Device Id:  Include the device id in the crash report

Error Log
Submit Report:  Sometimes errors can occur that are handled correctly by GMMP.  They get placed into the error log.  This allows the user to send a report to the developer without waiting for a crash.

Clear:  Clears the list of errors

Music Service Timeout:  Enable this if you want the music service to eventually shut itself down.  By default the service will stay running until the user exited GMMP.  Note:  Some features like auto play/pause will not work if the music service is not running.

Traditional Back Button:  Changes the back button behavior to be more like standard apps. Pressing back will return to the previous view instead of going to now playing

Tasker Integration:  Sends information about the currently playing back to Tasker.  Populates the following variables: %MTRACK %MARTIST %MALBUM %MTRACKNO

Show Compatibility:  Since not every android device is the same, this will show the support for each format on the device.  

Use GMMP EQ:  Use the high powered equalizer that comes with GMMP.  Disable on devices running 2.3+ in order to use the default android EQ.  The GMMP EQ is much higher quality and more customizable, but will use more CPU power compared to the android EQ.

Number of Bands:  If using the GMMP EQ, the number of bands can be set from 2 to 10.  The higher the band count, the more CPU power will be used.  Note: If too much CPU power is used, playback could begin to stutter.

Quality:  Choose between 3 different equalizer algorithms to process the audio.  The default quality is already really good, but higher quality settings are available at the cost of higher CPU usage.  Note: If too much CPU power is used, playback could begin to stutter.

Enable Crossfade:  Turns on the crossfader

Auto Track Change:  Enables crossfading to occur when a song naturally transitions to the next

On Shuffle Only:  Only will crossfade on an automatic transition if shuffle is turned on.

Disable When Gapless:  Will not crossfade if there is a gapless transition between 2 tracks

Auto Crossfade Duration:  The length of the automatic crossfade

Manual Track Change:  Enables crossfading when the user manually changes tracks

Manual Crossfade Duration:  The length of the manual crossfade

Auto Volume Adjust
Volume Adjust Mode:  Automatically adjust volume when switching between bluetooth, headset, and the speaker.
  1. Off: Turns off auto volume adjust
  2. Use Defaults: Changes the volume to the defaults set in the preferences
  3. Restore Last Used:  Restores the volume to the last used volume for that particular output
Default Speaker Volume:  Volume to use if 'Use Defaults' is enabled when switching to the speaker

Default Wired Headset Volume:  Volume to use if 'Use Defaults' is enabled when switching to the wired headset

Default Bluetooth Volume:  Volume to use if 'Use Defaults' is enabled when switching to bluetooth

Enable Gapless Playback:  Enable gapless playback

Playback Buffer Size:  Set how much memory is used for playback.  Increase this value if doing other actions on the device while listening to music causes skips.

Playback Priority:  The priority of the playback thread.  It is safe to keep this high since not too much work is done here.

Decoding Priority:  The priority of the audio decoding.  Setting the priority low for this might cause skipping if GMMP is in the background, but setting it too high may allow GMMP to consume the CPU causing things to lock up.  It varies from device to device.  Leave this setting alone unless you are experiencing issues.

Preload Next Track:  Set how many seconds before the end of the currently playing back to load the next track in the playlist.  Note:  This must be set to greater than 0 in order to achieve gapless playback.  Also if crossfading is enabled, this value is typically ignored.

Seek Time:  Set how many seconds to skip when pressing the seek buttons

Navigation Bar
Portrait Position:  The position of the navigation bar when the device is in portrait mode.  Options are top, bottom, left, and right.

Landscape Position:  The position of the navigation bar when the device is in landscape mode.  Options are top, bottom, left, and right.

Used Colored Icons:  Color the icons on the navigation bar.  Otherwise they will be grey/silver

Enabled Views:  Choose which views to enable on the navigation bar.  Not every view can be turned off, only the following:  Artist, Album, Genre, Song, Browser, and Equalizer

Enable Transitions:  Enables the transitions that occur when switching views

Artist Library
Show Artist Stats:  Displays track and album count when listing the artists.  Note: Enabling this might cause the artist list to take a little longer to load

Sort Options:  Choose the sorting order of the artist list. 

Ignore Prefix When Sorting:  Ignores the 'the' prefix when sorting by artist name

Album Library
Show Album Stats:  Displays the track count, album length, and year in the album listing. Note: Enabling this might cause the album list to take a little longer to load

All Album's Sort Order:  The sort order to use when viewing every album on the device

Artist Album Sort Order:  The sort order to use when viewing albums from a specific artist

Genre Library
Show Genre Stats:  Display the track and album count when listing the genres.  Note: Enabling this might cause the genre list to take a little longer to load

Sort Options:  Choose the sorting order of the genre list

Song Library
Show Track Stats:  Display the artist and album when viewing the list of all tracks on the device

Show Album Info:  Shows the album info and album art along with the song list when selecting an album

All Songs Sort Order:  The sort order to use when viewing every song on the device

Album Song Sort Order:  The sort order to use when viewing the song list for a particular album

File Browser
Sort Options:  Choose the sorting order of the file browser

Read Tags:  Will read and display tags for the audio file instead of just displaying the filename.  This will make navigation slightly slower since it has to open each file.

Delete Without Confirmation:  Disables the popup warning when deleting a file or folder

Song Actions
On Select (Stopped):  Default action when a song is selected when playback is paused or stopped.  Options are: Play, Play Next, and Enqueue

On Select (Playing)Default action when a song is selected when a song is playing.  Options are: Play, Play Next, and Enqueue

Queue Album On Song Play Action:  When selecting a single song to play, this will queue up the rest of the album along with it.

Enable Quick Return:  If a view is already active, and that view's button is pressed in the navigation bar, it will cause the view to return to its original display.  This works for the artist, album, genre, song, and file browser views.  IE:  The user clicks down a few folders deep in the file browser, pressing the browser button again will return it to the root directory.

Now Playing
Get Metadata From Library:  Retrieves metadata about the current playing song from the database instead of reading the tags of the file.

Show Album Art:  Show album art for the current playing song

Show Seek Buttons:  Replaces the repeat and shuffle buttons with seek forward and backwards buttons

Background:  Choose the background to show behind the album art.  Default will show the gradient that fits the rest of the theme.  Black will show a black background.  Note: This option is here mainly for older devices that do not show gradients very well.

Display Metadata Icons:  Replaces the text for album/artist/trackname/genre with icons.

Font Size:  Set the font size for the now playing view

Album Art Scale Type:  Choose how the album art is scaled.  Fit center is the default, but the album art can be positioned differently and stretched to fit the screen depending on the setting.

Displayed Tags:  Choose which tags get displayed on the now playing view.  It is currently limited to Artist, Album, Track, and Genre.  This will be expanded in the future.

Skip Folder On Long Press:  If enabled, a long press of the next/previous track buttons will skip to the next folder.

Enable Gestures:  Turns on gesture recognition for the now playing view

Customize Gestures:  Assign an action to each available gesture.

On Playlist Completion:  Set what GMMP will do when the current playlist.  Options are:
  1. Stop:  Stops playback
  2. Play Random:  Picks a song at random and plays it
  3. Loop Playlist:  Restarts the current playlist
  4. Play Random Album:  Plays an album at random and plays it
  5. Play Rest Of Album:  Plays the remainder of the album the last track in the playlist is from
Playlist Storage Path:  Path to save playlists too

Wrap Trackname:  Wrap the trackname to a second line if it is too long to fit on a single line.

Shuffle Mode:  Set the current shuffle mode.  Options are: Shuffle Off, Shuffle Playlist, and Shuffle Collection

No Repeats:  A track will not repeat until every song in the playlist is played once.  This only works for Shuffle Playlist.

Instant Search:  If enabled, searching will begin once the user starts typing.  This can be slow on very large collections.

Result Limit:  Limit the amount of results returned by the instant search. 

Search Categories:  Choose the categories to search.  Options are: All, Artist, Album, Song

Thursday, December 22, 2011

Tasker integration + more fixes (1.1.4)

I had received a request to support Tasker's  %MTRACK variable.  In 1.1.4 I not only added support for %MTRACK, but also added custom variables for album (%MALBUM), artist(%MARTIST), and track number (%MTRACKNO).  Turn on task integration by going to Preferences -> General -> Tasker Integration.  The only other change besides bug fixes is the file browser will now ignore case when sorting folders/files alphabetically.

This will most likely be the last update of the year since I am taking some time off for the holidays

1.1.4 (12/21/2011):
-Sorting in the file browser is now case insensitive
-Added Tasker integration.  Populates the following variables: %MTRACK %MARTIST %MALBUM %MTRACKNO
-Fixed crash when advancing to the next track with a remote control
-Fixed crash when deleting a file fails
-Fixed issue where album art would not write to disk which prevented the album art from showing in widgets
-Caught exception that can be thrown when unregistering the UIControlReceiver
-Added permission

Friday, December 16, 2011

1.1 patches + sale extension

The 75% off sale has been extended through sunday 12/18.  Grab it while its cheap.

Throughout the week I pushed out 3 minor patches.  Changelog is below.

1.1.3 (12/16/2011):
-Fixed crash that could occur when receiving a phone call
-Long press of playlist button will launch the manage playlist view
-Moved widget button handling to a background thread to hopefully reduce the amount of ANRs
-Updated german translation
-Improved recognition of storage folders for "Browse Storage" in the scanner
-Playlist edit mode is now persistent

1.1.2 (12/12/2011):
-Fixed some compatibility issues with 2.2 and 4.0 devices
-Gapless playback is now enabled by default
-Headset/remote controls are now enabled by default
-Preamp and balance now scroll with the other equalizer bands

1.1.1 (12/11/2011):
-Updated german translation
-Changed list items in artist/album/genre views to use translations
-Changed 'On Select (Playing)' preference's default value to 'play' instead of 'enqueue'
-Fixed crash when playing next/previous folder

Friday, December 9, 2011

1.1 is now released and 75% off on the android market for a limited time.

1.1 contains some major updates and new features including a lockscreen player, search view, and a customizable gesture system.  Since the android market is running a massive sale in celebration on 10 billion market downloads, I thought I would join in.  GMMP will be 99 cents until the sale ends.  It may take a little while for the price change to show up.

Most of the new features are fairly straightforward besides the new gesture system.  The gesture system allows you to bind an action to a gesture.  The gestures include: Single tap, double tap, fling left/right/up/down, and long press.  These gestures are done in the now playing window where the song info and album art is shown.  The bindable actions are as follows: None, Play Next Track, Play Previous Track, Play Next Folder, Play Previous Folder, Toggle Media Controls, Toggle Shuffle, Toggle Repeat, Seek Forward, Seek Back, Play/Pause, Show Volume Dialog, Volume Up, Volume Down, Jump To Time, and Sleep Timer

GoneMAD Music Player 1.1 Trial
GoneMAD Music Player Unlocker

Full changelog:
-Added lockscreen player (requires 2.0 or higher)
-Added search capabilities
-Added 4x4 widget
-Added custom gesture control options (Preferences -> Now Playing -> Customize Gestures)
-Long press of next or previous track buttons in now playing will move to the next or previous folder.
-Added preference to crossfade when gapless data is missing
    (Preferences -> Audio -> Crossfade -> Disable When Gapless)
-Now playing now has customizable font size and optional icons to replace the artist/album/track/genre text
    (Preferences -> Now Playing -> Font Size & Use Metadata Icons)
-Added delete option to the file browser
-Added "Delete Without Confirmation" option where you will not be prompted when deleting a file/folder
-Widget update service will now shutdown along with the music service
-Added MusicService idle timeout option (Preferences -> General -> Music Service Timeout). After 5 minutes
    of inactivity, the music service will shutdown.  NOTE: headset/bluetooth controls will not function without
    the MusicService running
-Added option to ignore the "The" prefix in artist names when sorting
    (Preferences -> Library -> Artist Library -> Ignore Prefix When Sorting)
-Added traditional back button behavior support (Preferences -> General -> Traditional Back Button)
-Added Italian and German translations
-Improved playback error handling
-Set default equalizer band count to 4

-Caught out of memory exception when trying to destroy the media controls
-Resized status icon to comply with android standards
-Fixed issue where removing current view from nav bar would cause you to get stuck on that view
-Fixed crash when the android equalizer class cannot be found
-Fixed crash when trying to play a file that doesnt exist


Thursday, December 8, 2011

1.1 Beta 2 Posted

I decided to push back some of the remaining tasks to future versions in order to get 1.1 released faster. Beta 2 contains a search feature plus some other minor changes.  There are still plenty of reported bugs that need to get fixed, so that will be my focus until 1.1 is released.

Download link is available in the forums.

Post any bugs/issues in the forums.

1.1 Beta 2:
-Added search capabilities
-Added 12pt font size to the now playing font size list
-Added new gesture actions: Show Volume Dialog, Vol Up, Vol Down, Jump To Time, and Sleep Timer
-Added preference to turn off skipping albums when long pressing next/prev.
    (Preferences -> Now Playing -> Skip Folder On Long Press)

-Menu button is now disabled on lockscreen

Saturday, December 3, 2011

1.1 Beta 1 posted for testing

I am 75% of the way through coding 1.1 and I wanted to put up a beta version to get the bugs found early.

This beta includes:
-lists exclude 'the' when sorting
-lock screen (works on 2.0 and higher)
-ability to delete files/folders from browser
-stop music service after idle for 5 min
-changeable font size for now playing + optional icons to replace artist/album/genre/track text
-long press of next / prev will change folders
-customized gesture controls
-option to crossfade when gapless data is missing
-traditional back button support
-4x4 widget
-sleep timer

Once I finish the remaining features plus any bug fixes, I will post another beta version before pushing 1.1 to the market.

The download link is posted in the forums