Difference between revisions of "MythMusic"

From MythTV Official Wiki
Jump to: navigation, search
Line 255: Line 255:
'''Looking for more?'''
'''Looking for more?'''
If you're running 0.21 or higher you can use libvisual visualizations.  An easy way to get them is to install the amarok-visualisation package which will add quite a few good ones to your Available Visualizations list.
If you're running 0.21 or higher you can use libvisual visualizations.  An easy way to some is to install the amarok-visualisation package which will add quite a few good ones to your Available Visualizations list.
=== Useful keys to know ===
=== Useful keys to know ===

Revision as of 15:05, 18 November 2007

MythMusic is a simple mythtv plugin that allows the system to play audio files .i.e MP3, Ogg, FLAC, wav etc using the MythTV GUI and remote.

MythMusic Install

Here we will go through the install process for MythMusic.


Package.png The prerequisites for MythMusic are:

  • MAD
  • id3tag (Replaced by Taglib in 0.21)
  • libvorbis-devel
  • FLAC
  • libcdaudio
  • CDParanoia
  • libfftw (if you want to enable FFTW, used for visualizations...)

Manual Install of Prerequisites

These instructions are for distributions which don't have pre-compiled versions of the software necessary to run MythTV.

Download MAD and libid3tag from http://www.underbit.com/products/mad/ Follow the link to download via FTP and save the files to a directory you can find later.

   $ tar -xzf mad-0.15.1b.tar.gz
   $ cd mad-0.15.1b
   $ ./configure
   $ make
   $ su
   # make install
   # exit
   $ cd ..
   $ tar -xzf libid3tag-0.15.1b.tar.gz
   $ cd libid3tag-0.15.1b
   $ ./configure
   $ make
   $ su
   # make install
   # exit
   $ cd ..

Download FLAC from http://flac.sourceforge.net and install:

   $ tar -xzf flac-1.1.2.tar.gz
   $ cd flac-1.1.2
   $ ./configure
   $ make
   $ su
   # make install
   # exit

Download libcdaudio from http://libcdaudio.sourceforge.net and install:

   $ tar -xzf libcdaudio-0.99.12p2.tar.gz
   $ cd libcdaudio-0.99.12p2
   $ ./configure
   $ make
   $ su
   # make install
   # exit

Download cdparanoia from http://www.xiph.org/paranoia/down.html.

   $ tar -xzf cdparanoia-III-alpha9.8.src.tgz
   $ cd cdparanoia-III-alpha9.8
   $ ./configure
   $ make
   $ su
   # make install
   # cd /usr/lib
   # ln -sf libcdda_interface.so.0.9.8 libcdda_interface.so
   # ln -sf libcdda_paranoia.so.0.9.8 libcdda_paranoia.so
   # exit

Distro Specific

Debian (or derivative)

As root run:

   # apt-get update
   # apt-get install libmad0 libmad0-dev libflac8 libflac-dev libcdaudio1 cdparanoia fftw3 fftw3-dev
   # apt-get install libcdda0 libcdda0-dev libvorbis0 libvorbis0-dev libcdaudio1-dev libid3tag0 libid3tag0-devel


As root:

  # emerge --sync
  # emerge -av mythmusic


Mandriva has a number of the prerequisites available on the installation CD. Some of the software you're going to need will have to be obtained from the "contrib" or "cooker" development repositories. Applications downloaded from "cooker" come from the development branch, so there may be issues with some software. It isn't recommended that you mix cooker and release-level software.

urpmi is the simplest tool for installation of packages from the command line. The difficult part is the configuration, but this has been made easier at the following website: http://addmedia.linuxfornewbies.org/ The website will allow you to choose a mirror site and then present the command-line configuration text for that mirror. You will most likely need to add a "Contrib" mirror to your setup. Once you have done that, you can proceed. If urpmi prompts you about other modules that need to be installed to satisfy dependencies, say "Yes".

   # urpmi libmad0 libmad0-devel libflac4 libflac4-devel libcdaudio1 cdparanoia
   # urpmi libcdda0 libcdda0-devel libvorbis0 libvorbis0-devel
   # urpmi libcdaudio1-devel libid3tag0 libid3tag0-devel

