A how to for a PC XO.

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
Follow up question on DRC

ShinOBIWAN,

I find this solution to be very interesting. However, I have a couple of questions I hope you don't mind responding to:

1. I would probably be more interested in performing the XO function just to drive a pair of subwoofers, sort of a 5.2 type system. How could this be configured to provide some level of bass management support? My front drivers aren't bad, but they're definitely not full range capable. For example, DVD-audio with a dedicated subwoofer channel vs. standard redbook CD playback.

2. How do you recommend controlling volume and switching? I have tuner, LP, DVD-audio, and SACD players.

3. Way back in post #5, you said:

Remember that you'll need to have light tasks for it such as 2 channel audio for it to work flawlessly if you use an all in one solution. I can't stress that enough because if you start playing DVD and especially high definition video and games you will start to hear all manner of stranger noises from the speakers that could actually potentially damage the HF drivers. Those strange noises are things like pop's, stuttering, cracking, hiss etc.

Can you expand on this, please? What's causing the noise, and does it appear only on 2-channel sources?

Very interesting what you have built here!

Thanks and regards,

Rob Weinstock
 
diyAudio Member
Joined 2004
Re: Follow up question on DRC

weinstro said:
ShinOBIWAN,

I find this solution to be very interesting. However, I have a couple of questions I hope you don't mind responding to:


I'll try.

1. I would probably be more interested in performing the XO function just to drive a pair of subwoofers, sort of a 5.2 type system. How could this be configured to provide some level of bass management support? My front drivers aren't bad, but they're definitely not full range capable. For example, DVD-audio with a dedicated subwoofer channel vs. standard redbook CD playback.

Well I've got a single LFE channel, 3 full range channels and 6 channels to create a 3-way stereo XO. That's a total of 10 channels.

If you want 5 full range with 2 filtered channels for LFE then that's even easier than the above.

What I'd do is put a high pass at 80hz in all the 5 full range channels. Then for the LFE channels simply drop in a low pass at 80hz. You can then add EQ and delays if required.

2. How do you recommend controlling volume and switching? I have tuner, LP, DVD-audio, and SACD players.

Switching will be different from card to card. The way it works with the RME is a bank of 8 presets. The can be convieniently accessed with ALT+1,2,3... etc. In these presets you can assign levels, routing and ultimately source assignment. Takes a while to setup but once its done its incredibly easy to switch.

I have the shortcuts labelled up on my palmPC to actually indicate each presets function there is then a wireless link to an Xlobby client on the dedicated XO PC which automates signals from the PalmPC to TotalMix which controls the RME. This means source selection works just like a traditional remote control. I don't even need a monitor for the dedicated XO PC.
One thing I haven't managed yet is to find the control codes for the volume control in RME's TotalMix, so I can't control volume directly but can setup presets with various volumes and select them from the palmPC. For instance I've got a reference level setting for HT and a night time level for HT and music.

I can control virtually every aspect of transport controls in all my players from the PalmPC too.

The most simple way to control all this is of course with your mouse & keyboard from the desktop in XP. Its nowhere near as elegant as the PalmPC solution though.

Can you expand on this, please? What's causing the noise, and does it appear only on 2-channel sources?

The noises are caused by dropouts and processing halts in the plugins that form the basis for the XO. When the computer get overwhelmed you'll notice that audio stops or more likely will repeat and stutter as it gets 'stuck' in a processing bottleneck.

This is very dangerous for you tweeters and the level can be quite loud sometimes the line-level signal is driven into distortion and whilst your amps won't be clipping they will be playing a clipped signal.

A good example is try to setup a stereo 3-way XO with DRC and phase. Playback a lossless audio file at 44kHz then try unzipping a 1Gb file. The fact that processing is required for decompression and hard drive accesses means that you'll start to hear audio nasties.

Simple stuff like web surfing whilst running the XO is fine but you can imagine the strain when filtering and EQing 5.1 channels of audio! That's why you need a dedicated PC with serious horse power.
 
I haven't read the entire thread here, it has just been pointed out to me from a link on avsforums.

You folks may be interested in documenting some of your findings on a site I have setup to try and help document this room correction and digital XO stuff

http://www.duffroomcorrection.com

