This is the protocol that any client should use to talk to cm3s Requests are sent to cm3s through the status pipe. Pipes were chosen instead of sockets because even a simple bash script can write and read on a pipe, therefor allowing people to customize personal clients even with bash scripts. Yes status pipe because the cmd and ststus names are refered to mpg123 and not to the actual interpreter of the commands. Since the cm3s server part must keep an eye on the status info of mpg123 to see if it has finished playing a file, while it does that it can also read commands sent by client on that same pipe. The status pipe is located in TMPD/stat (TMPD is defined in the Makefile) Any response to these commands will come through ipc message. The ipc message queue key is generated by using tne cm3s executable file with it's full pathname as defined in makefile ( PREFIX/bin/cm3s ) and a project id that is composed of the character "3". #E SKIP X if |X| > 9 then it will skip X tracks cm3s will respond with how many tracks it actually skipped and with the track that is being loaded @P 0 start plying the next track on the list cm3s will respond with the track that is being loaded #E BEGIN restart playback from the beginning of the playlist cm3s will respond with the track that is being loaded #E RESTART restart playing current track from the beginning cm3s will respond with the track that is being loaded #E PREV load the previous track that was played cm3s will respond with the track that is being loaded #E RAND toggle random mode cm3s will respond whether random mode is now on or off #E REPEAT toggle repeat mode cm3s will respond whether repeat mode is now on or off #L NAME load the playlist, directory or mp3 file identified by the full path name "NAME" (or relative to where cm3s was started) cm3s will respond with the list that is being loaded #E PAUSE toggle pause #E BACKPLAY Toggle the order the playlist is being played (forward or reverse) #E SHOWID3TAG N.B. In any case cm3s will send an ipc message stating the track that is currently being played. Before doing this cm3s will read and discard any previous messages present in queue (this prevents the queue from overflowing if there is no client or if client does not look at the messages).