Additional options with MythMusic

Additional visualizations have been added to MythMusic. If you wish to use these, there are some prerequisites you must install prior to compiling.

  • fftw
  • OpenGL
  • SDL

fftw may be obtained from http://www.fftw.org/. In Mandriva it may be installed by typing:

   # urpmi libfftw2 libfftw2-devel

OpenGL should be installed on practically all distributions. However, you will need the devel module. In Mandriva it may be installed by typing:

   # urpmi libMesaGLU1-devel

SDL may be obtained from http://www.libsdl.org. In Mandriva it may be installed by typing:

   # urpmi libSDL1.2 libSDL1.2-devel

Redhat 9

Red Hat provides packages for several of the prerequisites, making installation very simple. Of the prerequisites, Red Hat provides packages for Vorbis, cdparanoia, SDL, and OpenGL (which you probably already have installed). To install these all at once, simply type (all on the same line):

   $ up2date --solvedeps libvorbis libvorbis-devel vorbis-tools cdparanoia-devel cdparanoia-libs cdparanoia SDL-devel SDL

If you get the following message: "None of the packages you requested were found, or they are already updated" it probably means you already have all of those packages installed.

You must install the remaining packages, (MAD, FLAC, libcdaudio and optionally fftw) manually following the installation directions above. When installing fftw do not use the rpm package offered on the website because it will cause an error, so use the source package instead.

Compiling MythMusic

Once all the prerequisites have been installed, you can proceed with compiling MythMusic.

   $ cd ~/mythplugins-0.19
   $ ./configure --disable-all --enable-mythmusic --enable-fftw --enable-sdl --enable-aac
   $ qmake mythplugins.pro
   $ make
   $ su
   # make install
   # exit

  • taken from mythtv.org documentation.

Configuring MythMusic

Configuration of MythMusic occurs in two places. The main mythfrontend Setup is for global MythMusic configuration. Go to the Setup/MythMusic/General Setup screen and adjust it for your particular configuration.

The second configuration screen is within the MythMusic program and will allow you rescan your music library, etc.

Here's some explanation about the Ignore_ID3 and The NonID3FileNameFormat:

If Ignore_ID3 is set to TRUE, MythMusic will try to determine the Genre, Artist, Album, Track Number, and Title from the filename of the mp3 file. The NonID3FileNameFormat variable should be set to the directory/file format where the mp3 files are stored. For instance, I store mine in the above shown Genre/Artist/Album/Track format. MythMusic will then use this information to fill in the proper fields when it populates the musicmetadata table rather than searching for an ID3 tag in the mp3 file.

The files can be laid out in any format, such as:

Genre/Artist/Album/Title Artist/Genre/Album/Title Artist/Album/Title (with Genre left as Unknown)

The track number is optional but can be specified with the title by using the TRACK_TITLE keyword instead of TITLE. If TRACK_TITLE is used, then the filename can have a space, hyphen, or underscore separating the track number from the track title. Keywords are case insensitive, so if you specify GENRE it's the same as Genre in the format field.

The Ignore_ID3 option does not disable the code that determines the track length, just the portion that tries to read ID3 info.

Note that if the structure of the directories is different than that as described in the NonID3FileNameFormat field, newly placed music will simply not show up when you select "Scan for New Music".

Linking Pre-Existing Audio Archive with MythMusic

I use RubyRipper to rip my CD Music library. I also prefer a much different directory and file layout then MythMusic uses. The RubyRipped files are my 'master'. MythMusic 'Scan for new music' will NOT successfully identify music files that are themselves symbolic links. Scanned files, for now, must be hard links. As space is a consideration though, I don't want to manage two sets of directories with duplicate copies of the same data. So, the solution is to do a HARD LINK from the master audio archive directory to the target mythtv/music directory. NOTE: Hard links must exist on the same file system. So, this only works if your audio library directory and mythtv director are on the same volume/partition.

