Archive for the 'Components' Category

PanelsUI 13 and FofR Previews
June 4th, 2007

Aloha! At last my 6 week fury of 9am til 9pm work marathon, everyday including weekends, has come to an end (I also had Appendicitis, which was fun). I finally have some free time to work on that new FofR Configuration, I have some interesting ideas to try out. In the mean time, our beloved PanelsUI component continues to improve through Terrestrial’s efforts.

The latest of revisions is version 0.13.6, and the updates include:


  • Sysfont-val (val can be caption, menu, message, smcaption, or status) to use the system default fonts. use a font size of 0 if you want to use the default font size and options as well. eg: $font(sysfont_menu,0,,syscol-8)
  • Ability to hide child node in the library filter. if “!null!” is used the child node is hidden. eg: $if2(%date%,!null!)


  • Some performance tweaks to improve scrolling speed in scpl
  • $fontexists(fontname) function
  • Some other misc tweaks


  • Library filter tweaks
  • Transparent background for scpl (scrolling will be slower)
  • Transparent background for library filter & track displays.
  • New Library Filter defaults (hit reset page to get defaults)

In the last Panels post I said the URL never changes, turns out Terrestrial changed ISP and my notion was shot to pieces. So we have an all new download URL, aren’t these things exciting?

Unveiling the URL in the same vein as London pitifully unveiled their terrible 2012 Olympics logo,

Get your PanelsUI fix here:

I have had some time to work on my configuration during the past month, so to give you a teaser of what awaits you in the next FofR version, using the lovely new Panels features:

FofR Preview - Transparent Now Playing SCPL

A quick access playlist in the Now Playing tab, I am using this a surprising amount to quickly change track, etc. You may also notice a new blue theme. There’s also some new quick image options. Note, the extra tabs are just me playing around.

And a new Library Filter theme (resizing an animated GIF is more effort than its worth so I apologise if the edge of this is cropped):

Foobar Library Filter FofR Theme

PanelsUI 12 (and 11…)
May 11th, 2007

Terrestrial has been hard at work developing the PanelsUI component we have all come to know and love. With these two updates come a number of interesting changes. The most significant of these are the ability to pop-up a new panelsUI window, the second is an inbuilt PanelsUI compatible Library Filter panel. The new reset option makes installation of configurations that use defaults much easier also.


  • New “Library Filter” panel. a bit similar to Album List but with the ability to “and” and “not” nodes. also uses the current scpl sort/group settings when sending to playlist. use the sample “library.pp” layout file with a POPUP: to see how to customize.
  • Button in settings dialog to clear PVARs


  • Window title updates on pause
  • New “track globals” which are also evaluated before sorting/grouping. Keep this small and fast.
  • Tweaked sort/group criteria to use new track globals
  • “Reset Page” in Panels UI preferences resets to defaults
  • New button POPUP:”layout file” to create a new panels ui window.

Download PanelsUI Version 0.12 – does this URL ever change?

EDIT: Look at that, it did change, new URL:

Something to note, there is an additional .dll file in this installation that must be placed in the fb2k directory NOT the components directory. This is to help prevent a number of crashes that some users were experiencing.

Playlist Tree and the Art of the Query
April 19th, 2007


Digg This

Playlist Tree began as a playlist manager that builds playlists as trees. Most audio players use a list based approach to playlists, but I wanted to be able to create hierarchies in my playlists, so that I could have greater control of how I listened to music.

Playlist Tree has become one of the most powerful playlist managers that I have used. That power comes at a price of a fairly steep learning curve to use it to its full potential.

PT acts a Columns UI Panel, and this article will assume that you already known how to make the PT Panel appear in your layout. If you don’t know how to operate Columns UI, please ask someone other than me ;-) . This article also assumes some familiarity with foobar2000 titleformatting.


Playlist Tree fofrplaylisttree


