Help - Search - Members - Calendar
Full Version: room correction systems
Hydrogenaudio Forums > CD-R and Audio Hardware > Audio Hardware
mattbr
Hi,

i was wondering if anyone had experience with systems like TACT's RCS, and if it was possible to emulate such devices in software (the RCS apparently uses a windows PC to do some of it's lifting during setup).

Secondarily, i'm curious to hear what the downsides of using these are, and if there's any rational explanation other than flatter response to the "it kills the groove" comments i've come across.
postul8or
That link wasn't working for me.
SebastianG
Experience ? No. But I already tinkered with the same idea. But you need a calibrated MIC and A/D converter to do that. The idea is quite simple:

- Send a click (unit impulse) to a speacker
- Record the speaker's output via the MIC and A/D converter
- Evaluate the power spectrum of the recorded click
- Calculate an equalizer setting

What we want to correct with this is the coloration of your sound reproduction system. Problem is: The measurement gives you the joint coloration of your sound reproduction system + your sound recording system (MIC + A/D converter). So in order to successfully compute an EQ setting which cancels your sound reproduction's coloration you need to know exactly what your recording system (MIC + A/D converter) does to the sound in terms of coloration -- hence the "calibrated MIC and A/D converter".

How are you calibrating the sound recording system ?
You could do it with a calibrated sound reproduction system :-)

