Excellent!

My Arduino code isn't that great, so when you convert it, you might want to, you know, write the code better than I did. :-)

And I'd love some track data on the serial port! Ideally the output could be something like this (with an appropriate line terminator at the end of each, on the empeg that's a linefeed 0x10 right? Or is it a CRLF?):

currentTrackData_TrackName: Some Song Title
currentTrackData_Artist: Some Artist Name
currentTrackData_Album: Some Album Title
currentTrackData_Genre: Some Genre Name
currentTrackData_TrackNr: Ascii track number in decimal (probably current playlist playback position)
currentTrackData_TracksTotal: Ascii total number of tracks in decimal (probably current playlist length)
currentTrackData_TrackPos: Ascii current single track playback position in decimal, in milliseconds
currentTrackData_TrackLen: Ascii total single track playback length in decimal, in milliseconds

The exact preface strings aren't hugely important, as long as they're unique and all start with a common name so that I can detect when I need to drop into the parsing routine. The idea is: Don't surround the data with any delineating symbols like quotes or chevrons, because then we'd need to figure out a way to escape them and I don't want to deal with escaping in my parsing code. It's easier to parse on the unique phrase at the start of the line, then split them at the first colon-space, then take everything after that up to the first line terminator character.

You could spit them out on the serial port at whatever frequency you think appropriate. And I could write the parsing code so that it doesn't care which ones it gets or when it gets them, it merely interprets the ones that it sees whenever it sees them. So you could output some of them more frequently than others. For instance, only outputting the track titles and position at startup and when the tracks change, but outputting the track position and length every 500 milliseconds or so. Or output all of them every second to simplify your code, or whatever you like.

I don't know if that'd be too much data for the serial port at its default settings. I think 115200 speed shouldn't slow down the empeg too much, but I could see that, for example, if the serial port were running at 9600bps might be a bit too slow to be sending all that data all the time. My intention is to set the empeg to car_rate 115200 for this, but perhaps the serial port track data should be disabled by default in case someone's player is set to something less than that.
_________________________
Tony Fabris