![](/i/fill.gif) |
![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
And so, I have spent an entire day constructing a filter bank.
Actually constructing a bank of filters that split a signal into several
signals is pretty easy. Getting it so that adding those signals together
actually yields the original signal has taken me *an entire day* to day
right.
For the longest time, the wave kept coming out somewhat out-of-phase
with the original. Eventually I figured out that that's because I need
to shift the input signal in relation to the filter kernel (thus making
it technically non-causal).
And then the signal still doesn't "quite" match the original, especially
at low frequencies. A added another channel for very low frequencies,
and now the signals match in shape, but not quite in amplitude.
Another hour spent fiddling with scaling factors, and I discover that if
the 1x and 2x channels are set to half the amplitude of all the other
channels, I get a crisp, perfect signal match. Yay, me!! :-D
...Further testing reveals that while the filter bank does split the
signal into different parts, and adding them back together exactly
reproduces the original signal, each channel actually contains a fairly
wide collection of frequencies. For example, the 64x channel still
contains entirely too many high frequencies.
Damnit! >_<
I hypothesize that this is due to spectural leakage caused by the
rectangular window over the filter kernels. Maybe with a Blackman window
or something I can get channels that actually contain only certain
frequencies.
Hmm, and how much do you want to bet that as soon as I change the
details of my filter bank, the signal reconstruction will stop working
again?
I can't help feeling that somebody somewhere has already figured all
this stuff out, and if I could just get my hands on that information,
all of this stuff would suddenly seem a whole lot easier... :-(
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Remember when "don't bank on it" actually meant something? :-)
--
Darren New / San Diego, CA, USA (PST)
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Invisible <voi### [at] dev null> wrote:
> And so, I have spent an entire day constructing a filter bank.
> Actually constructing a bank of filters that split a signal into several
> signals is pretty easy. Getting it so that adding those signals together
> actually yields the original signal has taken me *an entire day* to day
> right.
> For the longest time, the wave kept coming out somewhat out-of-phase
> with the original. Eventually I figured out that that's because I need
> to shift the input signal in relation to the filter kernel (thus making
> it technically non-causal).
> And then the signal still doesn't "quite" match the original, especially
> at low frequencies. A added another channel for very low frequencies,
> and now the signals match in shape, but not quite in amplitude.
> Another hour spent fiddling with scaling factors, and I discover that if
> the 1x and 2x channels are set to half the amplitude of all the other
> channels, I get a crisp, perfect signal match. Yay, me!! :-D
> ...Further testing reveals that while the filter bank does split the
> signal into different parts, and adding them back together exactly
> reproduces the original signal, each channel actually contains a fairly
> wide collection of frequencies. For example, the 64x channel still
> contains entirely too many high frequencies.
> Damnit! >_<
> I hypothesize that this is due to spectural leakage caused by the
> rectangular window over the filter kernels. Maybe with a Blackman window
> or something I can get channels that actually contain only certain
> frequencies.
> Hmm, and how much do you want to bet that as soon as I change the
> details of my filter bank, the signal reconstruction will stop working
> again?
> I can't help feeling that somebody somewhere has already figured all
> this stuff out, and if I could just get my hands on that information,
> all of this stuff would suddenly seem a whole lot easier... :-(
Sorry for quoting the entire long post, but I find it rather amusing
that this amount of text doesn't really tell exactly *what* you are doing.
The only thing the text refers to is some completely unspecified "signal",
as well as a completely unspecified "wave".
What "signal"? Radio signal? TV signal? Sound signal? Video signal?
Something completely different? What is the source of this signal? What
is it that you are trying to do with this "filter" you are applying to this
"signal"? What is the point of your post anyways?
--
- Warp
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Warp <war### [at] tag povray org> wrote:
> Invisible <voi### [at] dev null> wrote:
> > And so,
> What "signal"? Radio signal? TV signal? Sound signal? Video signal?
> Something completely different? What is the source of this signal? What
> is it that you are trying to do with this "filter" you are applying to this
> "signal"? What is the point of your post anyways?
>
Why are we here? What is the meaning of 42?
Stephen
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Darren New <dne### [at] san rr com> wrote:
> Remember when "don't bank on it" actually meant something? :-)
>
LOL
Stephen
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Warp wrote:
> Sorry for quoting the entire long post, but I find it rather amusing
> that this amount of text doesn't really tell exactly *what* you are doing.
I want to split a sound signal into several frequency bands.
Actually, technically I *have* split a sound signal into several
frequency bands... but not in a very useful way. In particular, the
lowest frequency band still contains large amounts of high frequencies.
It's really frustrating to have worked this long on something and not
got very far. I should probably go read a book or something...
--
http://blog.orphi.me.uk/
http://www.zazzle.com/MathematicalOrchid*
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Stephen wrote:
> Why are we here?
We're bored?
> What is the meaning of 42?
Would it be wrong to reply "4 * 10^2 + 2 * 10^2"? ;-)
--
http://blog.orphi.me.uk/
http://www.zazzle.com/MathematicalOrchid*
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
>> What is the meaning of 42?
>
> Would it be wrong to reply "4 * 10^2 + 2 * 10^2"? ;-)
Yes... yes it would... PWN3D! >_<
--
http://blog.orphi.me.uk/
http://www.zazzle.com/MathematicalOrchid*
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Orchid XP v8 <voi### [at] dev null> wrote:
> Warp wrote:
> > Sorry for quoting the entire long post, but I find it rather amusing
> > that this amount of text doesn't really tell exactly *what* you are doing.
> I want to split a sound signal into several frequency bands.
Why?
(Btw, did you know that even if a sound signal has only one single
frequency, a discrete fourier transform is usually completely unable
to find that single frequency, and instead will find a large (potentially
infinite) amount of frequencies around that real frequency?)
--
- Warp
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
>> I want to split a sound signal into several frequency bands.
>
> Why?
>
> (Btw, did you know that even if a sound signal has only one single
> frequency, a discrete fourier transform is usually completely unable
> to find that single frequency, and instead will find a large (potentially
> infinite) amount of frequencies around that real frequency?)
I think you just answered the question, right there. :-)
No, in seriousness... I'm playing around with designing an audio codec.
Most of the ones I've seen are based on chopping the signal into bits,
taking some kind of Fourier-related transform, selectively removing some
of the data, and then trying to hide the discontinuities between
segments. My plan is to seperate a signal into several continuous
signals, and process those.
--
http://blog.orphi.me.uk/
http://www.zazzle.com/MathematicalOrchid*
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |