New Tool (3.0) Offline Filter


#1

8018 Screen Shot 2018-03-29 at 23.55.26.png

This started off as an attempt to learn how filters are programmed but turned into something that could be useful.

It is an implementation of a Biquad filter offering Lowpass, Highpass, Bandpass and Band Reject modes.

It also offers a distortion stage before the filter is applied.

The filter is applied to the currently selected sample and can be launched via the tools menu or the sample process menu

All of the controls have tooltips which explain what they do.

Enjoy!

EDIT:

v1.1 - Added ‘Tube’ (tanh) distortion type

v1.2 - Added Breakpoint Envelope Editor

v1.3 - Added Presets system for Envelope Editor

com.afta8.OfflineFilter_Rns310_V1.3.xrnx (13.6 KB)


Calling functions like "Process DSP"?
(lhaastdaiz) #2

Love the distortion in this thing. Sounds very smooth, even after repeated processing with extreme settings. Tried to make a long break sample sound awful and failed. Even a little bit of sweep seems to leave something nice in the sample.

Thanks very much.


(Meef Chaloin) #3

This is really great, it does sound really nice. It would be nice if it could create a sine kind of sweep as well as up/down sweeps too (unless it can and I’m just missing something).


#4

Thanks for the feedback guys…

Love the distortion in this thing. Sounds very smooth, even after repeated processing with extreme settings. Tried to make a long break sample sound awful and failed. Even a little bit of sweep seems to leave something nice in the sample.

Yeah there seems to be something about offline processing compared to realtime DSP which makes it smoother to my ears, I find this with the CDP tools too.

The distortion in itself is nothing special, ‘clip’ mode is just digital clipping which if pushed hard enough is going to approximate to square waves, ‘fold’ will eventually approximate to noise. Another factor at play is that the output sample will never clip it is always scaled back to the normal range which makes it easier to push the ranges.

This is really great, it does sound really nice. It would be nice if it could create a sine kind of sweep as well as up/down sweeps too (unless it can and I’m just missing something).

If you push the resonance far enough you will basically get sine waves, try the ‘Res Range’ on 1000 and sweep the frequency between say 200 to 800 and you should get sine waves.


(Meef Chaloin) #5

If you push the resonance far enough you will basically get sine waves, try the ‘Res Range’ on 1000 and sweep the frequency between say 200 to 800 and you should get sine waves.

Oh that’s not quite what I meant. I mean the shape of the sweep rather than the sound of it. Maybe a midway freq slider so the start and end frequencies could be the same but it will filter up/down and then return to where it started.


#6

Aah, doh! I understand what you mean now, I have thought about adding support for Renoise instrument envelopes for the filter, you rmidway slider seems doable too. I’ll look into it


(emre_k) #7

Fantastic tool as always! I made a blog post featuring this. Will definitely be using this a lot.

Would it be possible to have more advanced envelope controls?


(zensphere) #8

Nice post, emre!

That bass sounds pretty sick.


#9

Thats very cool emre, nice one!


(toblerpone) #10

could you make a linear phase version as well? :stuck_out_tongue:


#11

Ha! :slight_smile:

Yeah sure I can try, although i’m not sure how much use a linear phase version would be in an offline filter. I can see the benefit for a real time filter where you want everything in phase. Maybe a phase shift option that lets you move the resulting sample forward or back by a number of samples will suffice here.


(toblerpone) #12

For filtering a single cycle waveform, the sample would need to be internally repeated and the last periodic waveform taken, for a correct result. But I could hack that in later on.


(Mykra) #13

This is BRILLIANT! So handy.

Thanks.


#14

This is BRILLIANT! So handy.

Thanks.

Glad you like it :slight_smile:

I’ve done a minor update to this and added a “Tube” distortion type, see first post


(Mykra) #15

That’s a nice addition, thanks again!

A Peaking Eq type would be another welcome addition :wink:


(neopan) #16

being curious, is this oversampled?

also could you implement something like this:https://www.ntnu.edu/documents/1001201110/1266017954/DAFx-15_submission_21.pdf

http://ant-s4.unibw-hamburg.de/dafx/paper-archive/2016/dafxpapers/06-DAFx-16_paper_16-PN.pdf

(both flexible nonlinear saturation based on 3 tanh instead of one)

or this: http://dafx10.iem.at/proceedings/papers/MacakSchimmel_DAFx10_P12.pdf

(tube pre based on Koren’s model)

i think it would be nice to eventually have something like one of these as update for the native renoise tanh saturator…

(my hope is, if someone codes it in LUA Taktik is willing to translate it to Renoise++ :smiley: )

ps. i implemented Andy Cytomic’s SVF from his notes in LUAjit, though i think it’s another approach of biquads it won’t be very usefull here (and my LUA code sucks balls, but it works)

Glad you like it :slight_smile:

I’ve done a minor update to this and added a “Tube” distortion type, see first post


#17

being curious, is this oversampled?

also could you implement something like this:https://www.ntnu.edu/documents/1001201110/1266017954/DAFx-15_submission_21.pdf

http://ant-s4.unibw-hamburg.de/dafx/paper-archive/2016/dafxpapers/06-DAFx-16_paper_16-PN.pdf

(both flexible nonlinear saturation based on 3 tanh instead of one)

or this: http://dafx10.iem.at/proceedings/papers/MacakSchimmel_DAFx10_P12.pdf

(tube pre based on Koren’s model)

i think it would be nice to eventually have something like one of these as update for the native renoise tanh saturator…

(my hope is, if someone codes it in LUA Taktik is willing to translate it to Renoise++ :smiley: )

ps. i implemented Andy Cytomic’s SVF from his notes in LUAjit, though i think it’s another approach of biquads it won’t be very usefull here (and my LUA code sucks balls, but it works)

I wish I had the math skills to understand those papers :slight_smile:

There is no oversampling involved here however, this is a really basic implementation adapted from this website:http://www.earlevel.com/main/2012/11/26/biquad-c-source-code/

The tube implementation is also very simple, just stick the sample data through math.tanh() took me all of two minutes to implement :slight_smile:

I can’t really see myself developing this tool much further but do feel free to hack it

However if you are willing to share the SVF lua code you did then that would be interesting.


(neopan) #18

pm’ed :slight_smile:

I wish I had the math skills to understand those papers :slight_smile:

There is no oversampling involved here however, this is a really basic implementation adapted from this website:http://www.earlevel.com/main/2012/11/26/biquad-c-source-code/

The tube implementation is also very simple, just stick the sample data through math.tanh() took me all of two minutes to implement :slight_smile:

I can’t really see myself developing this tool much further but do feel free to hack it

However if you are willing to share the SVF lua code you did then that would be interesting.


#19

Updated to 1.2 - Added a breakpoint envelope editor which is constrained to the low and high frequency settings.

See first post for file download.

post-4451-0-31036900-1522010104.png

Enjoy!


(ffx) #20

Hi, this is great. Thanks.

I have a feature request:

A start/end value for each parameter, so maybe a general multi point curve which is usable for any parameter. e.g. you could make a selection, and then define 0% wet at start 100% at middle and 0% wet at the end.

Also keep in mind (maybe you already did), that some parameter maybe will require a slight interpolation, so no crackles and less aliasing will appear on parameter change.