The main technique I am using is a PC based surround crossover with subsequent room correction. I have written a little tool which will take a very high quality room response measurement. I then use some software called DRC to "invert" this and correct the audio as much as possible (this is non trivial by the way).

I then use a bit of linux software to implement the crossovers and downmix any 5.1 surround to a kind of 4.2 signal. All this with HUGE filters on each channel to do the correction is done in less than 10% CPU on a P2.8Ghz. There is another 12%+ for the resampling though, but this leaves plenty for the machine to perform other HTPC duties

Obviously if you don't like linux or want to use one of the fancy cards discussed here then you can use something other than Brutefir, but the previous stuff should all be very relevant

Oh, and the 4.2 means four speakers around the corners of the room and then I have a stereo infinite baffle sub - this means 4x 15" long throw woofers burried in the floor in an "infinite" sized box (technically the entire underfloor space). This gives a bass response with very low distortion which extends flat below 10Hz...

Please feel to contact me via the site for more info on my setup, but please also create an account on the site and document your own systems, and writeups on any of the technical details for doing this stuff would be appreciated. It's quite hard to find info on digital XO stuff, and so I created the site to try and bring it all into one place

Good luck all

Ed W
 
Hmm, I have just read the first post in this thread. Update to the above:

- My technique above can be performed using only free software.

- Using Brutefir on linux I can run a huge number of filters with very low CPU usage. Brutefir uses FFTW in the background (Fastest Fourier Transform in the West in case you were wondering...) - there are instructions on my site on creating a bootable system running Brutefir in a 4.6Mb compact flash memory stick (OK, so compare that with a stripped down windows install and tell me you can do better?)

- I also use an RME 9632 and the quality is excellent (can't hear any difference between it and my old Meridian 508.24 CD player, which is supposed to be pretty good). I also own an RME 96/8 PAD and I can't really hear much difference between it and the 9632...

I don't really think the quality of the soundcard is your biggest problem. Even a crappy built-in soundcard can reach significant quality levels if you go down the DRC route

- "DRC" is an extremely powerful bit of software and is capable of much higher levels of performance than the software described in the original thread. It will try it's hardest to flatten the freq response, but more interestingly it will try and correct phase response to some extent (this will make the correction more position specific, but it's quite bearable). The end result is that the stereo image jumps out in size quite dramatically (you can hear the room that the artists are in, rather than the sound of your own room)

This is not to knock the original poster in any way. There are many, many ways to skin a cat and your solution looks FAR more user friendly than the method I am using. I would be interested in having you transfer your notes to the web site if you are willing because it's a very interesting writeup?

Good luck all
 
Gooseman, your solution is one that I am interested in exploring, for the reason that 1) it is in linux which I would prefer to use and really good DRC (free) software is written in linux and 2) its free. I also am looking to replicate ambiophonic sound in my room as this is the greatest improvement in audio that I have ever heard myself. A linux processing box seems a natural solution.
 
I'm trying out Console with my M-Audio Revolution and it seems to be working. But it only works with the analog inputs. I'm unable to route sounds from windows through Console. Is this what "Internal routing of digital signals" is for? Or am I missing a setting somewhere? I use my pc as an htpc and do not use any external soundsources.
 
JoshK said:
Gooseman, your solution is one that I am interested in exploring, for the reason that 1) it is in linux which I would prefer to use and really good DRC (free) software is written in linux and 2) its free. I also am looking to replicate ambiophonic sound in my room as this is the greatest improvement in audio that I have ever heard myself. A linux processing box seems a natural solution.

Well, linux has it's pros and conns, but the majority of the solution is multiplatform (eg my IR recording app and DRC are both multiplatform). Brutefir is just a way to implement the filters and there are other ways - I don't think the quality of implementation is too important in general anyway

Ambiophonics is another difficult topic - there is nothing on my site about it yet, but I might try and knock up a quick summary for you later (or please have a go yourself, just link in the main sites to read up on at least). The best place to start is probably the AlmusVCU site (same author as brutefir) - he has some really nice software that you might want to play with, but be aware this is a big and badly documented subject and you are going to have to do a lot of research and write questions to the big wiggs in the research game (also read the sur-sound list I guess?)