PT has 3 types of nodes in its trees. First, it supports nodes that represent a single playable item. These items can be dropped onto the playlist tree panel from a playlist view or from the Windows Explorer. Second, it has what I refer to as static folders, which can contain playable items or other static folders, or the third type of nodes, the query. Queries are what give PT its power.

All of these nodes can be moved around by dragging and dropping them in the panel, and items can be copied rather than moved if you hold down shift when you begin dragging.

When you drop folders from windows explorer, it will create folders for each directory, and subdirectory, and playable nodes for audio files.


Queries are PT’s automatic playlists. They let you enter the criteria for which tracks should show up in the results, and how you want the results to be laid out in the tree. They also let you place limits on the size of resultant list in the form of number of tracks, duration, filesize and number of subfolders.


(More here)

Source instructs PT which files to use as possible candidates for the playlist. In most situations @database is probably the desired source. But other sources exist such as @drop<> for using playlists and directories as a source, @node<> for using other tree nodes as source and @playlists and @playlist


Criteria lets you prune files from your source. If you want all the files in the source to show up in the resultant tree, then leave the criteria blank. Otherwise, you can use the same syntax as foo_playlist_gen to remove non-matching tracks. For example, if you wanted only tracks by the Beatles that you have rated 4 or higher, you can use “artist HAS beatles AND rating GREATER 3″ for your criteria.


Format specifies how the resultant playlist will be arranged. It use the foobar2000 titleformatting syntax. Tree layers are split using the | character. If you wanted all the files to be put into folders based on their artist, then the album and finally the title, the format string would look like “%artist%|%album%|%title%”.

Population Sort Order

Population sort order determines the order in which songs go through the playlist generation process. Its especially useful when you are using the maximum options. For example, if you wanted a list of 10 random songs, you would set the Population Sort Order to “$rand()” and the maximum to 10 tracks.

Playlist Generation Process

Under the hood, the tree in a query basically gets generated like this:

  • 1 – make a list of all possible songs based on source
  • 2 – sort the list based on population sort order.
  • 3 – prune off items that don’t match criteria
  • 4 – for each item, add it to the tree based on format.
  • 5 – stop if you reach the end of the list or hit the maximum whatever.
  • 6 – if Sort by display name is check, sort by display name.

Random Things You Should Know

If you hold shift while dragging and dropping nodes, you can make a copy rather than move.

By default, right clicking on a node will give the normal foobar2000 context menu options, holding down shift while right clicking or middle clicking on a node will give you the playlist tree specific context menu. (These are configurable)

PT is very configurable. To get to the preferences select File->Preferences from main menu, then look under Media Library->Playlist Tree Panel.

You can configure what happens when you select, double click, and middle click on nodes.

PT adds its main menu options under Library->Playlist Tree.

In addition to the main Playlist Tree panel, PT also adds a Playlist Tree Search panel you can use in your Columns UI layout to quickly search your trees.

You probably also want my foo_cwb_hooks plugin.

I like getting email from people who enjoy using my programs. I also keep track of bugs and feature requests. If you have questions on how to do something, please use the forums. Other people may benefit from the information or respond that way. My email is

The playlist tree discussion on the foobar2000 forums is here

I maintain my own forums here

I make and distribute PT because I enjoy using it myself, and I think others also enjoy it. But I also have a job, a fiancee, a mortgage payment, and a life. I wish I could implement every cool feature people suggest and respond to everyone’s post, but I have a limited amount of time that I can spend on this, so please forgive me if you don’t hear back from me on a bug or a feature request or a question.


As of version 3.0.0, PT contains an embedded version of the Scheme programming language. This is intended for advanced users.

The embedded scheme has the following benefits:

  • 1 – It is a real programming language with things like conditionals and loops.
  • 2 – Because it is a real programming language, you can do things that are flat out impossible with a normal playlist tree query.
  • 3 – Because it is a real programming language, I can add ways to script foobar2000 actions.
  • 4 – It’s easier to use than foobar2000 titleformatting for complex tasks (when you get the hang of it).
  • 5 – It’s hardcore.

See the MORE section for more information and links to examples.


