Quote (woxnerw @ Mar. 14 2006,18:42) |
Is that why the "Rise-Time" of the "Spike" is so important?
The Spike .. being the Impulse Response Waveform?
Bill.. |
Not exactly.
Here's the theory, but be warned that I have a limited understanding of the actual math. (I have Hamming's book, the classical text, but I get lost in the first chapter, which covers the necessary underlying math. Makes me wish I'd skipped fewer of those Differential Equations lectures ... I'm still astonished I got a C in that class! I walked out of the final exam certain that I'd flunked it since I didn't have a clue what I was doing and just imitated some of the stuff I'd seen on the chalkboard. I was embarrassed to turn it in, but I PASSED!)
BTW, I'll get a little of this wrong but will update it later with text in hand.
Principal fact: Any infinite impulse response (IIR) filter can be completely characterized by its response to an impulse input.
What's this mean?
I won't go into what IIR really means, but most things that act like filters in nature and analog circuitry are IIR filters. This includes natural reverbs, audio filters, and a host of other things.
"Completely characterized" means we know all there is to know about how it will respond to a give input, so we can (in theory) duplicate it exactly.
OK, then, what's an "impulse input?" It's when the input signal starts at the maximum input value and immediately drops to zero. Well, this is where reality creeps in, and we find that despite the truth of the fact above, we can't REALLY completely characterize anything in the physical world, mostly because it's impossible to go from any value to zero instantaneously.
But we can get close enough.
BTW, what we do ideally is feed this (impossible) impulse into the thing we want to imitate and record its response. Then we wave a mathemagical wand over the recorded response to produce something called a "filter kernel" or "convolution kernel". Later, in our emulation, we plug the kernel into a generic "convolution engine", and bingo, we've built a model for what we measured. Feed it an input signal and (within the limits of our model framework, like bit rate) out comes the same thing that the real thing would do. Which is why SIR sounds so dang good.
Now, how do we feed an impulse into a real system? Well, we can't. Two impossible parts: (1) getting it to start at the maximum value, and (2) dropping it to zero instantaneously.
Obviously, can't do either of these. But what we can do is fire a gun or something that makes a nice sharp BANG spike. Ideally, it goes from zero up to a maximum and then comes right back down, without squirrelling around on the way down. I'm not sure how we compensate for the upward part, but I bet there's mathmagical wizardry to minimize that. Still, it's important for the sound to go up and back down as cleanly and quickly as possible (if recorded in an anechoic chamber). We need it to be as close to an impulse as possible. Otherwise, the underlying math that this is all based on comes crumbling down like a house of cards on a windy day.
Someone should post this to a wiki somewhere!
BTW, I don't know whether the files called "SIR impulse files" are recordings of the responses or are actually convolution kernels. It doesn't really matter because one is derived from the other, but with the waveform you can choose how long a kernel to calculate. The longer the kernel, the better the results but the higher the latency.
Cheers
Jeff