Good luck. Please do document your findings on my site

Ed W
 
diyAudio Member
Joined 2004
ewildgoose said:
Hmm, I have just read the first post in this thread. Update to the above:

- My technique above can be performed using only free software.

- Using Brutefir on linux I can run a huge number of filters with very low CPU usage. Brutefir uses FFTW in the background (Fastest Fourier Transform in the West in case you were wondering...) - there are instructions on my site on creating a bootable system running Brutefir in a 4.6Mb compact flash memory stick (OK, so compare that with a stripped down windows install and tell me you can do better?)

- I also use an RME 9632 and the quality is excellent (can't hear any difference between it and my old Meridian 508.24 CD player, which is supposed to be pretty good). I also own an RME 96/8 PAD and I can't really hear much difference between it and the 9632...

I don't really think the quality of the soundcard is your biggest problem. Even a crappy built-in soundcard can reach significant quality levels if you go down the DRC route


Great stuff goose.

What does your setup offer in terms of flexibility? A quick run through basic operation would give me an idea.

- "DRC" is an extremely powerful bit of software and is capable of much higher levels of performance than the software described in the original thread. It will try it's hardest to flatten the freq response, but more interestingly it will try and correct phase response to some extent (this will make the correction more position specific, but it's quite bearable). The end result is that the stereo image jumps out in size quite dramatically (you can hear the room that the artists are in, rather than the sound of your own room)

This is not to knock the original poster in any way. There are many, many ways to skin a cat and your solution looks FAR more user friendly than the method I am using. I would be interested in having you transfer your notes to the web site if you are willing because it's a very interesting writeup?

Good luck all

I fully agree with all that.

Take a look back in this thread though and you'll see that its entirely possible to use convolution to do DRC instead of just EQ with this setup.

I've tried it with both Voxengo Pristine Space and Voxengo CurveEQ. Pristine is the more difficult to setup and offers around the same performance as CurveEQ in my room once a good impulse has been captured.
I fully expect that this would change from room to room depending on the severity of room related problems - I have minimal room to combat early and rear reflections from about 1.5Khz, so I expect that helps.
Because of the levelness of the playing field between the two setups I choose the simplest and lowest latency option and that's CurveEQ. Please understand that this may fully change between room and speakers so you have to choose what offers the better performance.

I also found that curveEQ was much better with sub bass frequencies than a convolutor. So it may still be necessary to include both in a setup.

Pristine Space also allows you to use stereo impulse captures ie. two mics. For better ambient space retreival. You'll find that virtually all the others are mono. Voxengo have an 8 channel version in the works also for multichannel.
 
Llafriel said:
I'm trying out Console with my M-Audio Revolution and it seems to be working. But it only works with the analog inputs. I'm unable to route sounds from windows through Console. Is this what "Internal routing of digital signals" is for? Or am I missing a setting somewhere? I use my pc as an htpc and do not use any external soundsources.

Yes exactly. The "internal routing" is what allows you to take standard windows "WDM" output and re-route it as input for your ASIO software (Console). You need this feature in order to process sound generated inside the PC.
 
Shin:

Two questions:

1) How did you calculate your delay values?

2) After reading a good bit about this DRC program I'm curious, it appears as if CurveEQ is only correcting the amplitude of the frequecy response and that there are added benefits to be had from correcting the phase as well. Any plans to try out a DRC based system to see what kind of improvements can be had from a mix of amplitude and phase adjustments?
 
ok
Shino i nee quick help here

