Communications Protocol
byte Rx function returns format of return
0 clock time time "dddd mmm dd hh:mm:ss yyyy"\v
1 play n/a n/a
2 stop n/a n/a
3 pause n/a n/a
4 volume up n/a n/a
5 volume down n/a n/a
6 nothing n/a n/a
7 play status play,pause,stop "status"\v
8 sample rate sample rate  
9 bitrate bitrate  
a channels # channels  
b next track n/a n/a
c prev track n/a n/a
d fforward n/a n/a
e rewind n/a n/a
f version version # WinAmp "version"\v
g play time play time "mm":"ss"\v
h song title title "title"\v
i entire playlist playlist "song1"\r"song2"\r…\v
j playlist, 2 songs(incrementing) 2 titles "*song1[0:14] song2[0:14]"…\v
k playlist, 2 songs(decrementing) 2 titles "*song1[0:14] song2[0:14]"…\v
l playlist, 2 songs 2 titles "*song1[0:14] song2[0:14]"…\v
m play current playlist selection n/a n/a

The quotes in the "format of return" column signify a variable. Brackets indicate byte 0 to 14 of the song titles. All returns end with a vertical tab, '\v', to inform the Atmel the end of data. It was decided to use the vertical tab because of the improbability of its use in any other sense. We considered using the new line character, '\n', but wanted to reserve it for future use.