This little perl script when run will find the all files under audioarchive/vorbis. It then splits the path. This script array elements 4,6,7 of that path align with genre/artist/album. Directories are created under /mythtv/music and a second HARD LINK is created to the master audio file. You'll need to adjust the array element numbering to match your archive path structure and also adjust the order for your MythMusic path.

I also modify the permissions of the '/mythtv/music' directory and files to be 'read-only' because I don't rip from MythMusic setup. While the built in ripper is very flexible and includes all the elements for creating a complex and unique hiearchy -- it doesn't support ripping multiple formats at once like RubyRipper, or swaping out the default ripper with a command reference to a ripper of choice.

So, note that if you use the permission settings in the perl script, all attempts to rip from the MythMusic interface should/will fail since the mythtv user has no write permissions under /mythtv/music.


$audioArchive = '/audioarchive/vorbis';
$mythMusic = '/mythtv/music';

@fileList = `find $audioArchive -type f -print`;

foreach $file (@fileList) {

        # The RubyRip setup is format/genre/year/artist/album/title
        # Constructing for MythMusic in genre/artist/album/title
        @rubyRip = split('/', $file);
        $mythMusicPath = join('/', ($mythMusic, $rubyRip[4], $rubyRip[6], $rubyRip[7]));

        next if ($rubyRip[8] == 'ripping.log');

        # Make first the directory structure genre/artist/album under mythMusic
        # and the symbolic link to the song titles.
        `mkdir -p "$mythMusicPath"`;    # -p no error on existing. Save Cyles with first -x check?
        if ($@) { print "ERROR Making Directory: $@\n"; exit (1); }

        # Now link the file.. [HARD LINKS]
        `ln "$file" "$mythMusicPath/$rubyRip[8]"`;
        if ($@) { print "ERROR Linking: $@\n"; exit (1); }


# Update perms
`chown -R mythtv.mythtv "$mythMusic"`;
`find "$mythMusic" -type d -exec chmod 555 {} \\;`;
`find "$mythMusic" -type f -exec chmod 444 {} \\;`;

Using MythMusic

MythMusic is fairly simple to use. It is recommended that you insert the CD before selecting "Import CD". You should also ensure that your system doesn't try to automount the CD and begin playing it automatically.

Playlist Management

Create/Saving a playlist.

You may enter the playlist management screen by pressing 3 from the "Play Music" screen or by selecting the "Select Music" option from the Music Tools menu.

Browse the entire collection from "All My Music". Add tracks to the current queue by pressing 'Select' to toggle the checkbox next to it's name. Entire Albums, Genres or Artists may be added in one go.

When you are happy with the selection you have chosen, scroll down to "Active Play Queue" and press any key. Type in the playlist name and then select "Copy to New Playlist".

Edit an existing playlist.

From the playlist management screen, browse existing playlists from "All My Playlists". Highlight the playlist and press the I/Menu key. Select "Move to Active Play Queue" from the menu. You can now modify the "Active Play Queue" like normal, adding songs and playlists by selecting them from the song tree.

When you are done, highlight the "Active Play Queue" in the selection tree and press the I/Menu then select "Save Back to Playlist Tree".

  • Rearrange the songs in a playlist. Highlight a song and hit the "space" bar, the song will now have pair of red arrows in front of it. Use the up and down arrow keys to move it around in the playlist. When you have it where you want it, hit the "space" bar again.
  • Delete an item from a playlist. Highlight the item in the selection tree and hit the "d" key.
  • Edit a text field without a keyboard. Press ENTER in the empty line edit control. A keyboard will pop up; you can use this keyboard to enter characters.
  • Delete a playlist. Highlight the playlist in the selection tree and hit the I/Menu key then select "Delete this Playlist" from the popup.


There are currently a number of visualizations for MythMusic that will be displayed in a small window when while the playlist is visible, but will be displayed full-screen when you change the visualization mode with by pressing '6'. Which of these visualizations are to be used can be specified as a space-separated list in the Setup menu for MythMusic.

  • Random - Switches to a different visualization for each song.
  • MonoScope - Standard spectrum analyzer, as found on many MP3 players such as XMMS and WinAmp.
  • StereoScope - Another spectrum analyzer. Left and right channels are drawn separately.
  • BumpScope - Similar to Monoscope above, but drawn as a "raised relief" on a flat surface (3D visualization)
  • Goom - The classic visualization of crazy lines and patterns.
  • Synaesthesia - A more amorphous visualization similar to plasma clouds displays
  • Spectrum -
  • Squares -
  • AlbumArt - This displays the album art for the currently playing music. Basically, any image in the same directory as the music file currently playing is treated as if it might be album art, and one is selected randomly for display.
  • Gears - It's the GLXgears demo.
  • Blank - Just a blank screen (not very exciting, but very CPU-efficient).

Missing Visualizations after upgrading from 0.19 to latest SVN? The visualizations are now selectable via the Setup menus and by default you won't have any selected. Navigate to Setup > Media Settings > Music Settings > Player Settings and on the third page you'll find the Edit Visualizations button where you can select which visualizations you'd like to show up as options.

Looking for more? If you're running 0.21 or higher you can use libvisual visualizations. An easy way to some is to install the amarok-visualisation package which will add quite a few good ones to your Available Visualizations list.

Useful keys to know

  • some keyboard commands that might come in handy..
    • Change Visualisation mode - 6
    • Change Shuffle mode - 1
    • Change Repeat mode - 2
    • Edit Playlist menu - 3
    • Blank Screen - 5
    • Increase track rating - 9
    • Decrease track rating - 7
    • Refresh music tree - 8
    • Filter all my music - f or m
    • Show incremental search dialog - CTRL + S
    • Incremental search find next match - CTRL + N
    • Edit Track Information(mp3 tags) - i
    • Pause/unPause - p
    • Stop - o
    • Next - z
    • Mute - | (shift-\ also called "pipe")
    • Volume Up - ] or F11
    • Volume Down - [ or F10)
    • > and < for next and previous track in a playlist. This is especially helpful if you use random track selection -- it will jump to the next (or previous) track in the random list.
    • (note these are based on the default key mappings)


