JRiver Media Center (JMC) is the best application I have found for playing and managing a large music collection on Mac OS X. It is not free software—and major version upgrades also cost money—but I have derived great value from it over the last several years. If you don’t aready have a copy you can purchase it direct from JRiver.
This page is a repository of information related to using JMC, particularly in combination with Traktor for digital DJing. Some killer features for DJs and musicologists: built-in waveforms for visual analysis of track structure, a highly configurable browser with multiple filters for drilling down to exactly what you’re looking for, “smartlists” (playlists generated from search parameters), and an expression language for more complex data manipulations.
Smartlists are generated according to rules defined by the user. I use these for all sorts of different tasks, from missing file and quality checks to deduplication and accessing label and artist discographies. The graphical user interface allows for chaining rules but if you want to do anything more elaborate you’ll need to click the
Import / Export button. Here you can enter an expression, evaluated left to right, and create logical groups using the operator “or” and paretheses. Some examples:
- Missing files:
- File quality check:
[Media Type]=[Audio] (-[Bit Depth]=16 or -[Sample Rate]=44100 or -[File Type]=[flac])(show all files that aren’t in the standard 16-bit/44.1kHz FLAC format; from here you’ll probably want to Convert Format)
- File names not synced with tags:
[=IsEqual([Filename (name)], [Artist] - [Name].[File type])]=0
- Show duplicate files based on various criteria:
~dup=[Artist],[Name]are all useful for identifying duplicates in a collection
In an ideal world there would be one standard tag for rating tracks that all media players would consume. Unfortunately this is not the case; metadata usage patterns have evolved over time and different software support a variety of tags for equivalent metadata. Traktor, for example, uses the
RATING WMP tag whereas Media Center uses the
RATING tag for track ratings. The practical consequence of this mismatch is that ratings do not sync between these two systems without some additional effort. Solving this issue involves adding a field to the JMC library and populating it with the correct data:
- Create a custom library field by opening
Library & Folders>
Manage Library Fieldsand clicking
Add New Field(at the bottom left)
Rating WMPfor the field name exactly as printed (with a space)
0;51;102;153;204;255(these are the values for the star ratings in Traktor)
Save in file tagsto
If you have already added files to your library and/or rated tracks in Traktor you will want to run
Library Tools >
Update Library (from tags) on whatever files you wish to import ratings from.
It will be necessary to manually update this field after making changes to ratings in JRiver or Traktor to keep everything in sync. I use a smartlist for this purpose:
[Media Type]=[Audio] [=IsEqual(Math([Rating WMP] / 51), [Rating])]=0 [Rating]=>0 (show all audio files with a rating higher than zero where the
Rating WMP field does not match the
Rating field). From here you can use the tagging interface to set the
Rating WMP field to the correct value, which will be one of the acceptable values listed above (0, 51, 102, etc.). You can also copy and paste this expression into the Rating WMP field to automate the process:
=IfCase([Rating], 0, 1, 51, 2, 102, 3, 153, 4, 204, 5, 255)
This expression uses a conditional function to set the value based on the rating. The
IfCase function accepts an initial value, a mode (numeric in this case), and then a series of cases in sequence. If the rating is “1” it will output “51”; if the rating is “2” it will output “102”, and so on. Note: this expression only works one way, copying ratings in JMC to the field read by Traktor.
Customizing the browser window to provide links to Discogs and Google greatly facilitates research and tagging. Right-click just below the search form and you should be able to access the
Manage Links dialog. To add a link to Discogs, create a new link type and add the following expression to the
Search URL field:
https:////www.discogs.com//search//?type=all&q=Replace(Clean(Clean(Clean(removecharacters(Replace([Artist], Regex([Artist], /#(\[.*\])#/, 1),), /&/(/)/[/]), 0), 1), 2), / , +)+Replace(Clean(Clean(Clean(removecharacters(Replace([Name], Regex([Name], /#(\[.*\])#/, 1),), /&/(/)/[/]), 0), 1), 2), / , +)&layout=med
This is a somewhat more complicated and often less useful variation on the expression code above tuned for the artist and title search function:
https:////www.discogs.com//search//?type=all&title=Replace(Clean(Clean(Clean(removecharacters([Name], /&/(/)/[/]), 0), 1), 2), / , +)&artist=Replace(Clean(Clean(Clean(removecharacters([Artist], /&/(/)/[/]), 0), 1), 2), / , +)&advanced=1&layout=med
This expression will create a link suitable for use with Google:
https:////www.google.com//search?q=Replace(Clean(Clean(Clean(removecharacters(Replace([Artist], Regex([Artist], /#(\[.*\])#/, 1),), /&/(/)/[/]), 0), 1), 2), / , +)+Replace(Clean(Clean(Clean(removecharacters(Replace([Name], Regex([Name], /#(\[.*\])#/, 1),), /&/(/)/[/]), 0), 1), 2), / , +)&layout=med
Search & Replace
If you’re making extensive use of the comment field to store additional metadata you’ll invariably want to append values in addition to performing regular search and replace. Here you can use the expression language; search for
=[Comment] and replace it with
JMC has this annoying habit of picking up whatever images are laying around in a folder, applying them as cover art, and also copying those images whenever the associated audio files are moved. If you’re importing audio files from a variety of sources this may end up replicating random graphics in various parts of your collection, spreading cover art like contagion. The best way to deal with this is to periodically scan your collection for image files and delete them. This is best accomplished on the command line:
find . -name '*.jpg' -type f
-delete to remove.
JMC allows for user-defined global keyboard shortcuts but setting these up is far from intuitive. Additionally, any customization you do will be lost when upgrading to a new major version, as the configuration file normally resides within the application itself. I get around this by creating a symbolic link to a keyboard shortcut configuration file located outside the application folder, but this still means a new link has to be created with every upgrade.
Create a file named
Resource.xml at a path of your choosing. Now create the symbolic link on the command line:
ln -s ~/PathToResources/Resource.xml ~/Library/"Application Support"/"J River"/"Media Center 26"/Data/"Custom Resources"/Resource.xml (and remember to set the correct version number in the path). The contents of this XML file must match the example provided on the JRiver Wiki. Each
Entry corresponds to a shortcut;
Command attributes must match those referenced in the documentation under Media Center Core Commands.
Personally I like to have shortcuts for rating and filing tracks, as seen here:
<MJRS version="1.0"> <ACCELERATORS> <!-- Ratings Commands with Alt/Option 0 to clear and 1 through 5 to rate --> <Entry Key="Alt;0" Command="10023" Param="0" /> <Entry Key="Alt;1" Command="10023" Param="1" /> <Entry Key="Alt;2" Command="10023" Param="2" /> <Entry Key="Alt;3" Command="10023" Param="3" /> <Entry Key="Alt;4" Command="10023" Param="4" /> <Entry Key="Alt;5" Command="10023" Param="5" /> <!-- Move and replace --> <Entry Key="Alt;Z" Command="23035" Param="0" /> </ACCELERATORS> </MJRS>