foobar2000 is a freeware, closed-source music player for Windows developed by former Winamp developer Peter Pawlowski. It boasts high customizability and an extensive feature set, including unicode support, gapless playback, clipping prevention, and 64-bit output. Extensibility is provided by through Visual C++ and it BSD licensed SDK. Additionally, most installs include built-in Replaygain support and an automatic tagger with support from freedb.org.
Please note, this guide was written primarily about foobar2000 v0.8. Some of the advice and links within may not be relevant to v0.9.
This program is too complicated. Is there some easy configuration I can just unzip and make it work without screwing around with this configuration stuff? Stop reading this FAQ, uninstall foobar2000, and never use it again. foobar2000 is not for people who don't want to spend time setting up or configuring their player. It's customizable and incredibly powerful, but we can only get those benefits by spending some time learning the software and becoming accustomed to the environment. If that's not what you want in a player, there are plenty of alternatives, such as WinAmp and iTunes.
Okay. So how the heck can I change the volume? The simplest way to play with the volume settings in foobar2000 is to define a set of global hotkeys. There is also a component to add a volume toolbar, available here.
I don't like how foobar2000 shuffles. There's a plugin for more intelligent shuffling here.
My ColumnsUI sidebar isn't showing up! To enable it, go to Preferences->ColumnsUI->Display. Verify that the Enable sidebar checkbox is enabled. Also, you may want to uncheck the Auto-hide sidebar box.
My sidebar extensions don't show up! They generally only work with the absolute newest version of foo_columns. Try updating. If that doesn't work, see the entry below this one.
I am baffled by the incredible complexity of foo_columns. A comprehensive wiki for foo_columns is here.
What is TAGZ? What is it used for? Where can I learn more about TAGZ?
TAGZ is foobar's native scripting language for audio file tags. It is a very simple scripting language faintly like perl that allows access to info from the database, a file's tags and various additional information from the core, windows, etc. TAGZ allows for branching, working with strings and includes a number of useful functions for processing audio tags.
TAGZ handles everything from sorting order, to playlist formatting, to the media libary-like features of foobar. Dig in and you'll see its used in nearly componet that deals with file tags or user interface.
foobar comes with a fairly good explination of TAGZ functions that should be enough for experienced programmers. However many plugins add addition functions to tags, or have nonobvious features. In this case you really need to look at what other people have done to get ideas. Examples are available from several of the formatting sites listed in the "Custom formatting strings" section at the bottom of this document. A brief tutorial is also available on the offcial foobar2000 wiki.
What is replaygain? Replaygain is a standard developed by ReplayGain.org to "normalize" the volume level of mp3s. Because various recording methods result in variably loud-sounding music, we find ourselves shifting the volume level up and down erratically. The Replaygain feature built-in to foobar2000 scans your mp3s and assigns a tag to each file. This tag contains information about the volume level at which the mp3 should be played, which your player can interpret, and modify the output level accordingly. This results in a nearly uniform output level for all mp3s.
By default replaygain uses a negative preamp to avoid clipping files by accidentally boasting them too far (unlike SoundCheck in iTunes). Thus files are reduced in volume to a standard level a few dB below normal. They sound quieter initially, so most first-time users of replaygain will need to turn up their hardware volume levels. Additionally a second preamp is available for non-replaygained files, allowing for reduced gain on other files as well to prevent accidentally blasting a non-replaygained file.
Does replaygain really "normalize" my audio? Does it hurt quality? Replaygain does not really normalize. It uses some of the same algorithms used in audio compression to calculate the relative loudness of a file. In conventional normalization, some level is chosen as the peak loudness (regardless of how loud the file actually sounds!) and the entire file is rewritten to reflect that level. The difference is that in replaygain, the file is not actually altered. Instead foobar just remembers how loud each file really is, and then adjusts the preamp (how much is configurable) to make each album (or track, again configurable) play at the same gain.
Quality is not affected, even if there is some change to the output. Fortunately for us, even 16 bit audio leaves tremendious headroom at quieter levels. With a 24 bit sound card, even more headroom is available (millions of times more than is needed).
Is there a way to access my iPod with foobar2000? Yes. Use the foo_pod component. It supports reading, writing, backing up your ipod, smart playlists and soundcheck (replaygain is used).
How do I get foobar2000 to send enqueued files to a particular playlist by default? Go to Preferences->Core and check the box "Always send to playlist". Type in the name of the playlist you want on the right.
How do I make foobar play files gaplessly? Playback will be gapless if gapless playback is possible. Generally lossless files, ogg, mpc and wma are always gapless. AAC/MP4/M4A and MP3 are special cases. These rely on the encoder and decoder working properly to produce gaplessness. LAME MP3s are always gapless as of 3.90, as are Nero and FAAC AAC files. iTunes files are not gapless.
Help! My LAME MP3s are not gapless. WTF? Either they aren't really LAME, the files have gaps on the CD itself (common in some types of music) or the files are a transcode from some other format that isn't gapless. The gapkiller DSP can attempt to reduce the gap, but is not recommended because it sometimes interferes with properly encoded gapless files. Use at your own risk.
foobar2000 doesn't read my tags! There are several possible causes for this problem.
One is that you have used MP3Gain to normalize your mp3s. This creates an APEv2 tag that is empty except for the gain information. By default when reading MP3 files foobar2000 looks for APEv2 then ID3v2 and then ID3v1.1. It will read only the first tag and then stop looking for more information. The solution is to use MP3Gain to remove the blank APEv2 tag, to copy all your tag data to APEv2 BEFORE running MP3gain, or most sensibly use the native replaygain implimentation in foobar.
Two is that you have not installed the ID3v2 component. It is included in the special installer, but it may have come unchecked. Either reinstall (settings and playlists are preserved) or goto the official site and download the plugin seperately.
My other software only sees ID3v1 written by foobar. Why? You're probably writing APEv2 + ID3v1 and your software does not understand APEv2. Consider using ID3v2 or upgrading your software.
I haven't changed anything. What file tags will foobar write? By default ID3v1 + APEv2 to MP3, and native tag format to everything else. Wav files and other formats without a tag system will not be tagged.
APEv2 tags? Why would I want those?
There is no easy answer to this question. APEv2 is a rival tagging format to ID3v2 for use in MP3s (and other formats). It is backed by HydrogenAudio, which is also largely responsible for the direction foobar has taken. The differences between the two are largely transparent to the user (ID3v2 is more powerful, but also very complex and often poorly or incompletely implemented in many application such as MS Windows and Apple iTunes). However one difference that is quickly apparent is tag location. ID3v2 tags are added the start of files, APEv2 at the end. The result is that adding or removing an ID3v2 tag requires rewriting the entire file. This makes ID3v2 very, very slow. Unfortunately foobar exacerbates this problem by stripping and rewriting all tags on every update. This ensures against corrupt or nonstandard tags, but also slows things down even more. APEv2 updates instantly (thousands of times faster) because it does not rewrite the whole file, just the end.
If you need compatibility with iTunes or hardware devices, and ID3v1 is not acceptable, then you must use ID3v2 and should be sure to change foobar to ID3v2 under standard inputs. If you need compatibility with the Ipod, use foo_pod which adds APEv2 support transparently to the ipod. If you need Winamp support, there is a strongly recommended plugin that adds APEv2 support, gapless playback and replaygain to Winamp. Otherwise you should probably use APEv2 (which is default). Note that by default foobar will not delete your old tags until you update them, so if you collection is already tagged in ID3v2, foobar will happily leave those tags alone until you attempt to retag them, at which point the tags will silently be upgraded to APEv2.
If you are not sure what you will need, try APEv2. If there is a need for ID3v2 later, foobar can automatically convert APEv2 to ID3v2 with no loss of data. To do so, switch the tag type to ID3v2, select all files you need to change, and choose "rewrite file tags from database". This will take a very long time though because writing ID3v2 is extremely slow. Do not attempt this if you do not have plenty of time to let your disks thrash.
Foobar doesn't update my tags for some reason. Did you check the "Block tag updates option"? If so, uncheck it. If not, are your files readonly? If so, fix that.
How can I prevent foobar from adding play counts to file tags without disabling tag writing? Unfortunately you can't. The current version of foobar's core writes all data to tags on update. The playcount plugin will allow you to delay updates when incrementing play counts, however there is no way to prevent the data from being written if the tag is every manually written. This feature has been requested for future versions of foobar. Fortunately there is no reason to avoid writing file tags to files, and in the event that they are added accidentally, it is trivial to remove them from ones collection using the masstagger.
Why isn't the freedb tagger working with this album? Your album is most likely incomplete or out of order. The track lengths must be correct and in the right track order in the playlist or the freedb tagger cannot recognize them. If you're sure that both are correct, then the album may not be in freedb. The vast majority of albums are, but many very rare albums, bootlegs and "advance" releases are not.
MPEG1 Layer 3 audio inside an MP4/M4A file? What is this nonsense? Believe it or not the MPEG4 spec allows MP3 files inside .mp4 files. foobar2000 supports this. One advantage of this approach is that MP4 files have their own standard tag format, thus avoiding the ID3v2/APEv2 mess, and allow for very effcient seeking compared to .mp3. Unfortunately iTunes does not support this part of the spec, and thus will refuse to decode these files.
Why aren't my LAME mp3s showing up as LAME with ctz's foo_columns plugin? If you used the Fix MP3 header tool on them, it has stripped and rewritten the header, which includes the LAME version and profile information. There is no way to put that information back in the file short of reripping it. Sorry.
I can't decode DRMed files I purchased from iTMS, Napster or Apple Lossless or any other proprietary format that does not have an open source decoder. Why? If there's no decoder, there is no way to program foobar2000 to read the files. DRMed music deliberately is designed to prevent you from playing and editing it with third-party software.
How do I deal with Various Artist albums? There is no standard way. Most formatting strings (including Azrael and Olight) look for a custom tag, called "VARIOUS" with a value of "1". Then when sorting, displaying or moving files, they look for the various tag and respond accordingly. If your various artist albums are not displaying properly in foobar2000, try adding this tag. If it still doesn't work, you will need to do some coding, or use a different formatting string.
How do I make sort strings ignore the words "The" or "A" in Artist names like iTunes? Add a check for them in your sort or formatting strings that goes something like [insert code here].
foobar2000 takes forever to load. I thought this program was fast? How can I see how fast it loads? How fast should it load?
Individual plugins need to register with the core when starting up. If a plugin is not configured properly, or not supported in the current version of foobar, it can lag the startup process badly. Unfortunately there's no easy way to figure out what plugin is at fault. The best way to attempt this is to simply drag out plugins 5 at a time, load foobar and see if the problem goes away.
Goto the console after startup. The exact time is printed there.
Load time is effected by number of plugins, machine speed, etc. Generally though it is very fast. With 10000 songs, foo_columns, and most plugins installed on a midrange machine, I am getting less then 2000ms. YMMV.
Can I repackage and redistribute foobar with my own settings and plugins? No this would be a clear violation not just of foobar's license, but of the GPL license for foo_input_std's AAC decoder. As mentioned foobar is incompatable with GPL licensing. AAC support is added only with explicit exception to the GPL license by Ahead. Anyone compiling and distributing unofficial releases or installers would violate the GPL.
New user guide
Installation & Setup
Since it is so customizable, foobar2000 comes 'bare-bones' out of the box, so you can set it up how you like it from scratch. Here are some suggested installation and setup instructions to get new users started. Remember foobar is a framework intended to allow flexibility. It is not a complete package, a lifestyle or whatever else people think audio players should be these days. There is no one way to do things, no one GUI to use, nor a correct way to use it. This guide is merely an example.
1) Go to http://www.foobar2000.org/download.html and download the latest "Special" installer to your install files folder. Run it. You will be presented with a list of optional components you can install. It is recommended that you not install components if you do not intend to make use of them, although generally having extra components wastes only a very tiny amount of memory. More components can always be added later.
Input: These components add support for obscure audio file formats not covered by the foobar2000 core. Support for FLAC, Monkey's Audio, WavPack and Shorten are recommended as these are common formats. Add any others you intend to use.
Output: Specialized output components. (Recommended? Useful for what?)
General: Miscellaneous components. Console, ReplayGain scanner, Masstagger, freedb masstagger, and Database search are strongly recommended.
DSP: Select whichever DSPs look interesting. Volume control is most important. The rest are purely optional, and all main features (tag reading, replaygain, gapless MP3 playback) work without extra DSPs. If you don't want to use DSPs later, you can disable them.
Diskwriter outputs: These components allow foobar2000 to compress and convert your audio files. Since most audio files are already compressed, it is not recommended that you recompress them into other formats. This is useful if you need to convert lossless files to AAC for use on the Ipod, etc
User interfaces: Do not install the default version of Columns UI as it will be a very old version. We will install a more up-to-date version later.
Visualization: The default "Simple spectrum" is just that - simple. Install it if you want it.
Directory context menus: Check these boxes to add the options to the context menus in Windows Explorer.
Shortcut icons: Foobar will allow you to place shortcuts to the program on installation.
Enable per-user settings: Check this box if different users will be using foobar2000.
2) Download the latest version of foo_columns_ui. Download the Album List panel. Place the .dll files in the \foobar2000\components\ directory. Start foobar2000.
3) The first thing to do is set up the database. Go to Foobar2000->Preferences and scroll down to Database. Verify that "Database enbaled" is checked. Restrict directories to your music folder in the format E:\Music\. Restrict file types in the format *.mp3;*.mpc;*.ogg;*.ac3;*.m4a;*.wma. Now close and re-open foobar2000, and return to Foobar2000->Preferences->Database. Click Scan and wait while it builds a database. When it finishes, move on to Step 4.
4) Find the Display settings in Preferences. Switch the User Interface Module to Columns UI. Click on Columns UI in the left panel, and select the Display tab on the right. Verify that the Enable Sidebar checkbox is enabled, as shown here.
5) Select Keyboard Shortcuts under Core. Define yourself a set of keyboard shortcuts if you want them. Remember that in order for a keyboard shortcut to work when foobar2000 does not have focus, you must enable global hotkey. Non-global hotkeys will only function when foobar2000 has focus. You can also edit the context menus under Core->Context menus, although it would be best to do that later, once you know which context menu options you want and which you don't.
6) Close out of preferences. Right-click on the Columns UI panel on the left, and select General->Album List. This will enable the Album list panel. Right-click on the panel and click refresh tree. You can also use the view context menu to change how the panel will display your music.
Congratulations! You now have a basic working installation of foobar2000. But this is far from all you can do with the program.
Quick tour
So what can foobar2000 do that other players can't? Far more than we can go over here. But we can explain some of its more useful features. To get the tour started, load up an album, either through the Album list panel, by dragging and dropping into the playlist, or by enqueueing with your context menu.
First, we'll take a look at the freedb mass tagger. This will come in very handy since foobar2000 depends on all your mp3s being properly tagged. To use it, select all the tracks in an album and right-click on them. Select freedb->Get tags. If all the tracks are the proper length and the album is in the database (most are), a freedb masstagger dialog will appear. It will offer you a list of the albums that matched the track lengths, which you can alternately pick and "preview" until you have the right one. When you have verified that the tags are correct, click "Tag files" and it will automatically tag the album. Cool huh?
Now that the album is properly tagged, it's time to get them named according to a formal naming scheme. Select the tracks in the album again and right click, but this time select Masstagger->Move, Rename, or Copy files. This dialog will allow you define any number of separate, fully customizable naming conventions. Let's create one of our own. This will be your introduction to foobar2000's coding language. Click Edit, then press the Add button. The display name will be Standard Album List. For display, type in %artist% - %tracknumber%. %title% (or whatever scheme you find appropriate). Click OK. Now you can mass rename all your mp3s according to a standard naming scheme with just a few clicks.
Finally, we can Replaygain the mp3s. Again, select the album and right-click to Replaygain. Per-track gain will scan each song individually and assing separate Replaygain values. Album gain will assign the same replay-gain value to the entire album, which is useful for albums that have continuity or deliberately different volume levels.
That's it!
Extra customizations
Custom formatting strings
Some users have designed comprehensive formatting strings that you can download and install. To install a formatting string, find Columns UI in Preferences and select the Other tab. Press the Import button and find the *.fcs file associated with your formatting string. Similarly, you can Export your formatting string and send it to your friends.
ctz has designed an expanded foo_input_std.dll file that recognizes mp3s ripped in LAME profiles (such as --alt-preset standard). The current version of the plugin is available for download here. To install:
Close foobar2000.
Replace your foobar2000\components\foo_input_std.dll file with the downloaded version.
Restart foobar2000.
You should now be able to see the LAME profile of any of your --aps mp3s by looking in their properties. To reap further benefits, you can insert this code into the Bitrate column of your formatting string:
This is a popular component that displays album art. It is available for download here. Note that you will need the album art stored in the album folder in the format folder.jpg.
What is kernel streaming? X bit output? Dithering?
Kernel streaming is an API supported in Windows that is supported by default in foobar and optionally in winamp and other players. The advantage of kernel streaming is that some of the Windows sound mixer is bypassed. As a result, changing the volume in Windows will not change the volume in foobar. Additionally in very rare situations, kernel streaming can provide better sound, at least in theory. The disadvantage is that is sometimes poorly supported by various sound cards. If you experience problems, switch to Directsound.
24, 32, 64 bit output are simply the precision of the audio outputed by foobar. Regardless of what you pick, audio is always handled in double (64 bit) precision internally. You should set this to whatever your soundcard supports (generally 16 bit or 24 bit for highend professional cards). The difference is minimal, although using 24 bit does provide more headroom for gain adjustments (i.e. replaygain with high preamp).
Dithering/noise shaping is a way to increase the accuracy of decoding compressed audio. The result is increased sound quality. Although subtle, this effect actually can be recognized in blind tests and is recommended.
Protecting your tags
If you're using a lot of embedded lyrics or album art in your ID3v2 tags, you're going to want to enable the "Block tag updates" option, or foobar2000 will likely strip all of that stuff out of your tags. This is because by default foobar2000 strips and rewrites all tags on every modification to ensure consistency. When the "Block tag updates" option enabled, it will store the information in the database instead.