Hier beisst sich die Katze in den Schwanz.
(German saying, sorry, I don't know a proper English translation)

So, the idea is quite simple and the implementation of a software that calculates a nice filter impulse response you could use with Foobar2000+Convolver plugin is not that difficult. The remaining problem: Where do you get a "calibrated" MIC+A/D converter ? ("calubrated" = known characteristic, coloration)


Sebi
Triza
My Yamaha RX-V650 and all higher models does this. They ship it with a microphone.

Triza
KikeG
People use the inexpensive Behringer ECM8000 mic for these tasks, since it's very flat from 20 Hz to 20 KHz, much more than any loudspeaker. It costs less than $100, but requires a phantom power mic amp. As to the ADC/DAC used, as long as they are not totally crappy, they will have even flatter response than the mic.

There is free software that deals with calculating the required inverse filter. The Aurora plugins for CoolEdit Pro/Adobe Audition provide different ways for measuring the impulse response of speakers+room and the generation of the required inverse filter. There is also Dennis Sbragion's DRC, which just deals with the calculation of the inverse filter, but is more advanced in this task.

Quite more info and links at DRC's doc page: http://drc-fir.sourceforge.net/doc/drc.html
David Nordin
I started working on something like this once for foobar but it bored me with all work it required for multispeaker setups and decided to throw all of it in the recyclebin :B

I think I have some code and calculations lying around somewhere along with testresults etc. if someone is to pickup the idea.
It started as a plugin for foobar2000, so that's the base platform I intended it for.

I like the idea but it would need a more complex parametrix EQ, or more simple - convolver differencial file.

*edit: reading the page KikeG posted, that's a *good* project smile.gif
krabapple
Someone on AVSforum has already worked up a good freeware tool for measuring the room and generating a 'correction' parametric EQ

http://www.avsforum.com/avs-vb/showthread.php?t=529224
ultranalog
As a matter of fact I have recently set up something like this using Foobar's convolver and MATLAB.

The basic idea is you play back a white noise file with all DSP's off and capture your speaker output with a calibrated microphone.

Then you run the m-file which uses the Levinson-Durbin recursion to create a whitening impulse response. The number of coefficients, i.e. samples in the wave file can be adjusted.

This impulse response wave file you load into Foobar's convolver. I managed to straighten out my speakers with a 10 sec noise recording (left and right separately recorded from left and right speaker respectively and joined to a stereo wave file in Audition).

As a bonus, it works as an echo canceler as well. I have my speakers set up along the long side of my living room so I suffered a massive reflection from the side walls which is now gone (using 16k coefficient impulse response).

CODE
% GEN_HT generates a whitening impulse response for a given colored noise
% input file. This file is supposed to be recorded by a non-band limited
% microphone from a white noise source.
%
% Applying the generated impulse response to the data will then yield a
% straight frequency response.
%
% version: 0.1
% 20051018, Remco Stoutjesdijk
% version: 0.2
% 20051019: converted to stereo, verbose via waitbar, interactive file
% selections
%
% TODO:
% - anti-alias
% - indicate error to user
% - compile to c-code / executable

function gen_ht();

close all; clear;

% User interaction for file locations and number of coefficients
[FileName,PathName] = uigetfile('*.wav','Select the input wave file');
if isequal(FileName,0)
   errordlg('No input file selected, aborting')
   return;
end
infile          = strcat(PathName, FileName);

[FileName,PathName] = uiputfile('impulsresponse.wav','Save output file name');
if isequal(FileName,0)
   errordlg('No output file selected, aborting')
   return;
end
outfile         = strcat(PathName, FileName);

answer = inputdlg('Please enter the number of coefficients desired', 'Determine resolution', 1, cellstr('1000'));
N_filter = str2num(char(answer));

% input data
N               = wavread(infile, 'size');
[y, fs, nbits]  = wavread(infile);

if N(2) > 1
   mesg = (['Input file contains ', num2str(N(2)), ' channels.']);
else
   mesg = (['Input file contains ', num2str(N(2)), ' channel.']);
end
h = waitbar(1, mesg); pause(1);

% autocorrelation
waitbar(0, h, 'Calculating autocorrelation');
for channel = 1 : N(2)
   rho(:, channel) = xcorr(y(:, channel));
   waitbar(channel/N(2), h);
end
% figure(1); plot(rho); hold on

% create whitening filter
waitbar(0, h, 'Calculating coefficients');
% N_filter        = 1e3;
for channel = 1 : N(2)
   [coeffs(:, channel), error(channel)] = levinson(rho(N(1):length(rho), channel), N_filter);
   waitbar(channel/N(2), h);
end

nbits           = 32;

mesg = (['Writing wave file: ', num2str(fs), ' Hz, ', num2str(nbits), ' bits, ', num2str(N_filter), ' coeffients...']);
waitbar(0, h, mesg);
% normalize to prevent clipping
coeffs          = coeffs ./ max(max(coeffs));
wavwrite(coeffs, fs, nbits, outfile);
pause(1); close(h);

msgbox(['Whitening impulse response of ' num2str(N_filter) ' coefficients written to ' outfile '.'], 'Done');


I would love to know if someone were able to convert this script to an .exe or Foobar plugin so I can share it with my friends!
DigitalMan
How about this open source FIR room correction filter project - helpful?

DRC: Digital Room Correction
mattbr
thanks a lot for all the pointers...

i stumbled onto fuzzmeasure, which appears to also be an interesting solution, at least as far as measuring is concerned, on OSX... Now onto finding a good EQ that's easy to use and system-wide, as well as wether or not some kind of time-correction based balance is possible or desirable.
Patsoe
Hi, I guess I'm late to kick into this topic (but doing so nonetheless smile.gif).

QUOTE(KikeG @ Nov 28 2005, 09:17 AM)
People use the inexpensive Behringer ECM8000 mic for these tasks, since it's very flat from 20 Hz to 20 KHz, much more than any loudspeaker. It costs less than $100, but requires a phantom power mic amp. As to the ADC/DAC used, as long as they are not totally crappy, they will have even flatter response than the mic.

Behringer are actually selling a digital equalizer that can serve this task - it is called the Ultracurve, and it's at least a lot cheaper than the TacT system. edit: it sells in Holland for about 350 euro

product page
a review

It is somewhat less flexible than the TacT system, which is available in a multichannel version and moreover can include the subwoofers seperately. From the propaganda on TacT's site, it seems that thing is not just your average equalizer:

QUOTE
Based on the deformation of the pulse both frequency domain and time domain response can be accurately determined. The actual frequency response is compared to the desired frequency response defined by the user, and the system calculates an extremely complex inverse filter for each speaker which will give the desired frequency response with the best possible time behavior. The filter is itself an impulse (in the time domain) which corrects both the time and frequency domain behavior of the speaker - room combination. As the correction takes place in the time domain, the level is the same before and after the impulse with no sacrifice of dynamic range.

source

Now my very basic understanding of Fourier analysis doesn't save me here, but isn't this a funny claim? I mean - how would you correct in the frequency domain without changing things in the time domain?

Anyway, I think it is very cool if the same level of sophistication could be achieved with the proposed software alternatives. Would that be very CPU intensive? (I guess a fairly modern CPU can do most things a specially designed DSP does, but not as easily?)
flattop100
Pfff. Just carpet your walls. Then buy a nice pair of headphones.
bug80
QUOTE(ultranalog @ Nov 29 2005, 01:10 AM)
As a bonus, it works as an echo canceler as well. I have my speakers set up along the long side of my living room so I suffered a massive reflection from the side walls which is now gone (using 16k coefficient impulse response).

As far as I know, it's impossible to cancel a reflection using just two speakers and one impulse response measurement. The echo will only be canceled to some extent at the position of the microphone. At other positions, you will make it worse.
WmAx
QUOTE(bug80 @ Jan 22 2006, 05:21 PM)
QUOTE(ultranalog @ Nov 29 2005, 01:10 AM)
As a bonus, it works as an echo canceler as well. I have my speakers set up along the long side of my living room so I suffered a massive reflection from the side walls which is now gone (using 16k coefficient impulse response).

As far as I know, it's impossible to cancel a reflection using just two speakers and one impulse response measurement. The echo will only be canceled to some extent at the position of the microphone. At other positions, you will make it worse.
*



That is correct. This would give a new definition to the term 'head in a vice', because to get optimal behaviour, you really would need to have your head in a vice to be held in a precise location to get the best results. Even then, since you have two ears, and only compensated for one location, it would still not be perfect compensation. Electronic room correction(s) should ideally be limited to equalization of modal low frequency resonances(since these are for the most part minimum phase in behaviour, and can remain stabile in corrected response for more than an inch of distance from the measured position). Even then, an effective correction may only be optimal for a couple of feet to the left or right of the measured position. This satisfactory in any applilcation where a small limited seating position(s) are present. But the correction of actual echoes and non-minimum phase echoes has a tiny effective distance from the measured position.

-Chris
bug80
QUOTE(WmAx @ Jan 23 2006, 02:04 AM)
QUOTE(bug80 @ Jan 22 2006, 05:21 PM)
QUOTE(ultranalog @ Nov 29 2005, 01:10 AM)
As a bonus, it works as an echo canceler as well. I have my speakers set up along the long side of my living room so I suffered a massive reflection from the side walls which is now gone (using 16k coefficient impulse response).

As far as I know, it's impossible to cancel a reflection using just two speakers and one impulse response measurement. The echo will only be canceled to some extent at the position of the microphone. At other positions, you will make it worse.
*



That is correct. This would give a new definition to the term 'head in a vice', because to get optimal behaviour, you really would need to have your head in a vice to be held in a precise location to get the best results. Even then, since you have two ears, and only compensated for one location, it would still not be perfect compensation. Electronic room correction(s) should ideally be limited to equalization of modal low frequency resonances(since these are for the most part minimum phase in behaviour, and can remain stabile in corrected response for more than an inch of distance from the measured position). Even then, an effective correction may only be optimal for a couple of feet to the left or right of the measured position. This satisfactory in any applilcation where a small limited seating position(s) are present. But the correction of actual echoes and non-minimum phase echoes has a tiny effective distance from the measured position.

-Chris
*


Exactly. However, in Wave Field Synthesis applications you can correct for reflections in an extended area, up to the spatial aliasing frequency (typically around 1000 Hz), giving benefits when strong reflections are present. To do so, you need information on the wave field on a large number of microphone positions (but, you can also simulate this wave field without measuring it). This was the subject of my M.Sc. project.

With a stereo setup, maybe you can correct a little for the colouration introduced by the reflections in an extended area using minimum phase EQ filters, when all reflections occur in a short time window (< 20 ms or so). (edit: not sure about that)
KikeG
AFAIK Dennis Sbragion DRC does try to compensate to some extent for low freq. room modes and reflections over something more than a tiny spatial spot.

As to Behringer equalizers, the techniques mentioned here are quite more than just plain equalization.
Patsoe
Any opinions on the TacT RCS? I don't see how their information should be understood (see my quote 4 posts up I think) - the way I now read it, they claim to do both amplitude and phase corrections.

@bug80: which University are you at? Any chance a not so brilliant physics MSc can understand your MSc thesis?

edit: hi, KikeG. I guess I have to read more into these things to appreciate the differences. Any handles to start? Thanks.
edit2: well, I found some useful handles from Digitalman's link - http://drc-fir.sourceforge.net/doc/drc.html
WmAx
QUOTE(bug80 @ Jan 23 2006, 05:20 AM)
Exactly. However, in Wave Field Synthesis applications you can correct for reflections in an extended area, up to the spatial aliasing frequency (typically around 1000 Hz), giving benefits when strong reflections are present. To do so, you need information on the wave field on a large number of microphone positions (but, you can also simulate this wave field without measuring it). This was the subject of my M.Sc. project.


I am not familar with the process. Would you let me read your project? It sounds like such systems are potentially very useful primarily for sound re-enforcment or non high fidelity use; given the bandwidth limitiations of the correction. But for hi-fidelity playback purposes, the reflections above this limitation will still result in signicant degradation. In retrospect, I don't think it's really a big deal to have some acoustic treatments; effective treatments can be reasoably thin (2" can cover a broad band, down to about 250Hz, when using rigid fiberglass or very high grade acoustical foam) and masked with fabric that matches the walls.

QUOTE
With a stereo setup, maybe you can correct a little for the colouration introduced by the reflections in an extended area using minimum phase EQ filters, when all reflections occur in a short time window (< 20 ms or so). (edit: not sure about that)
*



I don't know how one would use an equalizer to effectively remove or reduce reflection colorations since essentially, you can only control amplitude. If there is a unique situation where it is a bandwidth specific delayed reflection[and I'm not sure how this could occur in a real situation], then this can be reduced in audiblity by way of cutting the band to simply reduce relative SPL.

-Chris
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2008 Invision Power Services, Inc.