Setup dynamic menu to browse music by tags
From SqueezeboxWiki
Contents |
Overview
This example shows how to set up a dynamic browse menu that allows one to browse music in any order and number of levels. The idea is to browse music by any relevant tag, whether or not it is supported by standard SqueezeCenter (formerly known as SlimServer). The following example is based on classical music, but the same principles may be use for other types of information.
Consider this example as a guide on how to use the "Dynamic Tag" menu, which is added when using the Custom Browse plugin and Custom Scan plugin; the exact tags and menu structures used are not that important --- the main purpose is to show some of the possibilities with these plugins.
Suppose we would like to set up a browse menu structure on the main level as follows:
Classical Music Albums Artists Composers Conductors Genres Works
When browsing down into "Composers", all composers should be shown. When we select a specific composer, such as "Beethoven", we should again get a choice of which tag to browse:
Classical Music Albums Artists Composers Beethoven Albums Artists Conductors Works Genres Matching Albums Matching Songs Mozart Conductors Genres Works
When browsing right when on a single track, we would also like to see a "Tags" menu beside the standard elements already available there, that has the following main menu structure.
Classical Music Albums Artists Composers Conductors Genres Works
The values below "Works", "Composers", Artists" and "Genres" should be limited to those of the selected song, thus making it possible to find other music from the same composer and other performances of the same work.
When selecting a song in the web interface we would like to show the following information besides the standard information available in this page
Work: <Work>
The following information also relating to this configuration is already available in the the song details in the web interface:
Composer: <Composer> Conductor: <Conductor> Band: <Band> Artist: <Artist>
The idea of this description is to provide a more detail regarding setup of the Multi Library, Custom Scan and Custom Browse plugins, and to illustrate some possibilities. This example focuses on how to setup a "Dynamic Tag" menu type.
Installation
To set this up you will have to have installed the following plugins
Note, the Multi Library plugin is only used to limit the new menus to classical music; if you would like the new menu to show all genres of music you don't need the Multi Library plugin. In this case you don't need to specify the "Library" parameters in the instructions below.
If you are using SlimServer 6.5 or earlier, you might want to look at the old guide instead.
Tagging
Not all the information used in this example is part of the standard tags for music files that exist, so the first requirement is that the information exist in tags in your music files. To follow this example exactly, set your tags as follows:
Standard tags
Tag | Type of information | Example values |
ARTIST | Name of solist or main artist | Vladimir Horowitz, Yo-Yo Ma |
ARTISTSORT | Name of solist, artist, composer or conductor used when sorting elements | Horowitz Vladimir, Ma Yo-Yo, Mozart Wolfgang Amadeus, Bach Johann Sebastian, Albinoni Tomaso Giovanni, Previn Andre |
COMPOSER | Name of composer | Wolfgang Amadeus Mozart, Johann Sebastian Bach, Tomaso Giovanni Albinoni |
CONDUCTOR | Name of conductor | Andre Previn, Seiji Ozawa, James Levine |
BAND | Name of ensemble | New York Philharmonic, Vienna Philharmonic, London Symphony Orchestra |
GENRE | Name of genre | Concerto, Symphony, Overture, Quintet, String Quartet, Piano Sonata |
Non standard custom tags
Tag | Type of information | Example values |
WORK | Name of the work | Piano Concerto No. 5, Piano Concerto No. 9, Piano Concerto No. 14 |
WORKSORT | Name of the work used when sorting elements | Piano Concerto No. 05, Piano Concerto No. 09,Piano Concerto No. 14 |
Scanning custom tags
The first thing to do is to make sure the custom tags are scanned into the SqueezeCenter database. Before this we have of course used tagging software to put the tags in our music files. We have stored the tag as a single value with a semicolon character separating different values, for example:
GENRE="Classical;Piano Sonata"
Custom Scan will use the standard MULTIPLE ITEMS IN TAGS setting found under "SqueezeCenter Settings/Music Library" for the separator character, so make sure this is set to the semicolon character, or use the separator characters you have configured when setting the tags in the music files.
- Goto SqueezeCenter Settings/Plugins/Custom Scan in the web interface
- Click the Custom Tag scanning module to change it settings as
- Enable in automatic and full scans: Selected
- Tags to scan: WORK,WORKSORT
- Sort tag mapping: WORK=WORKSORT
- Click Apply to save the change
- Select the settings section "Manage scanning" and then click the Scan link beside the Custom Tag scanning module
The custom tag information has now been scanned into the SqueezeCenter database, it will still not be shown anywhere though. I'm not sure how the SqueezeCenter standard tags will work with all file formats, in case the composers or conductors don't appear later on you might need to enter these also in Tags to scan.
Now, we also want to be able to freely combine information in standard SqueezeCenter and the custom tags, to make this possible we also need to make sure the Mixed Tag scanning module is run:
- Goto SqueezeCenter Settings/Plugins/Custom Scan in the web interface
- Click the Mixed Tag scanning module to change its parameters as:
- Enable in automatic and full scans: Selected
- Album tags: ALBUM
- Artist tags: ARTIST
- Composer tags: COMPOSER
- Conductor tags: CONDUCTOR,ARTIST
- Band tags: BAND,ARTIST
- Genre tags: GENRE
- Include custom tags: Selected
- Names to show for user: ALBUM(Album:Albums),ARTIST(Artist:Artists),GENRE(Genre:Genres),YEAR(Year:Years),CONDUCTOR(Conductor:Conductors),COMPOSER(Composer:Composers),BAND(Band:Bands),TRACKARTIST(Track Artist:Track Artists),ALBUMARTIST(Album Artist:Album Artists),WORK(Work:Works)
- Click Apply to save the change
- Select the settings section "Manage scanning" and then click the Scan link beside the Mixed Tag scanning module
Note!
Whenever you run the Custom Tag scanning module manually, you will also have to remember to run the Mixed Tag scanning module. When you use the Scan All links or just perform a SqueezeCenter re-scan this will happen automatically, but if you run a single scanning module, for example as described above, you will have to remember to run them both.
Creating library for classical music
To make it easier to differ between classical music and non classical music we need to start by creating a virtual library for the classical music.
Classical library
- Got "Extras/Multi Library" in the web interface
- Select Create new library and then select the library type Standard library
- Change library configuration parameters:
- Library name: Classical Music
- Include genres: Mark Classical
- Included internal menus: Deselect all checkboxes
- Show in home menu: Deselect for now
- Click Next and enter filename: classical.ml.values.xml
- Click Save to store the library
Non classical library
- Go to "Extras/Multi Library" in the web interface
- Select Create new library and then select the library type Dependent library
- Change library configuration parameters:
- Library name: Standard Music
- Excluded contents of libraries: Select Classical Music
- Included internal menus: Deselect all checkboxes
- Show in home menu: Deselect for now
- Click Next and enter filename: standard.ml.values.xml
- Click Save to store the library
It doesn't really matter how you define your libraries, we have choose to identify classical music by a genre called Classical in this example, but you may want to identify it by a number of genres or by entering one of the directory parameters.
The only thing these library will do in this example is to make it easier to have different information in the song details menus and pages for classical and non classical music.
Now it's time to start creating the browse menu
- Goto "SqueezeCenter Settings/Plugins/Custom Browse" in the web interface
- Select the settings section 'Manage menus and click the Create new menu link
- Select the menu type: Dynamic Tags
- Change menu parameters
- Menu name: Classical Music
- Limit to these tags: ALBUM,ARTIST,CONDUCTOR,COMPOSER,GENRE,WORK
- Library: Classical Music
- Click Next and enter filename: classicalmusicdynamictags.cb.values.xml
- Click Save to store the changes
After this you should have a Classical Music menu under the Browse/Custom Browse menu which contains the new menu we have setup. This is the time to try out the menu and make sure it work correctly before you continue.
At the moment the Classical Music menu only exists inside the Custom Browse menu, we like this to be moved outside Custom Browse and into the standard Browse menu. To do this do as follows:
- Goto "SqueezeCenter Settings/Plugins/Custom Browse" in the web interface
- Select the settings section 'Enabled menus
- Select the Show in browse and home menu column for our new "Classical Music" menu.
- Click Apply to store the changes
The Classical Music menu should now be available directly in the standard Browse menu.
Configure Song Info web page
The next step will be to add Work to the Song Info page in the web interface.
- Goto "SqueezeCenter Settings/Plugins/Custom Browse" in the web interface
- Select the settings section 'Manage header/footer items and click the Create new menu link
- Select the menu type: Custom Tags Songs for song
- Change the menu parameters:
- Menu name: Work
- Menu prefix: Work
- Level 1 tag name: WORK
- Library: Classical Music
- Object type: trackheader
- Click Next and enter filename: trackheaderworks.cb.context.values.xml
- Click Save to store the changes
It is the Object type parameter that controls that the menus should be used for the Song Info page, so setting those to trackheader is really important.
The work should now be shown in the Song Info page in the web interface when showing a song. Note however, that it is only shown when selecting a song from one of the Custom Browse menus, we like to show it also when selecting a song from the current playlist, to accomplish this follow the next section.
Always use customized Song Info page
To make sure the customized Song Info page is used in all situations, we need to change the SqueezeCenter skin to one of the skins provided with the Custom Browse plugin.
- Goto SqueezeCenter Settings in the web interface
- Select Interface section
- In the Web Interface parameter at the top select one of the skins that end with CB, currently ClassicCB, DefaultCB and FishboneCB is available.
- Click Apply to store the changes
The customized Song Info page will now be shown in all situations, the same is also for the customized album and artist pages that come with Custom Browse, which have a page header.
It's now time to configure the menu shown when clicking the right arrow on the remote when standing on a song, for example in the Now Playing menu.
- Goto "SqueezeCenter Settings/Plugins/Custom Browse" in the web interface
- Select the settings section 'Manage header/footer items and click the Create new menu link
- Select the menu type: Dynamic Tags for song
- Change the menu parameters:
- Menu name: Classical Music
- Limit to these tags: ALBUM,ARTIST,COMPOSER,CONDUCTOR,GENRE,WORK
- Library: Classical Music
- Object type: track
- Click Next and enter filename: trackclassicalmusicdynamictags.cb.context.values.xml
- Click Save to store the changes
It is the Object type parameter that controls that the menus should be used for the Now Playing menu, so setting those to track is really important.
The configuration of the Now Playing menu is now finished. When the song details on a classical music song you should see our new "Classical Music" menu.