MinimServer

Home

Donate

Features

Downloads

Installing

Release notes

User guide

Support

Troubleshooting

Forum

MinimStreamer

License

UPnP AV

Technology

Contact

Latest news

Added support for digital booklets

Latest change

MinimServer update 97 has been released

Other features

Table of contents

Transcoding
UPnP Search
Searching for artist roles
Numeric sorting
HTTP server port
UPnP service port
UPnP subnet
Custom tag settings
Delaying startup
Resource information
All tags summary
Tag update
Tag update file

» User guide main contents

Transcoding

From 0.8.1 onwards, transcoding for MinimServer is provided by the MinimStreamer package. See the MinimStreamer website for details.

UPnP Search

MinimServer supports UPnP Search. If your control point supports UPnP Search, you can use your control point to do full-text searches of the contents of your MinimServer library.

Searching for artist roles

MinimServer supports UPnP Search queries for artist roles. If your control point supports this capability, you can search your library for matches based on artist roles such as Composer or Conductor. For example, a control point could send MinimServer any of the following search queries:

As a further enhancement, MinimServer supports grouping search results by artist roles. For example, a control point could send MinimServer a search query for composers that match "Gabrieli" with results grouped by composer name. This query would find all items with the composer "Andrea Gabrieli" or "Giovanni Gabrieli" but would not find any additional items with the artist "Gabrieli Consort". The search results would be a list of matching composer names and selecting any of these composer names would show all matching albums, items and index tags for the selected composer.

Numeric sorting

MinimServer uses a combination of alphabetic and numeric sorting. Positive integers in tag values are sorted in numeric order, so "Symphony 2" is sorted before "Symphony 10". Adding a leading zero to a number produces a smaller sort value, so "02" is sorted before "2" and after "1".

HTTP server port

