Quick searches and party fun with the Yammi music database

The Music Box


The compact Yammi [1] music database for KDE (Version 3.2 or newer) is a useful replacement for a jukebox.

By Frank Wieduwilt

www.photocase.de
KTools

In this column we present tools, month by month, which have proven to be especially useful when working under KDE, solve a problem which otherwise is deliberately ignored, or are just some of the nicer things in life, which - once discovered - you would not want to do without.

The Yammi music database manages even the largest of song collections and provides a flexible architecture that allows users to harness the power of various media players. The Yammi homepage only has the source code for the current version, yammi-1.2.2.tar.gz. You also need the TagLib [2] library and the developer packages for the Xmms [3], Noatun [4], and Gstreamer [5] players.

After installing the libraries and the media players, unpack the Yammi source code archive by entering tar -xzvf yammi-1.2.2.tar.gz, change to the new source code directory (cd yammi-1.2.2), and give the ./configure command to create the makefiles. Then enter make to start compiling the source code. When this process completes, enter su -c "make install" and type the root password to install the program to an appropriate position in the filesystem tree. You can now launch Yammi by entering the program name in a terminal window.

Let the Music Play!

When you first launch the program, it asks you for the directory with the tracks; Yammi supports songs in MP3, OGG, and WAV format (Figure 1). It can take a while to read the track information. Our 1.2 GHz computer took about two minutes to read just over 1000 titles. The software then stores the title data in an XML-formated file, ~/.kde/share/apps/yammi/songdb.xml.

Figure 1: Yammi reading the songs in a directory.

After reading the title data, Yammi displays a clear-cut program interface with a toolbar at the top of the screen containing the search field and player controls. The playlist is located on the left of the window, and the Quick Browser area  immediately below it displays a tree view of all your tracks sorted by various criteria, such as artist, album, genre, and year.

The list of selected tracks takes up most of the program window. To play a song, you need to tell Yammi which media player to use. Settings | Configure Yammi | MediaPlayer takes you there. The program's author describes Gstreamer support as experimental, although it worked fine in our testing.

The other candidates are Xmms, Noatun, and ArtsPlayer. After selecting your preferred player, just click a track in the collection, and then click the play button in the toolbar to start playing the song. Pressing [F1] launches the specified player. [F2] skips to the next track, [F3] backtracks, and [F4] stops the player.

Yammi has a neat autoplay feature. In a way similar to Apple's iPod, the program plays tracks from the whole list in random order, digging out those long forgotten golden oldies that have been gathering dust in your collection.

Yammi always shows the last track and the next four tracks in the playlist. If you prefer not to listen to one of these tracks, you can press [F8] to take it off the list.

Search and Find

Pressing [Esc] allows you to search the Yammi music database. This takes the cursor to the search field at the top left of the program window and removes the current content. While you are typing, the program rushes off ahead to show you any entries that match your search.

The search uses fuzzy logic and will return a band name such as the Housemartins even if you type something like Housmartins. Yammi shows you the search results on the right of the window, putting the best matches for the search key at the top of the list (Figure 2).

Figure 2: The program displays the tracks that match the current search with the best matches first.

Pressing [F5] adds the selected track to the end of the playlist; [F6] puts it next up, and you can double click the track to play it. The context menu for a track has a few options for selecting more tracks that match the current selection.

The Search for similar... button gives you a list with all songs by the same artist, the tracks from the same album, or songs with the same name. The program tags any songs it has played since the last time green; and the current selection is highlighted in red. This makes it easy to keep track at a party.

Yammi also reads tracks from CDs that are not in the database. If you select Database | Scan removable Media..., the program will prompt you for a path to the CD drive and add all the tracks on the disk to the database. If you want to play one of these tracks later, the software will ask you to insert the CD.

Keeping Things Tidy

If you need to read or edit the information for a track, select the track in the list, and press [I]. This pops up a dialog where you can edit the artist, title, album, and genre. At the same time, Yammi tells you the last time it played the track. The program does not store this information in the track itself; instead, Yammi stores history data in a separate database.

Customizing Yammi

You can customize Yammi to reflect your own preferences and add functionality by adding plugins. For example, if you do not like the playlist layout, you can select Settings | Configure Yammi | Playqueue Theme. The playlist is a HTML-formated document that you can edit, assuming you have the required skills.

Plugins and scripts extend the program's functionality. Yammi comes with a number of plugins for burning selected tracks on CD, in collaboration with the K3b burning software. You will also find a plugin for designing CD covers using the Cdlabelgen [6] tool.

Some plugins are located in Settings | Configure Yammi | Plugins. Clicking on Placeholders shows a list of the placeholders for passing data to external programs. The scripts that accompany the program are a good starting point for your own development work.

Party Goer

As Yammi can be controlled using just the keyboard, and as it has no trouble using external media, Yammi is a good choice as a jukebox replacement for parties. A second sound card in your PC allows you to listen to one track while another is playing without interrupting the program flow. Again, three function keys are all you need: [F9] plays the start, [F10] plays the mid-section, and [F11] plays the end of the selected track.

Conclusions

Yammi keeps the promise of being simple and compact. The program's controls seem to be well designed and intuitively accessible to newcomers. A mature search function helps users find tracks that are not currently on the list. And the program is very stable. I used the program every day over a period of multiple months without the software crashing even once.

Yammi is good choice for those who are put off by the feature overkill that databases such as Amarok [7] give but still need more than just a simple media player.

INFO
[1] Yammi homepage: http://yammi.sourceforge.net.
[2] Taglib: http://developer.kde.org/~wheeler/taglib.html
[3] Xmms: http://www.xmms.org
[4] Noatun: http://noatun.kde.org
[5] Gstreamer: http://gstreamer.freedesktop.org/
[6] Cdlabelgen: http://www.aczoom.com/tools/cdinsert/
[7] Amarok: http://amarok.kde.org