You may run into errors when running MythMusic.

When I run MythMusic and try and look up a CD, I get an error message

The full text of the message will say:

databasebox.o: Couldn't find your CD. It may not be in the freedb database. More likely, however, is that you need to delete /.cddb and /.cdserverrc and restart mythmusic. Have a nice day.

If you get this message, you should go to the home directory of whatever user MythMusic is running as and type:

   rm .cdserverrc
   rm -rf .cddb/

These files aren't automatically deleted because of a conscious design decision by the author that programs that automatically delete things are bad.

The files are used to locally cache CD lookups. If you are re-inserting CDs, your machine will not actually have to go out to the Internet to determine what is on them. However, the URL used to access the freedb database has recently changed, so the stale information in the files from previous runs of MythMusic would cause the error above. Once the files have been deleted the stale information will be gone and your local database will be rebuilt as you use CDs.

The default cddb server in .cdserverrc doesn't seem to be working very well all the time, here's a list of servers you can add:

 SERVER=cddbp://freedb.freedb.org:8880/ CDDB
 SERVER=http://freedb.freedb.org:80/~cddb/cddb.cgi CDDB
 SERVER=cddbp://at.freedb.org:8880/ CDDB
 SERVER=http://at.freedb.org:80/~cddb/cddb.cgi CDDB
 SERVER=cddbp://ca.freedb.org:8880/ CDDB
 SERVER=http://ca.freedb.org:80/~cddb/cddb.cgi CDDB
 SERVER=cddbp://cz.freedb.org:8880/ CDDB
 SERVER=http://cz.freedb.org:80/~cddb/cddb.cgi CDDB
 SERVER=cddbp://no.freedb.org:8880/ CDDB
 SERVER=http://no.freedb.org:80/~cddb/cddb.cgi CDDB
 SERVER=cddbp://uk.freedb.org:8880/ CDDB
 SERVER=http://uk.freedb.org:80/~cddb/cddb.cgi CDDB
 SERVER=cddbp://us.freedb.org:8880/ CDDB
 SERVER=http://us.freedb.org:80/~cddb/cddb.cgi CDDB