MinimServer includes an HTTP server for use by music browsers and music players to retrieve audio files and image data. By default, this HTTP server listens on port 9790. If you want to change this port number to some other value (for example, to avoid a conflict with another application that's using the same port), you can set the http.port property to any available port number.

This port is also used for viewing the MinimServer status page in a web browser. For details, see the Web browser status page section.

UPnP service port

MinimServer uses the value of the ohnet.port property as the preferred port number for UPnP service communication that will be advertised to control points using the standard mechanisms in the UPnP discovery protocol. If the specified port number is not available, MinimServer allocates a port number dynamically. The default value for the ohnet.port property is 9791.

It's important to set the ohnet.port property to a different port number than the http.port property. Also, after changing the ohnet.port setting, you need to do a complete restart of the MinimServer application, not just a media server restart from the minim icon. For example, if you're running MinimServer on a QNAP NAS, you need to disable and enable MinimServer from the QNAP administrator console. This is because a restart from the minim icon doesn't restart the ohNet UPnP stack.

UPnP subnet

MinimWatch communicates with MinimServer using a single subnet only. If you have multiple active network adapters (real or virtual) on the machine running MinimWatch and these adapters are configured to use different subnets, it is unpredictable which adapter and subnet will be chosen by MinimWatch. If the wrong adapter and subnet is chosen, MinimWatch might not be able to discover and communicate with MinimServer. You can solve this problem by setting the ohnet.subnet property on the MinimWatch properties page (not the MinimServer properties page) to the subnet you want MinimWatch to use. To display the MinimWatch properties page, select Options followed by Properties (watch) from the minim icon.

By default, the MinimServer media server communicates with control points and media renderers on all available subnets except for the loopback subnet. In some situations, you might want to configure the MinimServer media server with access to a single specific subnet, which could be the loopback subnet. You can do this by setting the ohnet.subnet property on the MinimServer properties page to the specific subnet you want MinimServer to use. To display the MinimServer properties page, select Properties from the minim icon.

The ohnet.subnet property value must be a valid IPv4 address (n.n.n.n with 0 ≤ n ≤ 255). This value is compared with the masked addresses of all available subnets. The first available subnet that produces a match is used. If there is no matching available subnet, an error is raised.

As an example, if the devices you want to access from MinimWatch or MinimServer are are in the range between 192.168.1.1 and 192.168.1.254, the ohnet.subnet property should be set to 192.168.1.0.

Custom tag settings

There are variations in how different control points interpret the XML metadata that MinimServer sends to the control point. To accommodate these differences, MinimServer provides settings that allow you to customize some aspects of this XML metadata.

The settings described in this section control the format of the XML metadata for tracks and albums that MinimServer sends to the control point. For most control points, this metadata is used to display track and album information on the Now Playing screen and for playlists and album contents.

These settings don't affect the contents of the index lists that MinimServer creates and sends to the control point when you are browsing your library. However, some control points (for example, the LUMIN app) create their own index lists using XML metadata information and these index lists might be affected by these settings.

You can use the tagCustom property to specify a comma-separated list of settings for special handling of XML metadata sent to the control point. Each setting consists of the audio tag name to which it applies (such as Composer or AlbumArtist) followed by the setting name. If the setting requires a value, the setting name is followed by an equals sign and curly braces enclosing the value. For example, Composer.displayRole={artist} specifies the value 'artist' for the 'displayRole' setting for the Composer tag.

For settings that don't have a value, the setting can optionally be preceded by '+' to enable the setting or '-' to disable it. If neither of these is specified, '+' is assumed. For example, -AlbumArtist.display.multiTag disables the 'display.multiTag' setting for the AlbumArtist tag.

A setting can be applied to all audio file tags by using the special value 'all' or '[all]' as the audio tag name. For example, all.display.multiTag enables the 'display.multiTag' setting for all audio tags. This 'all' setting can be overriden for individual audio tags. For example,
 all.display.multiTag, -Genre.display.multiTag
enables the 'display.multiTag' setting for all audio tags except Genre.

The following settings are available:

display.multiTag  If this setting is disabled (the default value) and there are multiple values for the same audio file tag (such as Artist or Genre), these values are combined and sent to the control point as a single XML tag. The contents of this XML tag can be customized using the displayFormat setting of the tagFormat property (see the Tag formatting section).

If this setting is enabled and there are multiple values for the same audio file tag (such as Artist or Genre), these values are sent to the control point as separate XML tags. This setting is useful for control points that can handle multiple XML tags of the same type, such as the LUMIN app. In this case, the displayFormat setting of the tagFormat property can't be used for this audio tag.

displayRole  This setting requires a value. The value is a string containing 'artist' or 'author or both of these separated by a comma. MinimServer sets an initial default value of 'artist' for AlbumArtist and also sets an initial default value of 'artist' for Composer if this appears in the indexTags or itemTags property. You can change or remove these settings if necessary.

If 'artist' is present, MinimServer sends the audio file tag value using the XML tag <upnp:artist role="tagname"> where tagname is the name of the audio tag. If 'author' is present, the tagged value is sent as the XML tag <upnp:author role="tagname">.

This setting is useful for customizing the way composer information is sent to the control point. For example, if you don't see composer information in your control point when using the default setting of 'artist', you can change the setting to 'author'. (This setting is needed for ChorusDS.) If you're using multiple control points that expect this information to be sent in different formats, you can use the setting 'artist, author' to send both XML tags.
display.artistRole  [DEPRECATED] This setting has been replaced by the displayRole={artist} setting (see above). It will be removed in a future release.

Delaying startup

You can use the delayStart property to delay MinimServer startup by a specified number of seconds before it starts reading the content directories. This can be useful when a content directory is on an external or networked disk which isn't yet mounted when MinimServer is started (for example, when resuming or restarting Mac OS X).

Resource information

You can use the resourceInfo property to control whether resource usage information will be displayed in the log. The value of this property is a number that specifies how frequently resource information will be displayed in the log during MinimServer startup. For example, if the value is 500, resource information will be displayed at intervals of scanning 500 files.

If the resourceInfo property was used to display resource information during MinimServer startup, resource usage will be monitored while MinimServer is running, and resource information updates will be displayed at regular intervals during MinimServer activity.

All tags summary

You can see a summary of all the tags in your audio files by setting the writeAllTags property to the name of an "all tags" file into which MinimServer will write a sorted list of all tag names and values in your audio files. The data written does not include any tag changes made by the aliasTags and tagUpdate properties. This file is written or rewritten every time MinimServer rescans the library.

You can initiate a rescan by selecting Rescan from the minim icon (see this section) or by using the rescan command from the console interface (see this section). MinimServer also does a rescan on startup if the startupScan property is set to true or full.

Note: Restarting MinimServer by selecting Restart from the minim icon or by using the restart command from the console interface does not perform a rescan. Similarly, relaunching MinimServer by selecting Relaunch from the Packages tab or by using the relaunch command from the console interface does not perform a rescan.

The contents of the "all tags" file can be useful as a template for copying the correct format of tag values into a tag update file.

Tag update

When MinimServer reads tag data from your audio files, you can apply tag updates (changes, additions and deletions) to the tag data that MinimServer uses internally. This is similar to performing a global search and replacement operation on all the tag data in all your music files, expect that the changes are made internally within MinimServer and don't affect the contents of your audio files on disk.

The tag update facility can be useful for making experimental changes to your tags without changing your audio files. For example, if you're considering reorganizing some aspects of the way you index your library, you might find it helpful to try out the effect of these changes before you apply them permanently to your audio files.

To use the tag update facility, you need to set the tagUpdate property to the name of a tag update file. This file can be in any folder on the computer or NAS that's running MinimServer. The tag update file contains one or more groups of search and replacement operations. For example, to replace all Composer tags for 'J. S. Bach' with the value 'Johann Sebastian Bach', your tag update file would contain the following lines:

@COMPOSER=J. S. Bach
=COMPOSER=Johann Sebastian Bach

This performs a simple one-for-one replacement of one tag value by another. You can also add tag values. For example, if you want to replace the single tag
 ARTIST=John Eliot Gardiner, The Monteverdi Choir
with separate tags for Artist and Conductor, you can put the following in your tag update file:

@ARTIST=John Eliot Gardiner, The Monteverdi Choir
=ARTIST=The Monteverdi Choir
+CONDUCTOR=John Eliot Gardiner

We've seen how to replace a single tag value. In some cases, you need to be able to look for a combination of tags. For example, to replace the pair of tags
 GENRE=Piano
 GENRE=Concerto
with the single tag
 GENRE=Piano concerto
in all your audio files that have this combination of tags, you would use the following tag update file:

@GENRE=Piano
&GENRE=Concerto
=GENRE=Piano concerto
@GENRE=Concerto
&GENRE=Piano
-GENRE=Concerto

This file contains two groups of update instructions. The first update group looks for the combination of GENRE=Piano and GENRE=Concerto and replaces the GENRE=Piano tag with a GENRE=Piano concerto tag. The second update group looks for the same combination and removes the GENRE=Concerto tag.

In this section, we've given some examples of the changes you can make to your tags using the tag update facility. For a formal description of how the tag update file works, see the following section.

Tag update file

To enable tag updating in MinimServer, you need to set the tagUpdate property to the name of a tag update file. This file can be in any folder on the computer or NAS that's running MinimServer. The tag update file consists of a sequence of text lines, where the first text character of each line identifies the line as a match instruction or update instruction, using the syntax:

<instruction-type><tag-name>=<tag-value>

The tag update file is encoded using the UTF-8 character set. The tag match values in this file must match tag values in your audio files using an exact case-sensitive comparison. You might find it helpful to use the writeAllTags property to see the correct format for the entries in this file.

Match instructions and update instructions are combined into update groups, with each update group consisting of one or more match instructions followed by one or more update instructions. The match instructions identify which audio files will be changed, and the update instructions specify what tag changes will be made to these files.

The following instruction types are supported:

@   This line is a match instruction and starts a new update group that applies to all audio files containing a tag matching this line (and any immediately following "&" lines if present). The tag values are matched using an exact case-sensitive comparison.
& This line is a match instruction and is used after an "@" line to add an additional match condition for the update group. More than one "&" line can appear after an "@" line. The tag values are matched using an exact case-sensitive comparison.
= This line is an update instruction to replace the value of a tag. The rest of the line specifies the tag name (which must be the same tag name used in the preceding "@" line) and the replacement value for this tag. This instruction must be the first update instruction in an update group (that is, directly following an "@" line and optionally one or more "&" lines).
- This line is an update instruction to delete a tag. The rest of the line must exactly match the preceding "@" line. This instruction must be the first update instruction in an update group (that is, directly following an "@" line and optionally one or more "&" lines).
+ This line is an update instruction to add a new tag. The rest of the line specifies the new tag name and its value. This instruction can be the first update instruction in an update group or it can follow an "=" line, a "-" line, or another "+" line.
Any lines that don't start with one of these characters are ignored.

If you'd like to see a detailed list of tag changes made by the tag update file, you can set set the writeTagChanges property to the name of a file into which MinimServer will write a list of tag changes. This file will be written every time MinimServer is started.

IMPORTANT: MinimServer makes these tag changes internally when it reads your audio files. You'll see the changes in your control point, but MinimServer doesn't write any tag changes to your audio files. To do this, you need to use a separate tagging program such as Mp3tag.