</refmeta>
<refnamediv>
<refname>&dhutils;</refname>
- <refpurpose>&dhpackage; will try to maintain some titles ahead in your play
- list following different policies. This manual document the
+ <refpurpose>&dhpackage; will try to maintain some titles ahead in the queue
+ following different policies. This manual document the
configuration file for &dhpackage;.</refpurpose>
</refnamediv>
<refsect1 id="description">
<para></para>
<para></para>
</refsect2> -->
+ <refsect2 id="tags">
+ <title>File tags queue mode (offline mode).</title>
+ <para>Here is an example of autoqueue using file tags only.</para>
+ <programlisting><xi:include href="tags.cfg" parse="text" />
+ </programlisting>
+ </refsect2>
<refsect2 id="album">
- <title>Album queue mode.</title>
- <para>Here is an example of album queue configuration.</para>
+ <title>Album queue mode using last.fm recommendations (online mode).</title>
+ <para>Here is an example of album queue configuration using online recommendations system.</para>
<programlisting><xi:include href="album.cfg" parse="text" />
</programlisting>
</refsect2>
</variablelist>
</refsect2>
<refsect2 id="log">
- <para>Configure logging.</para>
<title>log section</title>
+ <para>Configure logging.</para>
<variablelist>
<varlistentry> <!-- LOG -->
<term><option>[log]</option></term>
<varlistentry> <!-- log.logfile -->
<term><option>logfile=</option></term>
<listitem>
- <para>File to log to, usually in dæmon mode.<sbr />Defaut
+ <para>File to log to, usually in dæmon mode.<sbr />Default
(empty or unset) is to log to stdin/stdout.</para>
</listitem>
</varlistentry>
</varlistentry>
</variablelist>
</refsect2>
- <refsect2 id="sima">
- <title>sima section</title>
- <para>This section allows you to tweak core &dhutils; configuration.</para>
+ <refsect2 id="daemon">
+ <title>Process daemonization</title>
+ <para>Configure process daemon.</para>
<variablelist>
- <varlistentry> <!-- SIMA -->
- <term><option>[sima]</option></term>
+ <varlistentry> <!-- DAEMON -->
+ <term><option>[daemon]</option></term>
<listitem><para></para></listitem>
</varlistentry>
- <varlistentry> <!-- sima.history_duration -->
- <term><option>history_duration=</option><replaceable>8</replaceable></term>
+ <varlistentry> <!-- daemon.daemon -->
+ <term><option>daemon=false</option></term>
<listitem>
- <para>How far to look back in history to avoid to play
- twice the same track/title (duration in
- hours).</para>
+ <para>whether to daemonize process or not.</para>
</listitem>
</varlistentry>
- <varlistentry> <!-- sima.queue_length -->
- <term><option>queue_length=</option><replaceable>1</replaceable></term>
+ <varlistentry> <!-- daemon.pidfile -->
+ <term><option>pidfile=</option></term>
<listitem>
- <para>This value triggers queue process if the play
- list length is less than specified
- queue_length.</para>
- </listitem>
- </varlistentry>
- <varlistentry> <!-- sima.user_db -->
- <term><option>user_db=</option><replaceable>false</replaceable></term>
- <listitem>
- <para>Temporarily removed feature</para>
- <!--<para>Look for user defined similarities in user data base.</para>-->
+ <para>Where to store process ID.</para>
</listitem>
</varlistentry>
</variablelist>
- <para>&dhpackage;'s plugin management for internal source plugin
- and contrib (ie. external plugins).<sbr /> Plugins list is a
- comma separated string list.<sbr /> Optional plugin's
- configuration lays in its own section.<sbr />For instance a
- "AwesomePlugin" declared here gets its configuration from the
- corresponding section "[awesomeplugin]".<sbr />internal plugins
- will look for a section named after the lower-cased name of the
- pluglin, ie. RandomFallBack → randomfallback.
- </para>
+ </refsect2>
+ <refsect2 id="sima">
+ <title>sima section</title>
+ <para>Core &dhutils; configuration.</para>
<variablelist>
- <varlistentry> <!-- sima.internal -->
- <term><option>internal=</option><replaceable>Crop, RandomFallBack, Lastfm</replaceable></term>
- <listitem>
- <para><option>Crop</option> and <option>RandomFallback</option>
- are utilities plugins while <option>Lastfm</option> is the
- actual queue plugin.<sbr /> Another queue plugin is available as
- a "techno preview", it relies on EchoNest web services, replace
- <option>LastFm</option> with <option>EchoNest</option> to try.</para>
- </listitem>
- </varlistentry>
- <varlistentry> <!-- sima.contrib -->
- <term><option>contrib=</option><replaceable></replaceable></term>
- <listitem>
- <para></para>
- </listitem>
+ <varlistentry> <!-- SIMA -->
+ <term><option>[sima]</option></term>
+ <listitem><para></para></listitem>
</varlistentry>
+ <variablelist>
+ <varlistentry> <!-- sima.contrib -->
+ <term><option>contrib=</option><replaceable></replaceable></term>
+ <listitem>
+ <para></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry> <!-- sima.internal -->
+ <term><option>internal=</option><replaceable>Lastfm, Random, Crop</replaceable></term>
+ <listitem>
+ <para>&dhpackage;'s plugin management for internal source plugin
+ and contrib (ie. external plugins).<sbr /> Plugins list is a
+ comma separated string list.<sbr /> Optional plugin's
+ configuration lays in its own section.<sbr />For instance a
+ "AwesomePlugin" declared here gets its configuration from the
+ corresponding section "[awesomeplugin]".
+ </para>
+ <para>The default list of plugins to load at startup: <option>Lastfm</option>,<option>Random</option>,<option>Crop</option>.<sbr />
+ <option>Crop</option> is an utility plugin, it does not queue any tracks (cf. below).<sbr />
+ <option>Random</option> will queue a track at random if other plugins did not return any tracks.<sbr />
+ </para>
+ <para>You can add, combine here as many plugins you want.<sbr />
+ The priority may be used to order them.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry> <!-- sima.history_duration -->
+ <term><option>history_duration=</option><replaceable>8</replaceable></term>
+ <listitem>
+ <para>How far to look back in history to avoid to play
+ twice the same track/title (duration in
+ hours).<sbr />
+ The <option>history_duration</option> is also used to give priority to not recently played artists.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry> <!-- sima.queue_length -->
+ <term><option>queue_length=</option><replaceable>2</replaceable></term>
+ <listitem>
+ <para>Threshold value triggering queue process.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry> <!-- sima.musicbrainzid -->
+ <term><option>musicbrainzid=</option><replaceable>true</replaceable></term>
+ <listitem>
+ <para>Use MusicBrainzIdentifier to search music (mainly
+ for artists).
+ Default is True, switch to False if you don't have
+ MusicBrainzIdentifier set for at least 80% of you
+ music library.<sbr /> Consider using these metadata as it
+ enhances a lot artist/album/tracks identification.
+ Use Picard to tag your file: <ulink url="https://picard.musicbrainz.org/"/>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry> <!-- sima.repeat_disable_queue -->
+ <term><option>repeat_disable_queue=</option><replaceable>true</replaceable></term>
+ <listitem>
+ <para>Prevent disabling queuing in repeat play mode.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry> <!-- sima.single_disable_queue -->
+ <term><option>single_disable_queue=</option><replaceable>true</replaceable></term>
+ <listitem>
+ <para>Prevent disabling queuing in single play mode.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
</variablelist>
</refsect2>
<refsect2 id="crop">
<term><option>[crop]</option></term>
</varlistentry>
<varlistentry> <!-- crop.consume -->
- <term><option>consume=</option><replaceable>0</replaceable></term>
+ <term><option>consume=</option><replaceable>10</replaceable></term>
<listitem>
- <para>How many played tracks to keep in the play list.
- Allow to maintain a fixed length play list.
- Set to 0 to keep all played tracks.
+ <para>How many played tracks to keep in the queue.
+ Allows you to maintain a fixed length queue.
+ Set to some negative integer to keep all played tracks.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry> <!-- crop.priority -->
+ <term><option>priority=</option><replaceable>10</replaceable></term>
+ <listitem>
+ <para>
+ Plugin priority
</para>
</listitem>
</varlistentry>
</refsect2>
- <refsect2 id="randomfallback">
- <title>RandomFallback section</title>
- <para>RandomFallback plugin's configuration:</para>
- <varlistentry> <!-- randomfallback -->
- <term><option>[randomfallback]</option></term>
+ <refsect2 id="random">
+ <title>Random section</title>
+ <para>Random plugin's configuration:</para>
+ <varlistentry> <!-- random -->
+ <term><option>[random]</option></term>
</varlistentry>
- <varlistentry> <!-- randomfallback.flavour -->
+ <varlistentry> <!-- random.flavour -->
<term><option>flavour=</option><replaceable>sensible</replaceable></term>
<listitem>
<para>When no similar tracks are found, falling back to
</para>
</listitem>
</varlistentry>
+ <varlistentry> <!-- random.priority -->
+ <term><option>priority=</option><replaceable>50</replaceable></term>
+ <listitem>
+ <para>
+ Plugin priority
+ </para>
+ </listitem>
+ </varlistentry>
</refsect2>
<refsect2 id="lastfm">
<title>LastFm section</title>
- <para>This section allows you to tweak LastFM plugin's configuration.</para>
+ <para>LastFM plugin's configuration.</para>
<variablelist>
<varlistentry> <!-- lastfm -->
<term><option>[lastfm]</option></term>
<varlistentry> <!-- lastfm.max_art -->
<term><option>max_art=</option><replaceable>10</replaceable></term>
<listitem>
- <para>Number of similar artist to retrieve from local
+ <para>Maximum number of similar artist to retrieve from local
media library.<sbr />When set to something superior
to zero, it tries to get as much similar artists
from media library.</para>
<para>How many artists to base on similar artists
search.<sbr /> The first is the last played artist
and so on back in the history. Highter depth
- allows to get wider suggestions, it might help to
+ generates wider suggestions, it might help to
reduce looping over same artists.
</para>
</listitem>
<listitem>
<para>How many track(s) to add. Only relevant in
<option>top</option> and <option>track</option>
- queue modes.</para>
+ queue modes. This is actually an upper limit,
+ min(<option>max_art</option>,
+ <option>track_to_add</option>) will be used.</para>
</listitem>
</varlistentry>
<varlistentry> <!-- lastfm.album_to_add -->
<option>album</option> queue modes.</para>
</listitem>
</varlistentry>
+ <varlistentry> <!-- lastfm.track_to_add_from_album -->
+ <term><option>track_to_add_from_album=</option><replaceable>0</replaceable></term>
+ <listitem>
+ <para>How many track(s) to add from each selected albums. Only relevant in
+ <option>album</option> queue modes. When set to 0 or lower the whole album is queued.
+ </para>
+ </listitem>
+ </varlistentry>
<varlistentry> <!-- lastfm.cache -->
<term><option>cache=</option><replaceable>True</replaceable></term>
<listitem>
</para>
</listitem>
</varlistentry>
+ <varlistentry> <!-- lastfm.priority -->
+ <term><option>priority=</option><replaceable>100</replaceable></term>
+ <listitem>
+ <para>
+ Plugin priority
+ </para>
+ </listitem>
+ </varlistentry>
</variablelist>
</refsect2>
+ <refsect2 id="tags">
+ <title>Tags section</title>
+ <para>Tags plugin's configuration. There is no default configuration for this plugin, it does not work out of the box.</para>
+ <para>
+ This plugin permits offline autoqueuing based on files tags only. Supported tags are
+ <option>'comment'</option>, <option>'date'</option>, <option>'genre'</option>, <option>'label'</option> and
+ <option>'originaldate'</option>. It currently supports single track queuing only, no album mode for this plugin.
+ </para>
+ <para>
+ In addition to supported tags above you can use an MPD filter. Please refer to MPD protocol documentation for more.
+ </para>
+ <para>
+ All entries in this section are ANDed as a single MPD filter to look for titles
+ in the library. Moreover, with tags, comma separated values are also ANDed.<sbr />
+ For instance setting "<option>genre=rock</option>" and
+ "<option>date=1982,1983,1984,1985,1986,1987,1988,1989</option>"
+ will end up looking for track tagged with genre <option>rock</option>
+ and date within 1985 through 1990.<sbr />
+ Using an MPD filter to replace <option>date</option> you can achieve
+ the same with the following setting: "<option>genre=rock</option>" and
+ "<option>filter=(date =~ '198[2-9]')</option>" (provided your MPD server
+ was compiled with libpcre).
+ </para>
+ <varlistentry> <!-- tags -->
+ <term><option>[tags]</option></term>
+ </varlistentry>
+ <varlistentry> <!-- tags.filter -->
+ <term><option>filter=</option></term>
+ <listitem>
+ <para>You can use here any valid MPD filter as defined in MPD protocol documentation.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry> <!-- tags.comment -->
+ <term><option>comment=</option></term>
+ </varlistentry>
+ <varlistentry> <!-- tags.date -->
+ <term><option>date=</option></term>
+ </varlistentry>
+ <varlistentry> <!-- tags.genre -->
+ <term><option>genre=</option></term>
+ </varlistentry>
+ <varlistentry> <!-- tags.label -->
+ <term><option>label=</option></term>
+ </varlistentry>
+ <varlistentry> <!-- tags.priority -->
+ <term><option>priority=</option><replaceable>80</replaceable></term>
+ <listitem>
+ <para>
+ Plugin priority
+ </para>
+ </listitem>
+ </varlistentry>
+ </refsect2>
</refsect1>
<refsect1 id="queue_mode">
<title>QUEUE MODES</title>
- <para>&dhpackage; offers different queue modes. All of them pick up
- tracks from artists similar to the one currently played.</para>
+ <para>&dhpackage; offers different queue modes with lastfm plugin. All of them pick up
+ tracks from artists similar to the last track in the queue.</para>
<para>&dhpackage; tries preferably to chose among unplayed artists or
at least not recently played artist. Concerning track and album
queue modes titles are chosen purely at random among unplayed
and avoid album where this tag is set with "Various
Artists". If a single track within an album is found
with AlbumArtists:"Various Artists" the complete album
- is skipped and won't be queued.<sbr />
- It is planned to allow users to set the values of
- AlbumArtists tag triggering this behaviour. cf.
- feature request #2085 on the tracker.</para>
+ is skipped and won't be queued.</para>
</listitem>
</varlistentry>
</variablelist>
<xi:include href="feedback.xml" />
<xi:include href="seealso.xml" />
</refentry>
+<!-- vim: tabstop=4 softtabstop=4 shiftwidth=4 :
+-->