de7478723f43ecc9e5e7f3e2cb87af03cd4ce984
Introduction
============
Cantata is a GUI front-end for MPD. The code is forked from QtMPC. However,
both the code itself, and the GUI are now *very* different to QtMPC.
Dependencies
============
Cantata requires/uses the following libraries:
1. Qt4
2. KDElibs4 - if Cantata is not built with KDE4 support, then device support
will not be available.
3. QtWebKit - required for the artist/album information page. If QtWebKit is
not found, the page will not be built.
4. TagLib - required to for the tag edit dialog, and for UMS device support.
5. LibMTP - required to support MTP devices.
6. FFMPEG (libavcodec) - used for ReplayGain detection.
7. SpeexDSP - used by ReplayGain detection code.
8. MPG123 - used for ReplayGain detection (optional).
Translations
============
Cantata is mainly a KDE-based application, but it can be compiled as Qt only.
Because of its KDE base, the translation files are based upon KDE's i18n
framework - these are located with the 'po' folder.
Translations for the Qt-only builds are created from the KDE translations using
'lconvert'. To work-around issues with plural translations, each string that
can have a plural, has 3 entries in the .pot/po file - e.g. for 'Albums' we
have:
0 Albums
1 Album
%1 Albums
The first form is when there are no albums, the second for only 1 album, and
the third for any other count. This should (hopefully) cover all cases.
Covers
======
When displaying covers, Cantata will load album covers in the following order:
...if MPD folder exists, is not specified as a http URL, and is readable, then
cantata will look for the following within the folder containing the song:
1. cover.jpg
2. cover.png
3. AlbumArt.jpg
4. AlbumArt.png
5. folder.jpg
6. folder.png
7. ${file}.jpg
8. ${file}.png
9. ${albumArtist} - ${album}.jpg
10. ${albumArtist} - ${album}.png
11. ${album}.jpg
12. ${album}.jpg
13. Image embedded within current songs tags.
14. ANY other jpg, or png
...then Cantata will check its cache folder (~/.cache/cantata/covers), for :
15. ${albumArtist}/${album}.jpg
16. ${albumArtist}/${album}.png
...if compiled for Linux
17. Matching Amarok cover
18. Matching Clementine cover
...if the MPD folder was specified as a http URL
19. ${url}/${dirFromFile}/cover.jpg
20. ${url}/${dirFromFile}/cover.png
...lastly
21. Query last.fm using ${albumArtist} and ${album}. Cantata will attempt to
download the image specified with the "extralarge" size.
Downloaded images will be saved as cover.jpg/png within the song folder if
possible. If not, then they will be saved in Cantata's cache folder.
For artist images:
...if MPD folder exists, is not specified as a http URL, and is readable, then
cantata will look for the following within the folder containing the song:
1. ${albumArtist}.jpg
2. ${albumArtist}.png
3. artist.jpg
4. artist.png
... the above will be repeated for each parent folder (until we reach the MPD
root folder)
...then Cantata will check its cache folder (~/.cache/cantata/covers), for :
5. ${albumArtist}.jpg
6. ${albumArtist}.png
...lastly
7. Query last.fm using ${albumArtist}. Cantata will attempt to download the
image specified with the "extralarge" size.
Downloaded artist images are saved to Cantata's cache folder.
Single/Double Click Activation
==============================
As of 0.8.3 Cantata forces single-click activation of items in the left hand
pages (e.g. Library view). To revert to having this controlled via the style,
you need to edit the Cantata config file. For a KDE build this will usually be
~/.kde/share/config/cantatarc, for a Qt-only build on Linux this will usually
be ~/.config/cantata/cantata.conf. For a windows build, you will need to use
regedit and navigate to HKEY_CURRENT_USER/Software/cantata/cantata. The config
item to be changed is forceSingleClick in the General section. e.g.
[General]
albumFirst=false
...
forceSingleClick=true
groupMultiple=true
...
Amarok Radio Streams
====================
The script amarok2cantata.sh may be used to covert Amarok Radio plugins
into an XML file suitable to be imported into Cantata. The script is
rather basic and requires the Amarok plugin to list its streams in 'main.js'
with the following syntax:
Station( "NAME", "URL")
Each station *must* be on its own line, and must be all in *one* line.
'script.spec' is used to ascertain the Amarok plugin name, for this the
script will look for the line starting with "Name="
Dynamic Helper Script
=====================
When a dynamic playlist is loaded in Cantata, the cantata-dynamic helper script
is executed in the background to do the actual song selection. In this way the
dynamic playlist can still function even when cantata is terminated. It is
possible for this script to be controlled on the command line (although it was
never written with this in mind).
The list of dynamic playlists may be obtained by looking in
~/.config/cantata/dynamic
To 'load' a dynamic play list, all you need to do is symlink the desired one in
~/.config/cantata/dynamic to ~/.cache/cantata/dynamic/rules. Then you can start
the helper by calling '/usr/lib/kde4/libexec/cantata-dynamic start' (or first
call '/usr/lib/kde4/libexec/cantata-dynamic stop' to stop any current play list).
To pass connection details, cantata-dynamic reads the same environment variables
as mpc - namely MPD_HOST and MPD_PORT
e.g. the following bash script (not tested!) will stop any current dynamic
playlist, load the 'MyPlaylist' playlist, and start this on the mpd at
'hostname:1234' with password 'pass'
# Stop current dynamic playlist
/usr/lib/kde4/libexec/cantata-dynamic stop
# Clear the playqueue (this requires mpc)
MPD_HOST=pass@hostname MPD_PORT=1234 mpc clear
# 'Load' new playlist
if [ -f "$HOME/cache/cantata/dynamic/rules" ] ; then
rm "$HOME/cache/cantata/dynamic/rules"
fi
ln -s "$HOME/config/cantata/dynamic/MyPlaylist.rules" "$HOME/cache/cantata/dynamic/rules"
# Restart dynamic script
MPD_HOST=pass@hostname MPD_PORT=1234 /usr/lib/kde4/libexec/cantata-dynamic start
Credits
=======
Cantata contains code/icons from:
Amarok - amarok.kde.org
Clementine - www.clementine-player.org
libmaia - https://github.com/wiedi/libmaia
libebur128 - https://github.com/jiixyj/libebur128
wikipedia icon - Social Media Mini by Paul Robert Lloyd License: Commons licence: Attribution-Share Alike 2.0 UK: England & Wales
Windows
=======
To compile for windows:
1. Install Qt, MinGW, cmake, TagLib. TagLib will probably need compiling.
2. Call cmake:
cmake ../cantata -G "MinGW Makefiles" -DTAGLIB_INCLUDES="C:\taglib\include" -DTAGLIB_LIBRARIES="C:\tagglib\bin\libtag.dll"
3. make! :-)
This build is as per Qt-only, but does not have support for dbus, dockmanager,
or dynamic playlists.
To run you will also need Oxygen icons.
Languages
C++
93.7%
CMake
3.6%
Perl
1.4%
C
0.7%
Objective-C++
0.3%
Other
0.2%