Spicefly SugarCube for Android

Spicefly SugarCube has been available for Logitech Media Server for a few years now. I've recently been looking at how I can take it further and specifically how to use MusicIP on my phone, so obviously installing MusicIP on Android isn't possible. So instead I learnt Java and wrote an Android app to link to the MusicIP Server.

How it Works


Once configured
Select Genre, Artist, Filter or Feeling Luck Mix
Spicefly SugarCube then connects to your local MusicIP server on your LAN.
Gets the Mix result
Copies the music files to your phone
Creates the playlist to play the music files in the right order

Note you must have MusicIP installed on a device on your network, otherwise it won't work!

If you have no idea what MusicIP is and not actively using it, then this app isn't for you yet, see this site for more information and get scanning.


Beta link for download on Google Store
Spicefly SugarCube for Android


Version 1.5 (8) - Pushed to Google Play Store 17/07/2016
- Added option to set copy buffer size. Dramatically speeds up music download time.
- Added prompt to name playlist

Version 1.4 (7) - Pushed to Google Play Store 15/06/2016
- Tweaks to some setting description.
- Added option for No SMB Authentication

Version 1.3 (6) - Pushed to Google Play Store 10/06/2016
- Tweaks for newer phones; API 23+ you need to request the read/write permissions even if they are already in the manifest.

Version 1.2 (5) - Pushed to Google Play Store 10/06/2016
- Added logging, file is saved to the Phone root folder and called spicefly_log.txt, please note it also saves the username/pwd

Version 1.1 (4) - Pushed to Google Play Store - 08/06/2016
- Changed music location to use Environment Variable; DIRECTORY_MUSIC

Version 1.0 (3) - Pushed to Google Play Store at 21:30 - 26/05/2016
- Supports Local Setup


Just to add some clarity on setup.
LAN Setup -> Music is on a NAS on a separate device to where MusicIP is installed
Local Setup -> MusicIP is on the same box as the music and the music is therefore on a drive letter.

LAN Setup
+=====+
On the MusicIP tab it should be the IP address of where MusicIP is installed, don't use a host name.

When MusicIP is creating mixes and responds with for example;
\\FATCAT\music\music\Various Artists\Dream Injection 2 (CD2)\02 - Envelope - Immersion.mp3
\\FATCAT\music\music\Chromatics\In Shining Violence (2006)\03. Lady.mp3

On the Server tab, the name you want would be FATCAT and the IP should be the IP of FATCAT.
The app is doing a find and replace of FATCAT with the IP so it can copy the files to the device.

For example;

This
\\FATCAT\music\music\Various Artists\Dream Injection 2 (CD2)\02 - Envelope - Immersion.mp3

Will become this (assuming the IP address of FATCAT is 192.168.0.2
\\192.168.0.2\music\music\Various Artists\Dream Injection 2 (CD2)\02 - Envelope - Immersion.mp3

(I tried playing with DNS lookup but it wasn't stable.)

Local Setup
+=====+
If your music is local so that you are getting MIP mix responses for example F:\Media\Music\Radiohead\Hail to the Thief\10 - I Will. (No Man's Land.).mp3

On the MusicIP tab it should be the IP address of the device MusicIP is installed upon, don't use a host name.

On the Server tab, for the name add "F:" (no quotes but must have the colon character) and for the IP address put the device MusicIP is installed upon.
The app is doing a find and replace of F: with the IP so it can copy the files to the device.

For example;

This
F:\Media\Music\Radiohead\Hail to the Thief\10 - I Will. (No Man's Land.).mp3

Will become this (assuming the IP address of the device is 192.168.0.2
\\192.168.0.2\Media\Music\Radiohead\Hail to the Thief\10 - I Will. (No Man's Land.).mp3

(I tried playing with DNS lookup but it wasn't stable.)

Additional notes;
Ensure Firewalls allow connection to the MusicIP Port default is 10002
Ensure the music is also shared and available on the network
Note that once the playlist is created it might take a while for Android to realise the playlist and present it in your music player. I haven't been able to find a solution to this issue yet