I have been working on my own modifications to the base USB audio app in the CMU; details below in the change log. The biggest things I wanted to do was add long press play (click hold) which I did! The long press play mod uses existing functionality within the List2Ctrl. I have been running it for the last few days without issue and I consider it complete (unless a critical bug rears its head or I decide I want some other feature).
This was all done on v59.00.441A NA so keep that in mind if you want to use these. If you are on a different version, you will want to compare the base files to your version to see if you can just drop in and go. Otherwise, you will need to modify them yourself. Most of my changes in the files are denoted by the string "---MZDMOD---" to help you find my changes. It is possible I missed some of the changes which is why you should do a file compare against the base file. I might consider creating a set of files for other firmware versions if there is demand and people ask nicely.
Finally, if you decide to use any of these, YOU DO SO AT YOUR OWN RISK. I would advise a few things:
1. Change your root password (if new CMU user)
2. Restore SSH (if disabled)
3. Ensure the watchdog is disabled
Messing with the USB audio app is dangerous if you don't do the above. If you break the USB audio app in some way, the GUI will freeze every time you plug in a USB drive. If you do all 3 of those (which most of you have/should if you are on this forum), then you can recover via USB tweaks or SSH if you broke something (like I did once when I forgot a semi-colon).
Additional Notes and Musings
- Long press (click hold) folders/all songs to play
- Add new icon for USB root menu on the UMP control
- Removed "More like this" button from UMP control
- Added folders button to UMP control
- Set folders and song list icons correctly (were switched) on UMP control
- Removed "/" character from folder names for list control and title of now playing control
- Workarounds implemented for now playing control title issue and song list issue (for long press)
- Add folder and song icons to the list control
- Add folder and playlist icons to now playing control
- Updated list control for shorter scroll and long press timeouts
- Removed beeps for scrolling and long press for list control
- Larger album artwork
- The song list play bug where the view changes (list to tree) is still present and not worth trying to workaround IMO due to context issues.
- I removed the "More like this" button because it doesn't work well or at all in my experience. It happens a lot with USB drives with large libraries like my main drive. The button could easily be swapped back in instead of the folders button.
- I learned a lot from doing this in how the MMUI and the JS apps work. Sadly, the available websocket events from the MMUI leaves a lot to be desired and with how context is handled and used in the JS apps, it makes it very difficult to implement new features. You can workaround them like I did but it is really bad to do so.
- I'm also working on adding marquee (scrolling text) features to the list and now playing controls. I actually had it working for both but the marquee plugin I was using seemed to have performance issues. I think it was related to the plugin itself. Now I'm in the process of updating the CSS files and creating my own plugin which will use Velocity for animation. I'm hoping this will address the performance issues otherwise I'm going to scrap this and live with it. I will not sacrifice stability and performance for something which is basically aesthetic.
- I spent some time looking at the USB audio binaries in radare2 and noticed a lot of interesting things. I'm a general n00b in this arena so it was mainly to find events I could potentially use (and it was fun because I rarely work with assembly). For example, shuffle by artist or album are there but they appear to not be tied to the shuffle mode event (or any event for that matter). Anyone out there good with reverse engineering want to take a look at the binaries and see if they can enable some of these features?
- I did find something pretty hilarious while I was exploring the USB audio binaries. It looks like someone at JCI doesn't like Siri and has a sense of humor.