Hi all!
How can I port this patch to Pd?
from
I could not find any proper alternative to [fffb~] (filterbank external is not accepting freq, Q and gain values). The alternative for [uzi] and [zl] is only throught cyclone external?
thanks!
Porting Max code to Pd - Filterbank with tap delay
Hi all!
How can I port this patch to Pd?
from
I could not find any proper alternative to [fffb~] (filterbank external is not accepting freq, Q and gain values). The alternative for [uzi] and [zl] is only throught cyclone external?
thanks!
I don't know what [fffb~] does, but [uzi] can be replaced by [until] connected to a counter (which can be created with [f ] and [+ 1]). What does [zl group] do?
@inum https://lists.puredata.info/pipermail/pd-list/2009-05/070317.html
It looks as though you are controlling [fffb~] with messages so [biquad~] should work.
You will need [equalizer] from the ggee library to write the coefficients to [biquad~] and I suppose you will need 8 copies as it is a single filter.
Pretty sure [delwrite~] and [delread~] can replace [tapin~] and [tapout~]
A lot of useful [list] abstractions can be found in the list-abs library.... mainly abstractions and so Vanilla Pd...
And so you will find a clone of [zl group] in that library......... [list-group]
A lot of Max clones can be found in the cyclone library.... [uzi] is there, [maximum~] also, and maybe some others you are looking for..... but audio-rate clones are likely to be externals.
David.
@inum I was thinking that [zl group] isn't necessary if you consider its function in the larger context. It's just preparing a list of 8 random numbers to be arguments to [fffb~ 8]. In Pd, I'd instead make an abstraction that has some kind of resonant bandpass filter in it. When it's banged, it would randomize its freq, Q, and gain. Clone that 8 times and bang them all. That would cover everything from the [uzi] through [fffb~ 8]. I have a favorite [click~] translation that I'm dying to share, but you didn't ask
(@alexandros I just Google "max msp <object name>" for each object's doc page in order to maintain the illusion that I've used Max/MSP )
Is that original max patch feeding the same list of numbers into cutoff, Q and gain?
Q and gain values up to 50*55 = 2750?
Cover your ears...
hjh
@ddw_music eh, worst case it'll just clip (as I learned by embarrassing myself on this forum)
Edit: doesn't even sound clipped to me
filterBank.zip
Edit 2: oops, I missed that each clone should only generate one random number and use it for freq, Q, and gain
Thanks a lot you all!!!
@ddw_music I asked myself the same, but I tested the Max patch and it did not explode... Maybe there is a internal protection in this [fffb~] object...
@whale-av I was searching for a [fffb~] port because it is more efficient way of creating a filter banks. I guess you push it really further (hundreds of filters) then it makes a difference.
@jameslo how did you make [inlet~] with a second outlet without having to pass a fwd
message?
For connecting the [rand~] and [maximum~] path to the [delwrite~] they way to go is using [snapshot~], right?
Is there any alternative way to do what this branch is doing using only control rate and no audio signals?
@inum I dunno, I didn't do anything, it just came out that way! Pd 0.53.1 on Windows.
@inum said:
For connecting the [rand~] and [maximum~] path to the [delwrite~] the way to go is using [snapshot~], right?
One way to go, yes. You could also use [noise~], [samphold~], [phasor~], and [clip~} if you wanted to stay in signal domain.
Is there any alternative way to do what this branch is doing using only control rate and no audio signals?
Sure, it will be quantized by the block size period though, which may or may not be an issue. {metro}->[random] with some range shifting and [clip]
@inum said:
@ddw_music I asked myself the same, but I tested the Max patch and it did not explode...
It occurred to me later that there is one possible reason why you might use the same value for Q and gain.
A standard bandpass filter produces a much quieter signal than the input (because it's filtering away most of the input's energy). Higher Q = narrower passband = more energy stripped away = quieter output. Scaling the output by Q -- bandpass(signal, cutoff, Q) * Q
-- is sometimes called a "constant skirt gain" bandpass filter, where resonance can be louder than the input.
Also, and I haven't investigated this but it's a reasonable guess, a bandpass filter's ring time may be shorter at higher frequencies, for the same Q -- so it might make sense for Q to be proportional to frequency.
But, in the patch as given, you don't have any control over ring time. IMO Q should scale the frequencies by some factor (to make the ring time longer or shorter), and then use this Q value in gain as well ("constant skirt gain").
Maybe there is a internal protection in this [fffb~] object...
There must be some protection because the original patch can generate a 0 frequency, which is bad when filtering. If the filter internally clips the frequency to a reasonable range, then you wouldn't hear anything bad -- but to be precise, it's a bit of careless math in the original patch. 0 frequency is not useful in this context and should be avoided.
PS I'm not familiar with "the filterbank external" -- searching did not reveal which filterbank external you tried.
hjh
@ddw_music It's probably this from Pd Extended......
A "sort of" graphic equaliser.
64-bit update on Deken by lucarda.
David.
Oops! Looks like something went wrong!