Music Player Daemon - Commands This document is intended for client developers, not end users. Format: ------- If arguments contain spaces, they should be surrounded by double quotation marks, ". command <type arg1> <type arg2> ... explanation: w/ arg1 and arg2 All data between the client and server is encoded in UTF-8. (Note, that in UTF-8 all standard ansi characters, 0-127, are the same as a standard ansi encoding. Also, no ansi character appears in any multi-byte characters. So, you can use standard C functions like strlen, and strcpy just fine with UTF-8 encoded strings. For example: "OK\n" encoded in UTF-8 is simply "OK\n". For more information on UTF=8: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 ) Command Completion: ------------------- A command returns "OK\n" on completion or "ACK some error\n" on failure. These denote the end of command execution. Commands: --------- add <string path> add the file _path_ to the playlist (directories add recursively) _path_ can also be a single file increments playlist version by for each song added clear clears the current playlist increments playlist version by 1 clearerror clear the current error message in status (this is also accomplished by any command that starts playback) close close the connection with the MPD crossfade <int seconds> sets crossfading between songs delete <int song> delete _song_ from playlist increments playlist version by 1 find <string type> <string what> finds songs in the db that are exactly _what_ _type_ should be "album", "artist", or "title" _what_ is what to find kill kill MPD list <string type> <string arg1> list all tags of _type_ _type_ should be "album" or "artist" _arg1_ is an optional parameter when type is album, this specifies to list albums by a artist, where artist is specified with arg1 listall <string path> lists all songs and directories in _path_ (recursively) _path_ is optional and maybe a directory or path listallinfo <string path> same as listall command, except it also returns metadata info in the same format as lsinfo load <string name> loads the playlist _name_.m3u from the playlist directory increments playlist version by the number of songs added lsinfo <string directory> list contents of _directory_, from the db. _directory_ is optional move <int from> <int to> move song at _from_ to _to_ in the playlist increments playlist version by 1 next plays next song in playlist pause <bool pause> toggle pause/resume playing _pause_ is optional and should be 0 or 1 password <string password> this is used for authentication with the server. _password_ is simply the plaintext password ping does nothing but return "OK" play <int song> begin playing playlist at song number _song_, _song_ is optional playlist displays the current playlist NOTE: do not use this, instead use 'playlistinfo' playlistinfo <int song> displays list of songs in the playlist _song_ is optional and species a single song to displa info for plchanges <playlist version> displays changed songs currently in the playlist since _playlist version_ previous plays previous song in playlist random <int state> set random state to _state_, _state_ should be 0 or 1 repeat <int state> set repeat state to _state_, _state_ should be 0 or 1 rm <string name> removes the playlist <name>.m3u from the playlist directory save <string name> saves the current playlist to _name_.m3u in the playlist directory search <string type> <string what> searches for any song that contain _what_ _type_ can be "title","artist","album", or "filename" search is not case sensitive seek <int song> <int time> seeks to the position _time_ (in seconds) of entry _song_ in the playlist setvol <int vol> set volume to _vol_ _vol_ the range of volume is 0-100 shuffle shuffles the current playlist increments playlist version by 1 stats display stats artists: number of artists albums: number of albums songs: number of songs uptime: daemon uptime in seconds db_playtime: sum of all song times in db db_update: last db update in UNIX time playtime: time length of music played status reports current status of player, and volume level. volume: (0-100). repeat: (0 or 1) playlist: (31-bit unsigned integer, the playlist version number) playlistlength: (integer, the length of the playlist) state: ("play", "stop", or "pause") song: (current song playing/paused, playlist song number) time: <int elapsed>:<time total> (of current playing/paused song) bitrate: <int bitrate> (instantaneous bitrate in kbps) xfade: <int seconds> (crossfade in seconds) audio: <int sampleRate>:<int bits>:<int channels> updatings_db: <int job id> error: if there is an error, returns message here stop stop playing swap <int song1> <int song2> swap positions of _song1_ and _song2_ increments playlist version by 1 update <string path> searches mp3 directory for new music and removes old music from the db _path_ is an optional argument that maybe a particular directory or song/file to update. returned: updating_db: <int job id> where job id, is the job id requested for your update, and is displayed in status, while the requested update is happening increments playlist version by 1 NOTE: to update a number of paths/songs at once, use command_list, it will be much more faster/effecient volume <int change> change volume by amount _change_ NOTE: volume command is deprecated, use setvol instead COMMAND LIST ------------ To facilitate faster adding of files, etc, you can pass a list of commands all at once using a command list. The command list beings with: command_list_begin or: command_list_ok_begin And ends with: command_list_end It does not execute any commands until the list has ended. The return value is whatever the return for a list of commands is. On success for all commands, OK is returned. If a command fails, no more commands are executed and the appropriate ACK error is returned. If "command_list_ok_begin is used", "list_OK\n" is returned for each successful command executed in the command list.