JMPC Documentation

Error message

  • Deprecated function: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in _drutex_create_regex() (line 363 of /home/davemr/mo-seph.com/sites/all/modules/drutex/drutex.module).
  • Notice: Use of undefined constant filter - assumed 'filter' in preg_replace() (line 1 of /home/davemr/mo-seph.com/sites/all/modules/drutex/drutex.module(363) : regexp code).
  • Deprecated function: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in _filter_drutex_process() (line 315 of /home/davemr/mo-seph.com/sites/all/modules/drutex/drutex.module).
  • Deprecated function: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in _drutex_create_regex() (line 363 of /home/davemr/mo-seph.com/sites/all/modules/drutex/drutex.module).
  • Notice: Use of undefined constant filter - assumed 'filter' in preg_replace() (line 1 of /home/davemr/mo-seph.com/sites/all/modules/drutex/drutex.module(363) : regexp code).
  • Deprecated function: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in _filter_drutex_process() (line 315 of /home/davemr/mo-seph.com/sites/all/modules/drutex/drutex.module).
  • Deprecated function: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in _drutex_create_regex() (line 363 of /home/davemr/mo-seph.com/sites/all/modules/drutex/drutex.module).
  • Notice: Use of undefined constant filter - assumed 'filter' in preg_replace() (line 1 of /home/davemr/mo-seph.com/sites/all/modules/drutex/drutex.module(363) : regexp code).
  • Deprecated function: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in _filter_drutex_process() (line 315 of /home/davemr/mo-seph.com/sites/all/modules/drutex/drutex.module).
  • Deprecated function: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in _drutex_create_regex() (line 363 of /home/davemr/mo-seph.com/sites/all/modules/drutex/drutex.module).
  • Notice: Use of undefined constant filter - assumed 'filter' in preg_replace() (line 1 of /home/davemr/mo-seph.com/sites/all/modules/drutex/drutex.module(363) : regexp code).
  • Deprecated function: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in _filter_drutex_process() (line 315 of /home/davemr/mo-seph.com/sites/all/modules/drutex/drutex.module).
  • Deprecated function: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in _drutex_create_regex() (line 363 of /home/davemr/mo-seph.com/sites/all/modules/drutex/drutex.module).
  • Notice: Use of undefined constant filter - assumed 'filter' in preg_replace() (line 1 of /home/davemr/mo-seph.com/sites/all/modules/drutex/drutex.module(363) : regexp code).
  • Deprecated function: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in _filter_drutex_process() (line 315 of /home/davemr/mo-seph.com/sites/all/modules/drutex/drutex.module).
  • Deprecated function: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in _drutex_create_regex() (line 363 of /home/davemr/mo-seph.com/sites/all/modules/drutex/drutex.module).
  • Notice: Use of undefined constant filter - assumed 'filter' in preg_replace() (line 1 of /home/davemr/mo-seph.com/sites/all/modules/drutex/drutex.module(363) : regexp code).
  • Deprecated function: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in _filter_drutex_process() (line 315 of /home/davemr/mo-seph.com/sites/all/modules/drutex/drutex.module).
  • Deprecated function: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in _drutex_create_regex() (line 363 of /home/davemr/mo-seph.com/sites/all/modules/drutex/drutex.module).
  • Notice: Use of undefined constant filter - assumed 'filter' in preg_replace() (line 1 of /home/davemr/mo-seph.com/sites/all/modules/drutex/drutex.module(363) : regexp code).
  • Deprecated function: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in _filter_drutex_process() (line 315 of /home/davemr/mo-seph.com/sites/all/modules/drutex/drutex.module).
  • Deprecated function: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in _drutex_create_regex() (line 363 of /home/davemr/mo-seph.com/sites/all/modules/drutex/drutex.module).
  • Deprecated function: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in _drutex_unhide_all() (line 479 of /home/davemr/mo-seph.com/sites/all/modules/drutex/drutex.module).
  • Notice: Undefined index: tools in drutex_submodule_is_active() (line 635 of /home/davemr/mo-seph.com/sites/all/modules/drutex/drutex.module).
  • Notice: Undefined index: verbatim in drutex_submodule_is_active() (line 635 of /home/davemr/mo-seph.com/sites/all/modules/drutex/drutex.module).
  • Notice: Undefined index: numbering in drutex_submodule_is_active() (line 635 of /home/davemr/mo-seph.com/sites/all/modules/drutex/drutex.module).

==Running==
This assumes that you have downloaded all the required libraries, and they are on your classpath. I'm also assuming that you have a jar file with the relevant classes in.

There are two classes of interest: Complete and Controls

Complete is the full version of JMPC, while Controls provides a small display and play/pause etc.

If you have the FatJar from the download page, you can just run:

java -jar

otherwise, you can specify the class you want:

java -jar com.moseph.jmpc.Complete

or

java -jar com.moseph.jmpc.Controls

==First Run==
The first time JMPC is run, it will use a default config, which will then be saved in $HOME/.JMPC/config.

You will have to set up your system on the config page:

* set your host and port to wherever your mpd is running (and hit reconnect if necessary)
* if you set playlistDir to wherever mpd keeps it's playlists, you will be able to edit stored playlists.
(This will not work if mpd is on another machine, or you do not have privileges etc.)
* if you set musicRoot to the root of mpd's music collection, you will be able to edit the ID3 tags of MP3 files.
* scheduleFile controls where mpd saves its schedule. You can generally ignore this.

The "Browse Tree Config" allows you to choose how you want to browse your music files; each row is a separate tab, with the tree structured according to the values in the dropdown boxes. You can ignore this until you want to change it.

Now you should hit "Apply" and "Save" to save your configuration.

==General Use==
Most things in JMPC should be fairly obvious. Instead of proper documentation, here are some hints:

* many things have menus on the right button
* the middle button can be used to add items from a browse tree into the current playlist
* drag and drop can be used to add music to different playlists etc.
* The "search" box at the bottom of browse trees accepts regular expressions
* Buttons with ^ on will pop up a menu
* Genres are only usable with mpd 0.12 or greater.
* The scheduler takes a date in the format 12:00 29/03/2010 and a series of commands, separated by semicolons. At the specified time, the commands will be sent to mpd, and the output reported in the box shown.
* The schedule will be saved when you exit so long as you have saveSchedule set to "true" in the config (the default). Scheduled events will not happen if JMPC is not running...
* If you just give the scheduler a time (e.g. 09:00) it will add the next occurence of that hour - i.e. if added at midday, it will schedule the event at 9 tomorrow. If run at 08:30, it will happen in half an hour.
* the Tag Editor can be used to tag many files at once. The Set Artist/Album etc. buttons in the top panel set the values in the box for all of the files. The Regex buttons will treat the string as a regex, and match it against the track's filename. If it matches will set the field of each track to the value of the first captured group. See the screenshot on the main page for an example of this in action. NOTE: the regex has to match the whole filename, so you proabaly want to start or end with ".*"
* The Tag Editor only changes files when you hit write . This is both to protect your files, and because writing is slow. If you clear the tag editor without writing, your changes will be lost.
* Pressing Number in the tag editor will number the tracks being edited sequentially.