i got all the software installed ..
( tests purpose, and if i like this setup i'll buy some ! )

my sound card is a Waveterminal
that has Directwire in the config pannel
supports asio, mme and all stuff like that :p

So inside console, i understand how to link the plugins and all,
but i cannot seem to get the input/output right

for now i want to focus on gettin DRC whithin voxengo stuff to work correcvlty, since my Xos are all hardwired in my mains ...

could you please post on how to properly setup Asio and all for it to work correctly ..i cannot even get CurveseQ to show that it is working ( i've clicked on display input/output, and powered on Console on the top with the button ...)
tried almost all inout/output possibilities

should i be using Directwires to configure something there?

what are we aiming at in terms of input output for a stereo solution?

neway, thanks for reseraching all this great stuff :)
was looking into PC Xos since last year, but nothing quite effective came in so ..

it's cool to see that we are making some steps here! :)
 
ShinOBIWAN said:
What does your setup offer in terms of flexibility? A quick run through basic operation would give me an idea.

Ohh... OK, now you are asking.

Well, you get out your copy of Matlab, generate the XO filters using the FIR1 function or similar, graph them using the graph function..... Get the idea. Extremely flexible, but not all that easy to use...

Do also see the MaxXO program from Uli on the http://www.duffroomcorrection.com website though. He has implemented all the major crossovers you could want in a nice gui package. He also implements NT crossovers which are quite nice and not normally seen outside pro-audio (like an LR but different)

So you basically build your entire system so that it "works" then you play an sweep through each channel and record the output with a mic from the listening position. You then feed this sweep into the DRC command line application and it generates you a filter which inverts the room response as far as is possible (perfect inversion would not be nice to listen to and you would need your head pinned in position)

You take the filters from the output of the DRC program and insert them into your convolver and start playing music.

In my setup I have a couple of simple scripts which help with process of recording the impulse response, feeding it into the DRC app to generate a filter and then inserting the end filter into Brutefir. So it's basically push button.

ShinOBIWAN said:

Take a look back in this thread though and you'll see that its entirely possible to use convolution to do DRC instead of just EQ with this setup.

.....

I also found that curveEQ was much better with sub bass frequencies than a convolutor. So it may still be necessary to include both in a setup.

A convolver is just a word for the software which implements your filters basically. Baring bugs in implementation, the real magic is generating proper filters to start with.

There are two main types, FIR and IIR. Both have their strengths and weaknesses, but for all a rough approximation we can say that anything you can do with an IIR is possible with a FIR filter and so with a decent amount of horsepower and a decent filter generator you can limit yourself to just a FIR convolver and do anything.

ShinOBIWAN said:

Pristine Space also allows you to use stereo impulse captures ie. two mics. For better ambient space retreival. You'll find that virtually all the others are mono. Voxengo have an 8 channel version in the works also for multichannel.

I'm not sure what you are describing here? Using my Impulse recording app from the website you can capture the IR using a feedback loop through a second channel on the soundcard. This allows you to remove any time delay due to the soundcard and also any freq distortion due to an imperfect soundcard. Is this what you mean?

Doing multiple sweeps at different points in a room is also an interesting idea, but it seems extremely difficult (to me) to figure out the maths of averaging the results? Presumably one could time align them based on group delay, but what would it mean to do a simple average? You would need some equivalent of a complex-average, ie taking into acount both phase and freq response? I haven't found many research papers on how you might do this, but I have done a bit of searching.

Personally I think an interesting idea would be to look at variation around the average and reduce the IR towards zero in places where there is lots of variation and less so where you have strong agreeemnt. The idea would be to leave an IR which shows the main reverb and reflections which are strongly present in several locations, but not show (and hence not correct) for the reverb which appears out of phase in different places. Just a thought, but I haven't tried to implement it yet...


m0tion said:
Shin:
1) How did you calculate your delay values?

2) After reading a good bit about this DRC program I'm curious, it appears as if CurveEQ is only correcting the amplitude of the frequecy response and that there are added benefits to be had from correcting the phase as well. Any plans to try out a DRC based system to see what kind of improvements can be had from a mix of amplitude and phase adjustments?

1. If you have a wideband IR then the simplest approximation is to simply view the impulse responses for both and align the main spikes.

If you don't have an IR, or you are looking at aligning at some particular freq then you have more work to do and perhaps the easiest way is the simple physical method of sending a test tone to both drivers at the crossover freq, with the phase to one driver inverted (take the speaker wire out and plug it in the other way around). Then you should play with the delay between drivers and the point of maximum cancellation is the point they are best time aligned. Simple huh

Don't forget to invert the speaker connection again when you are finished

2) There are plenty of systems which invert only freq response. Tact is a very good example and produces very good results. The trick is how to invert the room response and not to over compensate for dips and bumps. The Tact also uses a bunch of resampling which can cause some slightly audible distortion in very high end systems. The correction is also min-phase and hence there is some phase distortion which some people claim to be able to hear