More information about playlist tree can be found on the components homepage here.

More information about the embedded version of scheme in playlist tree can be found at here. I also suggest finding on online scheme tutorial or the book “The Little Schemer”.

Example queries can be found at here.

PanelsUI 0.9+ now available
April 2nd, 2007

Terrestrial has updated his PanelsUI component again, this time implementing a major new sort by/group by dialogue and configuration, as illustrated below:


This allows for some very powerful new sorting and grouping layouts. The system uses discretely defined criteria for sorting or grouping which can be edited and added to. For instance Album, Artist, Date, etc. when in the small edit box, to group and sort by left click, to simply sort by just right click. To remove the criteria click again.

SCPL has also had some updates, allowing multiple SCPL codes to be used in a single panel, which can be switched between based on sort mode. For instance, in an SCPL panel named “playlist” there could be two completely separate sets of code, say Album and Single, then when grouped by album is selected the first SCPL shows, when grouped by anything else singles could show (it’s really up to the user because everything is extremely configurable).


Before you upgrade

There are some things to be aware of, first this new system completely removes the original SCPL “group by” dialogue – any code in that section will disappear on loading up your pui using PanelsUI 0.9+. Make a backup of your .pui file.

What’s more, sorting mechanisms in configurations such as FofR v0.6 and Brumal’s config are now incompatible and will cease to work correctly.

Most Previous configuration releases are incompatible.

My release of v0.7 (a compatibility update) has been delayed because all sorting and grouping information is NOT stored in the pui – instead it is placed in a users fb2k configuration file (.cfg). If I release a configuration under this guise sorting and grouping will not work the same on each persons machine, as a result installation will be more complicated – I cannot conceive releasing a configuration that requires its users to spend 20 mins adding sort/group commands to their fb2k, considering the difficulty of getting everything to work smoothly for everyone when there is just one variable to change! The removal of the group by dialogue also prevents backwards compatibility.

So whilst this update is very powerful I recommend that users happy with their configurations hold off for a short while.

Same URL as usual:

I am presently lobbying for a number of things at HA, firstly the inclusion of sort/group by configuration strings and the SCPL selector code within a PUI so they can be theme based. Secondly for the possibility of installing sort by commands upon a theme installation and thirdly a set of default sort standards (the development of these hasn’t been met with much enthusiasm). Sadly, the Foobar and HA way is never in favour of making things easy for the person that just wants everything to work.



  • misc bug fixes / tweaks
  • delay load uxtheme.dll to support win2k
  • $playlistname() to get the playlist name
  • $sortidx(name) returns the sort index or false if not sorted
  • sort/group presets in main menu (view / panels ui / sort\ group by)
  • $extra(FOOBAR2000_VERSION)


  • New sorting/grouping system Synergy
March 28th, 2007

One of my main gripes with fb2k is the lack of components that have web-interactivity, in fact my comments in the “How can foobar continue to improve?” post were something to this end.

For those out of the hip circle or the cool loop; is a service that aggregates tracks user’s “scrobble” and with this information generates recommendations, similar artists, charts and a lot of interesting relationships. There already exists a standalone Audioscrobbler component to submit tracks to, yet with all the information contained within this personalised radio service foobar2000′s 3rd party components can get and give a lot more.

So here comes the news! Chronial has been working on a new “scrobble-chartscomponent. It is still very much in beta (i.e. it crashes) but its features are too impressive not to announce here. The component uses Internet Explorer connection settings to retrieve information from’s web-services. Using this information two features are currently available;

  • Create an artist playlist with tracks ordered by the Artist Charts – essentially this mode re-orders your tracks in order of their popularity.
  • Create a playlist of similar artists using the similar artists list – this creates a new playlist filled with the artist selected and performers similar to. This makes creating theme based playlists extremely easy and is surprisingly fun to play with.

These playlists only select songs in your library. You can check out the latest version, change-log, some information and most importantly a download link here: Chronial’s Foobar Components (Thread).

I’m looking forward to new features.