foobar2000

FAQ

Downloading and installing foobar2000

Troubleshooting

Other questions

Developer questions


Downloading and installing foobar2000

External sites have version X but official site has older version Y, why?

Because version X hasn't been officially released yet and is being tested, please stay with version Y unless you are experiencing major problems with it and version X appears to fix them.

Official site claims to have version X but when I download the file, I get older version Y.

You are getting older file from your browser's cache or from your ISP's proxy. Try downloading from different locations.

How do I make foobar2000 my default player?

The installer has an option to associate foobar2000 with your music file types.

I've installed foobar2000 on a Windows 95 / Windows NT4 system, all dialogs appear to use some ugly default font.

Install Tahoma font from Microsoft.
Back to top

Troubleshooting

....

Most technical problems can be solved by removing any third-party components and resetting the configuration (or doing a fresh reinstall). It is recommended that you backup your foobar2000 directory before doing that, so you can try to restore your old settings/components later, or help us with identifying the exact source of the problem.

I am experiencing high system resource usage (memory or CPU) while playing.

Please disable any unneeded DSPs (such as resampler). Some of them require a lot of resources to operate.
If you use the resampler, please use 32bit fast mode, as you are extremely unlikely to be able to tell the difference between different resampler modes; "slow" mode has been reported to give noticeable differences only with resampling from very low samplerates, *not* when resampling 44100Hz=>48000Hz. On normal music, you are also very unlikely to be able to tell the difference between the resampler being enabled and disabled, so you should reconsider if you really need it.
Some DSPs such as crossfader or gap remover need extra memory buffers to operate; you can reduce the memory usage by changing their settings.
Also, certain outputs (Kernel Streaming) have been reported to use excessive amounts of CPU time on certain systems.

I have a problem with one of third-party components...

Please post your question on third-party component forum. As we don't take responsibility for components other people make, this FAQ can't help you any further.

Why is MP3 seeking so terribly slow?

The MP3 format doesn't natively support sample-accurate seeking, and sample accurate seeking is absolutely required by some other features of foobar2000 (such as .CUE playback). Therefore, MP3 seeking works by bruteforce-walking the MPEG stream chain (this gets faster when you pass through the same point of file for the second time because seektables have been built in the RAM). Unfortunately, seeking can't be optimized for CBR files (frame sizes aren't really constant because of padding used), or for VBR headers (both Xing and VBRI headers contain only approximated info and are useless for sample-exact seeking).
Back to top

Other questions

I am having a problem with title formatting strings...

Please read included help ("help" button in preferences / display / title formatting), most of title formatting features are explained there.
Additionally, you can get more help here

Which output: DirectSound, waveOut or Kernel Streaming should I use?

It is recommended to use default settings (waveOut), it should be safe to use anywhere. DirectSound may give better performance (less CPU overhead), especially under Windows 2000, Windows XP or newer, but there shouldn't be any audible difference between the two. In certain rare cases, Kernel Streaming may produce better results than DirectSound/waveOut (if for some reason you need data sent through digital out to be bit-identical to source stream); but bit-identical results with DirectSound have been reported on soundcards capable of mixing multiple streams in hardware (with hardware mixing enabled in DirectSound settings). Please note that Kernel Streaming is an experimental feature, it has known issues and using it is *not* recommended unless you have a major reason to - most of perceived "sound quality differences" between DirectSound and Kernel Streaming are related to the fact that Kernel Streaming usually bypasses windows volume control / wave volume slider. Also, Kernel Streaming works only on Windows 2000, Windows XP or newer.

What are ICL builds of components?

Certain components are also available as ICL compiles (which are compiled with the Intel C Compiler); they're usually faster, have separate binaries for different CPU types, and often introduce heavy bugs. It is recommended for most of users to stay with regular builds, unless user is having problems with high CPU usage. You may encounter major problems (such as crashes) if you use ICL-compiled components, use them at your own risk, and revert to standard versions of those components if you encounter any problems.

In what order should my DSPs be placed?

In descending order (about all of them are optional):
Resampler => [Other DSPs] => Volume Control => [One of limiters]

What resampler settings should I use?

First, you shouldn't use resampler at all, unless you can tell the difference between resampling being enabled and disabled; resampler is a resource hog and the differences on normal music are very small and virtually impossible to notice (only certain "test signals" such as udial.wav may sound obviously different, but nothing like that occurs in real music). If you really have to use resampler, resample to 48000Hz (*) and use fastest settings (only resampling from very low samplerates like 8000Hz has been reported to sound noticeably worse with resampler in fast mode).
You don't "gain quality" by resampling to higher samplerate, it's just like stretching a picture to display it on a higher-resolution screen. You will be most likely able to "play" 96000Hz samplerates on whatever card you have, but samplerates unsupported by hardware will be downsampled by windows kernel mixer.
(*) most of currently manufactured consumer soundcards resample internally to 48000Hz (which is absolutely needed for mixing multiple streams), some of them (eg. all SoundBlaster Live! and Audigy series) have issues with resampling (again, mostly noticeable on test signals such as udial.wav, you are very unlikely to be able to tell the difference on real music); those cards are the main reason why resampler DSP became available.

What is ReplayGain?

http://replaygain.hydrogenaudio.org

Does foobar2000 sound better than other players?

No. Most of "sound quality differences" people "hear" are placebo effect (at least with real music), as actual differences in produced sound data are below their noise floor (1 or 2 last bits in 16bit samples). Foobar2000 has sound processing features such as software resampling or 24bit output on new high-end soundcards, but most of other mainstream players are capable of doing the same by now.
Back to top

Developer questions

How do I create a component?

Things you need:

How often do components need to be updated to work with latest version of foobar2000?

So far, component compatibility was broken every 0.1 version number increase, and this will probably continue until 1.0 due to API interface changes. Whenever new version breaks compatibility with old components, your components need to be rebuilt with new SDK, possibly with a few minor edits to reflect changes in APIs you used.

How do I use <insert API name> in foobar2000 SDK?

Most of API methods are described in SDK headers; if you can't make anything out of those descriptions, please post about your problems on the forums.

I want to translate foobar2000 to <insert language>.

Sorry, foobar2000 doesn't support any kind of translations (other than editing executable files, which we strongly recommend against), and such feature isn't planned. If you want to help people having trouble with English, write a FAQ/help page in your native language instead.

All strings passed around are char*, how do I get unicode strings?

All char* strings passed around in foobar2000 API are UTF-8 encoded. You can find proper routines for handling them in pfc/string.h (also see: helpers/unicode_helper.h for common win32 api related UTF-8 string helper code). Refer to sample components on exact info how to mix UTF-8 string based code with win32 API.
Back to top