Doing phase correction is the path to REALLY high quality correction. DRC will generate a min phase version of its correction and it's hence easy to compare the min-phase and the full phase corrected result.

The filters which implement phase correction have a massively wider stereo image and you can suddenly hear into the room that the recording is made instead of hearing the reverb in your own room.

This is definitely the way to do, but bear in mind it's a path which sometimes involves a lot of fiddling because with linear phase filters you are pushing the lmiits of what is possible to correct without audible distortion due to pre-echo in the filters.... It's definitely worth it though

There is some other research from Uli Bruggeman into AQT2 and using that to get a better freq response. The idea is that the ear does not "hear" the same way that your FFT does. So flat freq response on an FFT is not the same as you hearing a flat response. By doing some psycho accoustic evaluation on the audio you can correct the sound to be accoustically flat rather than FFT flat. It seems to show good promise to me.

Ed W
 
JimMTVT:

Take a look at the screenshot from Vil's setup at the bottom of this post. The basic idea is to route WDM output to ASIO input in DirectWire and then turn off WDM output. Then, in Console, click the Audio button under "setup" on the main screen and select your sound card, choose ASIO, and set your sample rate to 48KHz. If you want to be able to process audio from your line-input, in Directwire connect the inputs you want to the outputs you'd like (probably 1->1, 2->2, ...). Now, in Console, click on the "Func" button to bring up the function tab. Drag out the two functions labeled "Wave In" and "Wave Out". Then connect them together with the VST plug-ins you'd like to use in between them (refer to picture below). Turn on Console using the power button and hopefully everything will work.Hope this helps.
 
wildgoose:

I know this may be a ridiculous request, but would it be possible for you to compile a document, similar to the one compiled by John Rush for DRC, detailing how to setup a system similar to your's in Linux. I don't have any problem at all working with Linux, I've got a fair amount of experience with it, but I'm having trouble getting a good idea for what the setup procedure would be under Linux.

Your wiki provides a lot of good information, but it also covers a large variety of different forms of DRC and different ways to implement it. I'm interested in trying out a system that is very similar to yours in terms of configuration and would just like to know specifically what pieces of software you use and in what order you use them. Just an example, you say that you generate your filters using Matlab (but I'm assuming you're using Octave), what is the procedure for generating said filters?

Also, I've already got a decent test setup going using Console and CurveEQ. From what I've read it seems that CurveEQ is a amplitude correcting, min-phase filter while DRC creates amplitude and phase correcting filters, is this correct? Is the only benefit I'm getting from using DRC additional phase correction, or is there more to it than that? Also, it seems that DRC is the ONLY piece of software that currently offers phase correction, is this also true?

You've piqued my interest =).
 
I guess I am actually using the method somewhat describe by Denis (it's his software I am using, except that I do the IR measurements using the measurement software I wrote which is available on the website)

I would love to promise to write more, but I am going to be very short of time for the next few weeks, so I am not likely to be able to keep my promise. I am starting my own business at the moment and time is quite precious...

Also in a couple of weeks time I am going to visit a chap who is building a commercial version of a DRC based box which will be more of a hifi component with a GUI and basically you just drop it into your existing setup. I would be happy to tell people more if you write to me offlist

I am more than happy to help you through the process though. Perhaps if you describe your setup (or point me directly to a post which describes it) then I will jot down the rough steps for *you*.

You will need to tell me how many outputs you have from the PC and what XO freqs you need for each output. I will then help you generate some basic crossovers at those frequencies and configure Brutefir. This gets you a working system that can play music. Actually see here for some notes:
http://www.duffroomcorrection.com/wiki/User:Birkinshawc

Next step is simply to use my recording software to generate an IR of each speaker and then you feed that into DRC and generate a compensation filter and stuff that inline with all the other filters into Brutefir. Takes a short while only and not complicated

Then sit back and listen


There are not many tools for generating XO coefficients. I have tried to scribble a quick page together here describing the current situation and how to generate some filters in Matlab. I hope someone will finish it for, it just cut and pasted some bits together:

http://www.duffroomcorrection.com/wiki/Digital_Crossovers
 
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.