1. IMPORTANT:
    We launched a new online community and this space is now closed. This community will be available as a read-only resources until further notice.
    JOIN US HERE

Solved 3 dB/octave LPF?

Discussion in 'REAKTOR' started by mike_jm, Dec 20, 2017.

  1. mike_jm

    mike_jm NI Product Owner

    Messages:
    281
    Does anyone know how I would go about making an 3 dB/octave LPF? I need a gentle LPF like this. Thanks.
     
  2. Jonathan Tremblay

    Jonathan Tremblay NI Product Owner

    Messages:
    402
    You can try a Bessel Filter.

    I got that info from HERE. Under "Bessel Normalization".
     
  3. Jonathan Tremblay

    Jonathan Tremblay NI Product Owner

    Messages:
    402
    I should mention I have never attempted to make a filter from scratch.
    Always wanted to, but there's too much maths in there for me that I don't understand/never took a course in.
     
  4. Paule

    Paule NI Product Owner

    Messages:
    7,555
  5. colB

    colB NI Product Owner

    Messages:
    3,969
    That info table doesn't say that bessel filters have a 3db/Oct slope. The 3db is mentioned for group delay and mirror magnitude (whatever that is)

    I'm pretty sure that you can't build a simple digital filter with less than 6db/Oct cutoff.

    One way to get around that is to build a combination filter with overlapping 6db filters that create an approximation when overlapped and gain adjusted.

    Alternatively look at the pinking filter in the cheap pink noise generator in the factory library. Pink noise has a 3db/Oct rolloff, so a pink noise implementation using filtered white noise will have some sort of 3db filter approximation.

    Also Google pink noise implementation to find useful info on 3db lp filters.
     
    • Like Like x 1
  6. Jonathan Tremblay

    Jonathan Tremblay NI Product Owner

    Messages:
    402
    Oh..haha my bad.

    I know the Ladder Lowpass in the Classic Modular Filter folder has a variable Pole control, with this being the description on the control:
    Manual control of the numbers of filter poles.
    With each pole the damping of frequencies greater than the cutoff frequency increases about 6 dB per octave.
    Scale: 1 pole (6dB/Oct) per unit, e.g.:
    0: the filter is bypassed
    1: 6 dB/Oct characteristic
    2: 12 dB/Oct characteristic
    3: 18 dB/Oct characteristic
    4: 24 dB/Oct characteristic

    By that logic, setting it at 0.5 would yield a 3 dB/Oct cutoff.
     
    • Informative Informative x 1
  7. colB

    colB NI Product Owner

    Messages:
    3,969
    That's unlikely.

    It depends on how the morphing between number of poles is achieved, but assuming it's done by crossfading between the output of two filters each with integer pole counts (different ladder stages), as soon as you go below 1 pole, you have either a 6db filter fading out (cross fade between 1 pole and no sound), or you have some sort of weird shelving filter variant, resulting from fading between 1 pole and the input signal.
    Neither of these options gives you a 3db/oct lp filter.
     
    • Like Like x 2
  8. Jonathan Tremblay

    Jonathan Tremblay NI Product Owner

    Messages:
    402
    Right, yeah it just occurred to me..haha
     
    • Like Like x 1
  9. Tr97

    Tr97 NI Product Owner

    Messages:
    118
    arbitrary slope.jpg
    What works is a cascade of high shelfs instead of lowpass filters to get a <1 pole lowpass filter simulation (without fft-filtering)- attached a demo ensemble
     

    Attached Files:

    • Like Like x 2
  10. colB

    colB NI Product Owner

    Messages:
    3,969
    Yes, that's what's in the pinking filter in the library pink noise. It just uses two high shelf filters, I guess 3 or 4 would give a better result.
     
  11. Tr97

    Tr97 NI Product Owner

    Messages:
    118
    the one attached has 16 stages (now with optimized distances) - but I guess too, 4 would be sufficient
     

    Attached Files:

    • Like Like x 2
  12. mike_jm

    mike_jm NI Product Owner

    Messages:
    281
    Thanks so much Tr97! That sounds perfect. Unfortunately, Reaktor keeps crashing when I try to load either version of your ensemble.

    crash.PNG

    I don't have this problem with any other ensemble. Is there any reason this would be happening? Do these work for anyone else? Tr97 would you mind reposting?

    Maybe you could post as a macro if the ensemble for some reason isn't working?

    Thanks again.
     
    Last edited: Jan 7, 2018
  13. Paule

    Paule NI Product Owner

    Messages:
    7,555
    Both versions of Tr97 works very well without crash.
    Mike the actual version is 6.2.1
     
  14. mike_jm

    mike_jm NI Product Owner

    Messages:
    281
    Thanks! That was it. Just needed to update Reaktor.

    This sounds beautiful. Works great. Thanks again Tr97 and thanks Paule.
     
  15. mike_jm

    mike_jm NI Product Owner

    Messages:
    281
    Unfortunately I seem to have run into a glitch with Tr97's filter.

    Here is a very simplified version of the implementation I am attempting:

    filter broken.PNG
    In principle, the idea is to use an envelope multiplied by in this case the note pitch to dictate the pitch of the filter. This way you get a downward sweep of the filter by the envelope.

    However, upon project initialization, this project goes into overload. I can't figure out why the overload is happening.

    It works perfectly if you delete the turquoise line above, restart the Reaktor engine, and then reconnect the line. So in theory it can work. But it is overloading every time the project is opened.

    Why is this happening? Any solution to get this working? Thanks again guys.
     

    Attached Files:

    Last edited: Jan 7, 2018
  16. Tr97

    Tr97 NI Product Owner

    Messages:
    118
    Found it :D. It is an initialisation glitch occuring in the core cell if the input is connected to something not sending an init event - the result of it is a zero even behind an exp module (in the pitch to frequency macro) which creates the error - can be fixed with a merge module inside the corecell which always creates an init event
     

    Attached Files:

    • Like Like x 2