# How to set up your carPC for sound processing using foobar2000



## MarkZ (Dec 5, 2005)

This tutorial is about the software and settings required to do sound processing using foobar2000 as your audio player.

Why foobar2000?


 It's free, and so are its plugins.

 It's a highly customizable (UI, skins, etc) high quality audio player, supporting ASIO and kernel streaming

 It offers many built-in processing plugins that consume very few resources

 It supports VST plugins without the need for virtual audio cable, asio4all, and advanced routing software

Drawbacks:


 Signal processing is only applied to the player. So external programs won't be processed.

 Not as configurable as using a VST host like audiomulch or console

 I haven't been able to get effects chainers to play nice, limiting you to one VST plugin

 If you're going to use foobar2000's time delay plugin, it limits you to 6 channels

*How to create a 6-channel audio system with full crossovers, EQ, time alignment, and channel summing features:*

Download the following:

foobar2000

foobar2000 ASIO plugin (foo_out_asio)

foobar2000 matrix mixer (foo_dsp_mm)

Optional:

foobar2000 channel mixer (foo_channel_mixer) -- for time alignment

foobar2000 crossover (foo_dsp_xover) -- for crossover functionality

foobar2000 vst wrapper (foo_dsp_vst) -- for vst hosting. Note: do not use George Yohng's vst wrapper -- it's not capable of multichannel output

Any VST plugin that operates on six channels... the newer voxengo plugins all offer multichannel processing (some are free!)

For the following example, I won't install foo_dsp_xover. Its functionality is limited in that every pair of channels must have the same crossover settings (which is probably fine for most folks...). Instead, I'll use voxengo glissEQ for crossover and parametric EQ. This plugin costs $120, but has a free demo version that you can try to see if it works for you.

1. Install foobar2000. Install the components listed above in the "components" subdirectory. 

2. Configure the ASIO output in foobar2000's preferences. Use either your sound card's ASIO drivers or ASIO4All (not discussed here - pain in the ass). You also want to map your first 6 channels by hitting the edit key and selecting from the drop-down menu.










3. Select your sound card in the ASIO protocol as your output device.










4. Load your DSP plugins into the DSP manager from the list on the right. Shown below, I have three plugins loaded. They're processed in the order in which they appear. If your plugin isn't listed on the right, then you didn't put the .dll file into the right directory! Do so, and then restart foobar2000.










5. First configure matrix mixer. This plugin maps the left and right channels to channels 3-6 in your sound card. Since ASIO drivers bypass the windows mixer, windows can't do this for us. This plugin also gives you the opportunity to produce L+R signals useful for subwoofers and center channels. The below configuration sends left and right out to the six channels alternately.










6. Configure channel mixer. This provides time alignment capabilities.
a) In the "general" tab, select 6 output channels.
b) In the "upmix" tab, select "off".
c) In the "subwoofer" tab, check "use subwoofer".
d) In the "delays" tab, check "use delays" and select the desired delay for each channel.
Note: pay no attention to the _names_ of the channels. Consider them ch 1, ch 2, etc.










7. Configure the vst host. This will allow you to host a single VST plugin. (Theoretically, you can host a VST chainer which will allow you to use multiple VST plugins, but I haven't been able to get one to work yet). Browse for the VST plugin you want to load. It should open the plugin!










In the next post, I'll talk about configuring the GlissEQ VST plugin to do crossover and EQ duty.


----------



## MarkZ (Dec 5, 2005)

The GlissEQ VST plugin provides up to 8 channels of crossover and parametric EQ functionality, with a maximum of 5 bands per channel. Once you load the plugin through the VST wrapper, you first need to configure the channel routing.










The top row defines your inputs. Group assignments routes the input into a specific processing group. So, if your left midrange and right midrange settings are the same, they can both share group 1. The output routing row specifies which inputs map to which outputs. Generally, A should go to A, B should go to B, etc. If you're not sure how to route the signal, choose A-F at the top (6 channels), A-F at the bottom, and groups 1-6... one for each channel. Leave the remaining two channels blank.

Next, you set your processing settings for each group. If group 1 is going to be for your subwoofer, select group 1 at the bottom and make it look something like this:










Here I've defined two filters as "highpass 24" with a bandwidth of 1.81 and freq setting of 20Hz to create a 48dB/oct subsonic filter. Since 24dB/oct is the max for any one filter, you have to use two to achieve 48dB/oct. I've also got a 24dB/oct filter set to "lowpass 24". You can change the bandwidth knob to further refine the shape of the curve.

You have up to five bands of adjustment per group, so you can also include equalization peaks, notches and whatever else into your frequency response. Choose "off" for bands that you don't need so that it doesn't take up CPU.

At the top right, you can adjust the "out" knob to fine-tune the gain of the group. This is nothing more than a level control.

Finally, when you're done making your adjustments, save your settings in the "preset" section.










Hit the "preset" button, add a "bank" by hitting the plus sign, select the bank and add a new preset with the other plus sign. Then select the preset you just made, and hit "set as default" so that your preset automatically loads every time you start foobar2000.

One more thing. This plugin allows you to select the oversampling. From what I understand, they suggest upsampling the signal by 4x so that all the processing is done at a higher sample rate, and then it's downsampled back to the original sample rate. This makes sense for filters, etc. You can do this within the plugin as well.


----------



## MarkZ (Dec 5, 2005)

A couple more points of interest for people thinking about doing something like this...

1. Although I've called this a 6-channel solution, the 6-channel limitation comes from the channel mixer plugin (for time alignment). But the voxengo supports 8 channels, so it seems possible to be able to copy channels from channel mixer into a voxengo vst plugin and reroute it to the outputs to make it an 8-channel system. The only limitation would be that you only have four channels of time delay instead of 6, but that should be sufficient for many systems. You don't need to time delay tweeters or whichever speaker is the 'zero' (usually the sub).

2. Channel mixer is an interesting plugin if you use the upmix feature (which I've bypassed in this tutorial). You can use it to create the L-R ambience signal that lycan has talked about for rear fill. The "rear left" output is calculated by (L-R)/2 and "rear right" is (R-L)/2. It also produces a "center" output (L+R)/2 which can be used for your sub. The remaining three channels can be pass-through: left, right, and delayed left in the "front left", "front right", and "subwoofer" (in name only) channels, respectively.

So, conceivably (and I haven't tested this), you could use channel mixer and the voxengo plugin to create a regular 8-channel setup (eg. three way front stage + sub). It can also create an 8-channel setup with two-way front stage + sub + center channel + ambient rear fill by making use of channel mixer's upmix feature.

Edit: You can also use the matrix mixer plugin to create the L-R signal. Negative numbers in the matrix correspond to phase inversion. But if you use channel mixer to do upmixing, you don't need matrix mixer in the chain at all.


----------



## bkjay (Jul 7, 2009)

Good stuff. Keep it coming!


----------



## MarkZ (Dec 5, 2005)

Ok, so here's what you do differently to create an 8 channel system with center, sub, and rear fill. For example, this will allow you to run front and left midrange and tweeters, center midrange, subwoofer, and delayed attenuated bandlimited ambient rear fill.

1) In channel mixer, enable upmix. This creates "front left" (L), "front right" (R), "front center" ((L+R)/2), "lfe" ((L+R)/2), "surround left" ((L-R)/2), and "surround right" ((R-L)/2) channels.
2) In channel mixer, choose that the subwoofer is formed from all sources so that it's mono.
3) Swap the order of channel mixer and matrix mixer in your DSP manager so that channel mixer is processed first and matrix mixer second.
4) Adjust matrix mixer to output these six channels to the respective output channels. So, you'll probably want the first six outputs to be the six outputs of channel mixer, and the additional two outputs derived from front left and front right channels to run your tweeters.
5) Adjust your crossover/EQ settings accordingly in glissEQ, remembering to fix the routing to accommodate these two new channels.

You're done! 8 channels of processing with center and rear computations. Eat that, miniDSP!


----------



## mda185 (Dec 14, 2006)

Thanks for this detailed post. I have been looking for information like this for a few months. I have a question regarding hardware. Do you have any experience with internal or external sound cards that work well with ASIO and have good sound quality? I have a couple of M Audio Transit USB devices and recently purchased an ASUS Xonar card. The Xonar sounds great but does not lend itself well to stealth installs. I would like to configure an older Dell Latitude D410 mini-notebook for car audio and have thought about using an Indigo I/O PCMCIA card with it because the M Audio Transit does not handle hibernation well. Any suggestions?


----------



## MarkZ (Dec 5, 2005)

I don't really know what's out there. My motherboard doesn't have any pci slots, so I'm stuck with only USB and firewire. I use the Gigaport HD, which is fine. Others have complained about its low voltage, but I don't see that as a problem. It has native asio drivers, so I'm happy.


----------



## turner (Jun 15, 2010)

I read your post now I know perfectly to set up carPC for sound processing using foobar2000.Its really easy step to use.I have use this step.I have no problem.


----------



## MarkZ (Dec 5, 2005)

Want to save some dough? Voxengo released the HarmoniEQ, which appears to have all the same features as the GlissEQ, but is only $79 compared to $119. And, from what I gather, it's a linear phase filter (FIR) but I haven't confirmed this yet. $79 for a full suite of crossover and EQ tools isn't bad at all...


----------



## oca123 (Aug 16, 2010)

I have an MS8 and I don't like it anymore. I am thinking about using a computer as an audio processor.
I have an M-Audio Fast Track Ultra R8 (USB 2.0, rackable, 8 i/o) that I could use. My source is my stock HU which puts out a 5V unbalanced signal (BMW) that is fairly flat and can be used without the need for EQ.
Your article is very interesting and I have already purchased AudioMulch and Virtual Audio Cable.

I have seen several people using Voxengo plugins. I was leaning towards purchasing a copy of Thuneau's plugin. Anyone have any experience or any thoughts on this?

So with that plugin, I could process phase and do xovers. Am I correct in assuming that to do time delays I would need to then measure and add delays to each channel to make sure that all sounds get to the listener at the same time (except for rear fill, which I want to delay further)

I then want to use something like DRC/BruteFIR or similar to tune the car's interior out of the response. How would that integrate with the processing? Should the filters be applied to the stereo source before anything else?







> The Frequency Allocator is a 2 in- 8 out DSP crossover laid out as a series of individual IIR biquad LP and HP filters with parametric EQ section, delay, polarity and output gain per leg. It lets the user dial in highly customized crossover curves up to 42dB/oct and beyond. It is preceded by a full Phase Arbitrator section, so that any active loudspeaker using the Frequency Allocator as a crossover can be made transient perfect as well.
> 
> The Phase Arbitrator is a digital signal processor that alters the phase relations of the material it processes without affecting its frequency content. If dialed in correctly the phase response of the Phase Arbitrator is a mirror image of the phase response introduced by the playback loudspeaker's crossovers. This results in proper alignment of frequencies in the time domain, or Transient Perfectness.


----------



## BowDown (Sep 24, 2009)

Looks like a decent writeup Mark. I'm working through it now using my external soundblaster extigy.


----------



## BowDown (Sep 24, 2009)

What order should the 'Active DSPs' be in?


----------

