Go Back   Cockos Incorporated Forums > REAPER Forums > ReaScript, JSFX, REAPER Plug-in Extensions, Developer Forum

Reply
 
Thread Tools Display Modes
Old 12-08-2018, 09:41 AM   #41
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 4,031
Default

Quote:
Originally Posted by sai'ke View Post
What do you mean by mouseovered changes?
Oh sorry, with this I meant, mouseover the parameter, then turning the mousewheel, and you will see the parameter is changing on the gui, but only in the gui, so internally, the old value is still used, so either the number should not change (not desired option), or also internal representation should be same as on the gui (desired perfect option). Then we do not need to click, for doing changes, just mousever and use mousewheel or something like ShuttleXpress inner wheel turning using left hand. Right hand does mouseovering, left hand turns the wheel.

Another question, where are fonts for all jsfx defined?

UPDATE:
Thanks for the quick fix. Again learned something. Also cool active logo!
PHP Code:
(max(1,slider54)+1

Last edited by TonE; 12-08-2018 at 01:02 PM.
TonE is offline   Reply With Quote
Old 12-08-2018, 04:04 PM   #42
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 1,453
Default

Quote:
Originally Posted by EpicSounds View Post
looks good now
one thing that might be broken on mac is the highlight around some sliders.

https://www.dropbox.com/s/b3wd64mo4m...lider.gif?dl=0

What does the shaper button do?
So, this has prompted me to add some extra visualization, to make it a bit more clear what is happening once you enable those dynamics buttons. Rather than a constant waveshaping, it interpolates between no waveshaping and full waveshaping depending on the location of the dynamic variable (yellow curve).



I also added three more filters based on comb structures (two where only the resonance is run through a comb filter and saturating element, and one that is just a basic comb filter).

Finally, I fixed a very pesky bug that's been bothering me for a long time.

@Tone; Font is set throughout the code. I hard-coded them :P
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [More JSFX: Thread|Descriptions|Reapack]
sai'ke is offline   Reply With Quote
Old 12-08-2018, 05:49 PM   #43
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 1,453
Default

Yeah, it's been on my to-do list

Try 1.18
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [More JSFX: Thread|Descriptions|Reapack]
sai'ke is offline   Reply With Quote
Old 12-08-2018, 08:03 PM   #44
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 1,453
Default

Yeah, font rendering looks pretty terrible on linux in REAPER at such low font sizes. I've tried a few other font faces on linux as well, but they all render poorly at low sizes. I'm afraid it's something you'll have to live with.

If you want to try and mess with it, I exposed the font face in the following file: https://raw.githubusercontent.com/Jo...r/Filther.jsfx

None of the ones I've tried looked substantially better though.
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [More JSFX: Thread|Descriptions|Reapack]
sai'ke is offline   Reply With Quote
Old 12-18-2018, 04:08 PM   #45
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 1,453
Default

Yeah, it's a bit of a pain. Do you know if there is a way to detect OS from within JSFX?

I wouldn't mind adding something that scales up the font or the whole UI on linux up if that'd help (and be possible).

As a hotfix, if you CTRL+F for setupGUI, you can see that retina_scaling is set to gfx_ext_retina there. Could just overwrite it with retina_scaling = 1.1 to scale the UI a bit. This would also make the fonts larger.

The following lines control the font size (also in setupGUI):
Code:
  widgetFontSize = widgetFontSize * font_factor;
  buttonFontSize = buttonFontSize * font_factor;
Finding a combination of settings modifications (scaling and additions to the font size) that look decent enough on linux would also be helpful to me.
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [More JSFX: Thread|Descriptions|Reapack]
sai'ke is offline   Reply With Quote
Old 12-18-2018, 10:03 PM   #46
ReaMike
Human being with feelings
 
ReaMike's Avatar
 
Join Date: Feb 2017
Location: Sydney Australia
Posts: 140
Default

WOW! You make some great additions to Reaper. Well done.
ReaMike is offline   Reply With Quote
Old 12-19-2018, 02:04 AM   #47
Eliseat
Human being with feelings
 
Eliseat's Avatar
 
Join Date: Mar 2018
Location: Cologne
Posts: 1,362
Default

The visualization was the perfect step to let people get aware of whats happening. I'm pretty sure most of them don't know how the modulation depth gets controlled. Great addition!

At first I also had some problems understanding the concept of filther but after watching your video everything got clear. The secret lays behind input adjustment as this creates the basement for any further manipulation. I really love how drastic this beast can get. The possibilities are endless. From subtle saturation, thru warm filtering until the harshest mangling possible - everything goes. And it seems kind of a passion of you to dig deeper and deeper to find even more filter variations. Absolutely stunning!

But one thing would be the most important addition in my opinion. To get the ability to automate cutoff and resonance as this would increase the range of implementation radically.

Filther is one of those plugins which creates only by reading the name a strange feeling in my belly. (A nice tickling ) Its name says everything and has kind of a sexual emphasis. I guess you made something really special.

Many thanks for that
Eliseat is offline   Reply With Quote
Old 12-19-2018, 02:49 AM   #48
Bri1
Banned
 
Join Date: Dec 2016
Location: England
Posts: 2,432
Default

Quote:
But one thing would be the most important addition in my opinion. To get the ability to automate cutoff and resonance as this would increase the range of implementation radically.

ello- well it does do this already-although,this plug is not quite ready for productions quite yet!
sai'ke is aware+knows this is filterlove-it could be filtersex though.


Bri1 is offline   Reply With Quote
Old 12-19-2018, 03:03 AM   #49
Bri1
Banned
 
Join Date: Dec 2016
Location: England
Posts: 2,432
Default

music >IS the sex< OF love!



^think about it
Bri1 is offline   Reply With Quote
Old 12-19-2018, 03:17 AM   #50
Eliseat
Human being with feelings
 
Eliseat's Avatar
 
Join Date: Mar 2018
Location: Cologne
Posts: 1,362
Default

Ah, had not seen that. Many thanks!

That of course makes it kind of hotter to flirt with Filther.
Eliseat is offline   Reply With Quote
Old 12-22-2018, 09:49 AM   #51
cjewellstudios
Human being with feelings
 
Join Date: Sep 2017
Posts: 998
Default

Just came here to say thank you.

The plugin and presets is/are incredibly inspiring.
cjewellstudios is offline   Reply With Quote
Old 12-23-2018, 05:16 PM   #52
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 1,453
Default

Thanks for the kind words

I just pushed an update which should fix some issues with the input clipping not working as expected. It should also fix some precision issues that could arise sometimes with the RMS calculation.

Again, please let me know if you run into issues so they can be fixed

Happy filthering!
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [More JSFX: Thread|Descriptions|Reapack]
sai'ke is offline   Reply With Quote
Old 12-24-2018, 02:25 AM   #53
beingmf
Human being with feelings
 
beingmf's Avatar
 
Join Date: Jul 2007
Location: Jazz City
Posts: 5,065
Default

Very cool. Thanks for such a great sounding tool und schöne Feiertage
__________________
Windows 10x64 | AMD Ryzen 3700X | ATI FirePro 2100 | Marian Seraph AD2, 4.3.8 | Yamaha Steinberg MR816x
"If I can hear well, then everything I do is right" (Allen Sides)
beingmf is offline   Reply With Quote
Old 12-24-2018, 09:51 AM   #54
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 1,453
Default

Danke sehr, ebenfalls!
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [More JSFX: Thread|Descriptions|Reapack]
sai'ke is offline   Reply With Quote
Old 01-05-2019, 11:02 AM   #55
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 1,453
Default

Happy 2019 everyone! Been working hard on a few updates.

1. FIR upsampling/downsampling filters. While a bit more CPU hungry than the default up and down IIR filters, these are useful if you want to work with Filther as just a waveshaper and have some content where linear phase is important. A use case may be drums for instance. You can enable them by clicking the FIR button. Note that only the upsampling and downsampling is done by a FIR, the other filters in Filther are IIR filters. Filther corrects for the group delay induced by this filter.

2. JamesPeters, in the new version double clicking the logo makes the UI a bit bigger (note that you'll have to resize the actual UI yourself though. There is no API for resizing the window :/). Hopefully this will lead to less squinting.

3. I added hover hints to all the controls as in the screenshot below. Hopefully this helps people to use Filther to its full potential.
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [More JSFX: Thread|Descriptions|Reapack]
sai'ke is offline   Reply With Quote
Old 01-06-2019, 08:34 AM   #56
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 1,453
Default

Ah yeah. Hmm. Well, maybe one day we'll get a reliable way of detecting linux from JSFX, then I can make your fix permanent. I did have a look at ReaNoir, but that was a lua thing.

Changelog for 1.26:
- Added cutoff and resonance interpolation. I didn't realize they normally only got updated once per block. This was sorely needed for smooth automation.
- Optimized the wasp-likes a bit by using fast tanh approximation in the parts where it didn't seem to matter much for the filter characteristics. It's still one of the most expensive ones though.
- Fixed issue with LFO not disabling correctly sometimes.
- Added proper reset of filter history (including anti-aliasing filters) whenever filter or filtering mode is changed.

Note:
If you really don't want filter interpolation, you can turn it on/off with automation parameter 50 (interpolation). I deliberately did not expose this parameter, since I didn't want to clutter the UI with a parameter that you'd likely always want on anyway.
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [More JSFX: Thread|Descriptions|Reapack]
sai'ke is offline   Reply With Quote
Old 01-06-2019, 05:29 PM   #57
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 1,453
Default

Changelog for 1.34:
- Added Hz display for filters where this is applicable (ones with no resonance/cutoff coupling).
- Added ability to toggle tooltips (T key).
- Added a linux key shortcut (L key) which makes the fonts slightly bigger (Thanks JamesPeters!).
- Persistent toggles.
- Display modulation range, to try and make it more clear over what range the parameter is going to modulate.
- Added ability to change modulation amount (still relative to the 'dynamic' bar).
- Optimized wasp-like filter a bit by taking out non-linearities that barely affected the sound.
- The last one is a big one though, and it is possible that it may affect some projects. In the old version, for a few of the older filters, the cutoff was coupled to the oversampling rate. This was actually a bug and has been fixed. However, this means that for some projects, the cutoff may have shifted a bit. The affected filters were: LP RC-C, Diode Ladder, Karlsen Ladder, Moog, the Sai'ke Waveshaped ones, notch, narsty, all ms20s, delay feedbok and phase mangler. Unless the cutoff was very high, the difference is likely barely noticable, but I figured you might want to know. If you have any issues, I can tell you how to change the cutoff to get a comparable result to what you had before.
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [More JSFX: Thread|Descriptions|Reapack]

Last edited by sai'ke; 01-06-2019 at 05:54 PM.
sai'ke is offline   Reply With Quote
Old 01-08-2019, 12:35 PM   #58
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 1,453
Default

Quote:
Originally Posted by JamesPeters View Post
Ok, I somehow managed to do this (see attached). I was just adding/deleting nodes within the bounds of the graph, and then that happened. I couldn't select that node to delete it after that (there didn't seem to be a node I could see or randomly click on in that general location of the "V" at the bottom).
Hueh. Wow, that's interesting!

I mean, I can play around, but if you know a way to reproduce it, that'd be great

Do you still have the settings? I'd be interested in seeing the parameter values of the following sliders:
Code:
slider1:2<2,9,1>-Nodes negative
slider2:2<2,9,1>-Nodes positive
slider3:0.15<0,1,.01>-Pos1x
slider4:0.15<0,1,.01>-Pos1y
slider5:0.25<0,1,.01>-Pos2x
slider6:0.25<0,1,.01>-Pos2y
slider7:0.35<0,1,.01>-Pos3x
slider8:0.35<0,1,.01>-Pos3y
slider9:0.5<0,1,.01> -Pos4x
slider10:0.5<0,1,.01>-Pos4y
slider11:0.6<0,1,.01>-Pos5x
slider12:0.6<0,1,.01>-Pos5y
slider13:0.7<0,1,.01>-Pos6x
slider14:0.7<0,1,.01>-Pos6y
slider15:0.8<0,1,.01>-Pos7x
slider16:0.8<0,1,.01>-Pos7y
slider17:0.9<0,1,.01>-Pos8x
slider18:0.9<0,1,.01>-Pos8y
slider19:0.15<0,1,.01>-Neg1x
slider20:0.15<0,1,.01>-Neg1y
slider21:0.25<0,1,.01>-Neg2x
slider22:0.25<0,1,.01>-Neg2y
slider23:0.35<0,1,.01>-Neg3x
slider24:0.35<0,1,.01>-Neg3y
slider25:0.5<0,1,.01>-Neg4x
slider26:0.5<0,1,.01>-Neg4y
slider27:0.6<0,1,.01>-Neg5x
slider28:0.6<0,1,.01>-Neg5y
slider29:0.7<0,1,.01>-Neg6x
slider30:0.7<0,1,.01>-Neg6y
slider31:0.8<0,1,.01>-Neg7x
slider32:0.8<0,1,.01>-Neg7y
slider33:0.9<0,1,.01>-Neg8x
slider34:0.9<0,1,.01>-Neg8y
I will have a look at it on the weekend. Crunch time at work at the moment, so have to focus.
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [More JSFX: Thread|Descriptions|Reapack]
sai'ke is offline   Reply With Quote
Old 01-08-2019, 09:59 PM   #59
foxAsteria
Human being with feelings
 
foxAsteria's Avatar
 
Join Date: Dec 2009
Location: Oblivion
Posts: 10,255
Default

Oh man, you've really improved this a lot! The visual feedback is great to work with. Nice stuff, as always!

How come I can't use Spline or Sine? Or rather, what would make them immediately switch to OFF?
__________________
foxyyymusic
foxAsteria is offline   Reply With Quote
Old 01-08-2019, 10:24 PM   #60
JamesPeters
Human being with feelings
 
Join Date: Aug 2011
Location: Near a big lake
Posts: 3,943
Default

I thought I'd saved the project but I didn't, so I spent some time trying to replicate that behavior and I couldn't. I'll let you know if it happens again though; I'll save the settings if it happens.
JamesPeters is offline   Reply With Quote
Old 01-09-2019, 02:02 AM   #61
Eliseat
Human being with feelings
 
Eliseat's Avatar
 
Join Date: Mar 2018
Location: Cologne
Posts: 1,362
Default

Hi sai'ke,

Filther really gets smoother and more robust with every new update. And its awesome how wide the spectrum of sound mangling is. (Delay feedback is unexpected fun. Also the Comp filters.)
Here is some feedback from me: I recognized you added the ability to use Reapers LFO to modulate the cutoff. This would be one of my most missed features. But it actually doesn't work in any way. It even brings Filther to stop doing anything. I had to reload it several times til I found out it was me trying to modulate what made it stop working.

The Diode ladder filter does auto mute immediately no matter what cutoff or resonance or output/input I use. This seems to be the most instable (peak producing) filter in the set. Even if I stop playing and reduce to minus 40db it sends a big red meter without any sound to listen.

I noticed that the cutoff or resonance (and any other) sliders don't react if you directly click on them. This bothered me until I realized that clicking next to it lets it jump to the desired value. But this feels a bit annoying if you instinctively try to grab the slider but cant move it if its at far left or right position. I'm pretty sure you are kind of a clicker and not a dragger.

And at the end I have a question respective the envelopes. At the moment you set the audio threshold to trigger the envelope. But would it be possible - just theoretically - to trigger this with a MIDI note on? The idea behind this comes with the wish to have a more controllable and natural envelope if you want to use Filther right after a soft synth rather then using audio clips or drum loops.
I have no idea how complicated this is or if its even possible that way, but in my imagination it seems simpler than following the incoming audio signal. It would be like playing (starting) the envelope with every incoming MIDI note as you would play a synth. (You could even make the cutoff optionally follow the note in frequency.) And the curve could start with every note on command exactly at the right moment. No matter if you play it hard or soft. (By the way, there comes the velocity into the game.) Just dreaming.

Anyway. I can't repeat enough how much I like Filther. Sometimes I just open it after Synth1 and get astound how much analog flair and cool distortions the technical sound of Synth1 gets. This is just fun. And the new smoother interpolations makes it really like butter.

Many thanks for this filthy baby.
Eliseat is offline   Reply With Quote
Old 01-09-2019, 02:41 AM   #62
Bri1
Banned
 
Join Date: Dec 2016
Location: England
Posts: 2,432
Default

Quote:
But would it be possible - just theoretically - to trigger this with a MIDI note on?

ello-yes this is already possible- try the midi button there for that...it should either trigger the single expo or,reset the other types cycles to start over.
There's still quite a few gremlins lurking,so caution is advised atmo for 'production uses'.
once this is stabilized,maybe more filter types could be added over time-library style.

cheerz.
Bri1 is offline   Reply With Quote
Old 01-09-2019, 03:01 AM   #63
dub3000
Human being with feelings
 
dub3000's Avatar
 
Join Date: Mar 2008
Location: Sydney, Australia
Posts: 3,955
Default

demos sound cool - nice work!
dub3000 is offline   Reply With Quote
Old 01-09-2019, 04:53 AM   #64
Eliseat
Human being with feelings
 
Eliseat's Avatar
 
Join Date: Mar 2018
Location: Cologne
Posts: 1,362
Default

Quote:
Originally Posted by Bri1 View Post
ello-yes this is already possible- try the midi button there for that...it should either trigger the single expo or,reset the other types cycles to start over.
There's still quite a few gremlins lurking,so caution is advised atmo for 'production uses'.
once this is stabilized,maybe more filter types could be added over time-library style.

cheerz.
Didn't know that with the single exp. But it does not work as expected. It starts over - yes - but it creates kind of an offset LFO sinus modulation with a soft ease in. Sounds laggy and out of sync to me. Or did I something wrong?

I made a simple MIDI arpeggio loop with Synth1, chose a LP filter, enabled the MIDI button and took the single exp. as preset. The rate then adjusts the speed of the envelope, the modulation range the offset of the cutoff start. It kind of does a sweep down of the cutoff but without using the envelope (attack, decay, rms). And its clearly shifting over time.
Eliseat is offline   Reply With Quote
Old 01-09-2019, 05:19 AM   #65
Bri1
Banned
 
Join Date: Dec 2016
Location: England
Posts: 2,432
Default

Quote:
Didn't know that with the single exp. But it does not work as expected

ello- well as this is a new tool for all users and author themself- all are learning!
if you find any 'un'expected behaviours-sai'ke is your man- report everything to him please+ty as soon you find,for speedier possible fixes that may be required...
either in this thread as bug reports,or if sai'ke prefers pm..>? dunno,but i try to.

it would seem reasonable that every reaper js coder checks each other's code-so any gremlins can be eradicated --immediately-- and with better wisdom applied, the tools become greater,quicker for all to then enjoy.

*to add- typo's typing errors/duplicates are a very common coding error (i do it allll the time!! lol) -silly things like this can cause mega glitches in da matrixes-- so any findings of that type are really helpfull actually..
just yesterday i even spotted a typo in phead's r10 midi implementation charts-- and that's an officially released document... it happens.

Last edited by Bri1; 01-09-2019 at 05:38 AM. Reason: 1xtra.
Bri1 is offline   Reply With Quote
Old 01-10-2019, 01:16 AM   #66
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 1,453
Default

Hey, I will go into more detail later. This weekend I should have some time to look at these.

This thread is fine for suggestions. My reaper inbox tends to overflow and I constantly have to delete messages.

Eliseat/Bri; Re, the envelope thing, it has crossed my mind to maybe add a two slider LFO option with an attack and decay (LFO can be triggered by MIDI). But I'm running out of sliders fast (there's a limit of 64 sliders).

Maybe an alternative would be to have a button which switches the dynamic triggering mechanism to a binary mechanism. So instead of taking the RMS as input, make the RMS be driven by MIDI on and offs. On sets it to 1, off sets it to 0. Hitting two note on's means that you will need two note offs to go back to off state. Then you have a digital response on which the attack and decay can depend. In this way, I could probably tack that flag into an already existing flag and not lose a slider.

Let me think on this a bit more when I have more breathing room after my deadline on Friday

I also noticed the questionable stability of the diode ladder. That's one of two analog models that I did not develop myself. It seems to not behave nice for either very low, or very high cutoffs in combination with distortion. I've been meaning to have another look at it, to see if I can include some limiting mechanism somewhere in the solving algorithm to stabilize it some more, but I need some time to look and analyze the equations in more detail.

@foxAsteria; Might be the filter you're using. Some filters (the moogs and the narsty from the top of my head) don't behave nice with the spline waveshaper very frequently. They exhibit fairly frequent instability in that combo. For those filters, I excluded the option to set it to a spline. I should probably either grey out the option for those. If it happens for all filters, then that's a bug.

What I could do I guess is swap out the spline for those filters with an atan and still have the spline as predistortion.
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [More JSFX: Thread|Descriptions|Reapack]
sai'ke is offline   Reply With Quote
Old 01-10-2019, 02:18 AM   #67
Bri1
Banned
 
Join Date: Dec 2016
Location: England
Posts: 2,432
Default

decisions,decisions!!
time is a p.i.t.a.- oh but wait,even time can be pliable !
Bri1 is offline   Reply With Quote
Old 01-10-2019, 05:31 AM   #68
Eliseat
Human being with feelings
 
Eliseat's Avatar
 
Join Date: Mar 2018
Location: Cologne
Posts: 1,362
Default

Quote:
Originally Posted by sai'ke View Post
Maybe an alternative would be to have a button which switches the dynamic triggering mechanism to a binary mechanism. So instead of taking the RMS as input, make the RMS be driven by MIDI on and offs. On sets it to 1, off sets it to 0. Hitting two note on's means that you will need two note offs to go back to off state. Then you have a digital response on which the attack and decay can depend. In this way, I could probably tack that flag into an already existing flag and not lose a slider.
This sounds very promising to me. An if its even easier for you to do it should be the best thing. Triggering note on/off over LFO would be confusing anyway in my opinion. Better make a small MIDI trigger button and use the given audio detection envelopes "attack, decay" to shape the envelope. But two "note on" commands should be prohibited as this makes no sense to me. If you play a chord this should be handled as one note on. (maybe the last played note) But I see where this ends. How to handle to close incoming "note on"s?

Hm, I have no idea.

But many thanks for your response.
Eliseat is offline   Reply With Quote
Old 01-10-2019, 03:52 PM   #69
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 1,453
Default

Ah, maybe I should explain the reason for the 'counting' a bit more. As far as I know, and I'm not sitting in front of my REAPER pc but am in a hotel atm, I can only detect note on / offs.

The way I see it, I have three options for implementing this.

1. Digital toggle. Start the envelope on a note on. Make it play a completely fixed envelope with a fixed decay and attack. Downside is that you don't really have a hold. And that you'd have to decide what to do upon a retrigger. Restart the envelope or continue from where you left off but restart the attack? Big downside would be that there would be no hold possible.

2. On/Off without counting. That means that if you were to play a chord, you'd see say 4 note on's. Now let's say, you release one note, then the note off would already be triggered. If I were to make it digital, it would then initiate the decay the moment you release one note; despite still having the four down.

3. Count. For every note on increase counter by one, for every note off decrease it by one. When it's bigger than zero make the dynamics act like they've exceeded the threshold.

I think the third makes most sense, and is probably also what you want?
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [More JSFX: Thread|Descriptions|Reapack]
sai'ke is offline   Reply With Quote
Old 01-11-2019, 12:54 AM   #70
Eliseat
Human being with feelings
 
Eliseat's Avatar
 
Join Date: Mar 2018
Location: Cologne
Posts: 1,362
Default

Hi sai'ke,

don't want to bother you to much as I see that you are busy at the moment. But some thoughts from me.

The problem is, you don't have voices like a synth. So it doesn't make sense to respect anything like that. There are of course some methods of how to handle MIDI triggering so that it is useful and musical. The big question is: What do if a second note on comes in without a note off before?

  1. First thing that comes to mind would be a synth bass. Those are mostly monophonic and should be handled like that. So you play the note, the envelope gets started. But you are right, this wouldn't make sense without a hold phase. Which implies that attack and decay wouldn't be enough? I don't know. In a mono synth the voice gets forced to stop at the moment you play the next note - then the whole envelope process starts again. Would perfectly fit into Filthers area. But this seems kind of irrational as you would have to force Filther to ignore the waiting for the first note off as it has to drop the first note on command completely.

  2. But there is of course Legato which gets offered by many mono synths too. This would mean the hold phase stays the same level (independent from LFOs) if the second note on comes in, which then only starts a note change but not a new amp or filter envelope in the synth. So this would also make sense for Filther. Note on comes in, envelope starts until hold phase, second note on comes in, hold phase stays until the last note off comes in to start the decay. (This is what you mean with counting.)

  3. So anything else should be covered with this two methods. If you play a pad with a chord, you probably would use the legato method. If you play a lead, you would use the monophonic method. The only thing I can imagine that would need more sophisticated handling would be legato with velocity or after touch, which then needs to get computed the average velocity of all notes or of the last one played.

The two methods would look like this:
  • First note on comes in - waiting for note off to start decay phase. If second note on comes in, stop waiting, start envelope again and wait for exactly one note off to start decay. (Ignoring the first completely)
  • First note on comes in - waiting for note off to start decay phase. If second/third/n's note on comes in, wait til every note off (counted) came in to start decay phase.

By the way: This would be a game changer as it offers so much more abilities for Filther in the dimension of timing. You could use slow attack or velocity sensible sounds without hesitating. Or take synth1, turn on a saw-tooth without filtering and start to mangle it with Filther as it would be part of the synth. Amazing!
It would be even more useful with velocity: Drum sounds which get filtered dynamically, bass sounds which would sound like directly filtered inside the synth. (This is one of the most missed features in RSO5000 for me.)

Anyway. This would be only the topping of the cake as Filther already is a great enrichment for Reaper and of course a stunning gift for the community.

Many thanks for your hard work.
Und Grüße us Kölle!
Eliseat is offline   Reply With Quote
Old 01-11-2019, 02:55 AM   #71
Bri1
Banned
 
Join Date: Dec 2016
Location: England
Posts: 2,432
Default

ello- quite a few samplers/synths have key tracking modes-1 for lfo rate key syncing+ 1 for per note filter ahdsr+velocity tracking.

it depends on wether what your using is monophonic/polyphonic,or polysonic as like the very powerfull oldschool synth: thor>




nice-it's stuck with a few different filters-but these can be combined using mod matrix etc.
IF filther was actually built into some type of unit,it would seem to make more sense having chord note filter triggerings-- but as it's just an insert fx- it may be better to just settle for single midi toggles..eh?
with a nnxt sampler-the per voice filter key tracking gives octave ranges in 1200 cents--
good work sai'ke so far!

Last edited by Bri1; 01-11-2019 at 03:03 AM. Reason: 1xtra
Bri1 is offline   Reply With Quote
Old 01-11-2019, 09:56 AM   #72
foxAsteria
Human being with feelings
 
foxAsteria's Avatar
 
Join Date: Dec 2009
Location: Oblivion
Posts: 10,255
Default

After checking this out a bit I just have 2 small feature suggestions: tempo synced LFO(for rhythmic filter modulations) and finer slider control. I'd prefer they were half as sensitive, but a holding a modifier to get this would be fine too. Thanks Sai'ke!
__________________
foxyyymusic
foxAsteria is offline   Reply With Quote
Old 01-11-2019, 10:22 AM   #73
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 1,453
Default

@Eliseat
No worries. I don't feel pressured. I will add and fix what I can, but make sure to do the stuff I have to do as well

Yeah, alright. Both legato and repeater modes should be doable I think. I will work on adding them over the weekend.

@Bri1
As for the comparison with synths, yes. Running filters of this type per voice would be way too expensive CPU-wise. If I ever do decide to make a synth (and that is a big if for now, as I want to get this one nice and stable first), I'd have to pick some of the cheaper filters and cheapen them a bit more even. The nonlinear MS-20 emu might be a contender for something like this. It sounds pretty non-linear but is still moderately easy on the CPU. Especially if I'd approximate the tanh with something a bit cheaper.

I originally set up filther with monophonic basses in mind (growling and grunting basslines and such). Drums were kind of an afterthought. For polyphonic heavy material, you're probably better off with a different solution, unless you want to use the cutting as a more artistic effect

@FoxAsteria;
Host tempo synchronization was on my list as well.

Re. the sensitivity, you mean for when you're controlling it via keyboard? Because when you control it via mouse, it'd seem very weird to me to have the mouse move twice as fast as the slider. Or is that what you mean?
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [More JSFX: Thread|Descriptions|Reapack]
sai'ke is offline   Reply With Quote
Old 01-11-2019, 10:36 AM   #74
foxAsteria
Human being with feelings
 
foxAsteria's Avatar
 
Join Date: Dec 2009
Location: Oblivion
Posts: 10,255
Default

Quote:
Originally Posted by sai'ke View Post
@FoxAsteria;
Host tempo synchronization was on my list as well.

Re. the sensitivity, you mean for when you're controlling it via keyboard? Because when you control it via mouse, it'd seem very weird to me to have the mouse move twice as fast as the slider. Or is that what you mean?
Sweet! Nah, I just mean the slider is too sensitive to get fine control. E.g. if you hold ctrl and drag a TCP knob, it gives finer control. Maybe it's not that big of a deal once there is tempo sync. Just found it hard to move the sliders precisely, but I was also trying to sync to tempo by ear... Thanks again!
__________________
foxyyymusic
foxAsteria is offline   Reply With Quote
Old 01-11-2019, 10:54 AM   #75
Bri1
Banned
 
Join Date: Dec 2016
Location: England
Posts: 2,432
Default

Quote:
I originally set up filther with monophonic basses in mind (growling and grunting basslines and such). Drums were kind of an afterthought. For polyphonic heavy material, you're probably better off with a different solution, unless you want to use the cutting as a more artistic effect

^aye- i only really considered this mono thing as an afterthought actually, as a prime intended use for me might be mainly towards drum,or fast transient stereo feeds- the plug in seems more geared towards stereo signals-aside from the ms+mid/side options..
but a lot of people use only mono audio feeds per track,mixing all mono tracks for final stereos..
expense was always a thing with any types of filters on any devices for me over the years-- just disabling the filters alone,on some synths,can really be noticable for cpu cycles,especially with older spec systems like single cores+1gig ram machines,xp users etc...

i guess vst,or any other audio unit type,handles this info much differently,compared to js>?
all filtering processes still seems expensive even with the most modern coded plugins... dunnoez..
Bri1 is offline   Reply With Quote
Old 01-11-2019, 11:59 AM   #76
Bri1
Banned
 
Join Date: Dec 2016
Location: England
Posts: 2,432
Default

Quote:
just mean the slider is too sensitive to get fine control. E.g. if you hold ctrl and drag a TCP knob, it gives finer control.

^agreed- very tricky to place at exact values right now- 1 thing i always found great with some of reaper is the ability to >type in values< -indispensable in such cases as this--within 'boundries' of course,as some jsfx typed values can go well over intended working ranges-but sometimes them effects are totally awesome!! (user is unable to automate them values though)


filther would be perfectly placed inside rs5k-but meh-- who knows how the wind blowzzz...
as an insert fx i guess more would use it as a post fx,rather than pre?..depends.
tempo sync would be nice also.
Bri1 is offline   Reply With Quote
Old 01-12-2019, 08:37 AM   #77
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 1,453
Default

Changelog 1.37
- Tempo sync lfo.
- Normal LFO displays frequency in Hz.
- Dragging sliders an option now.
- Drag more slowly if you hold SHIFT.

Changelog 1.38
- Bugfix ignore x4 parameters for inversion parameter in RMS mode (they otherwise can lead to negative RMS).

P.S. This was a feature before, but maybe some of you were not aware of it, if you use the scroll-wheel while over the control, you can make more precise adjustments. This is what I tended to use for the last tweaking.

I think there are two reasons Filther is on the expensive side for some of the filters. First, I use a fair amount of trig functions to get the saturation behavior that occurs inside these filters (specifically the opamps show saturation behaviour). It's this saturation behaviour that makes them sound fatter as you drive them. Trig functions are usually pretty expensive however. On some filters, I used approximations of trig functions to make them a bit faster, but I only did this where I couldn't hear (or see) a difference in the sound for my test sounds. Even with this, it is still not super cheap.

Second, the non-linear filters can't be solved explicitly, which means that for every sample, I have to solve a system of equations. The most extreme ones (WASP, CCM, SEM, Moog) have 4 equations, which means I have to invert a 4x4 matrix multiple times. While I hardcoded this with the equations substituted in to make it faster, this is still just going to be relatively expensive, no matter what. I thought that since it's a single voice effect, it'd be okay for a post processing effect such as this.

If I were to do a synth however, I'd probably try to approximate the trig functions with something that I can solve explicitly so that I don't have to do this iterative procedure anymore inside the sample loop. This would make the filter sound a bit different; but in a polyphonic setting you'd probably not notice this as much.

If you want to keep down cpu, don't oversample too much. If you're mostly interested in the filters and not the waveshaping, then it's rarely necessary to oversample more than 3x.

As for jsfx. I think jsfx is super cool in that you can really get from 0 to a running prototype very quickly. The only downside is that the language is a bit sparse on abstractions and that I'm not entirely sure how clever the code optimization is and that it's a bit tricky to measure performance. If you code a VST in C++, you usually have a bit more control on how specific things are handled. For example, processors have special units that can operate on several numbers in parallel (Single Instruction, Multiple Data) and if you structure your equations in a specific way, you can make use of these. This way, you get more computation per cycle. I suspect (but don't know) that jsfx tries to find such optimizations when compiling jsfx to runnable bytecode, but it's not entirely clear to me what coding practices allow it to do so better. Anyways... long story short, there may be future optimizations that I can still do; but Filther will always be on the slightly more expensive side of things.

If there's a lot of demand for it, I can maybe provide a little hint in the combo box for how expensive the different filters are.
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [More JSFX: Thread|Descriptions|Reapack]

Last edited by sai'ke; 01-12-2019 at 10:19 AM.
sai'ke is offline   Reply With Quote
Old 01-12-2019, 12:03 PM   #78
Eliseat
Human being with feelings
 
Eliseat's Avatar
 
Join Date: Mar 2018
Location: Cologne
Posts: 1,362
Default

As always: busy as a bee!

I will check the news soon. Many thanks!
__________________
☆.。.:*・°☆.。.:*・°☆.。.:*・°☆REAPER//✿◔‿◔)°☆.。.:*・°☆.。.:*・°☆
Eliseat is offline   Reply With Quote
Old 01-12-2019, 06:46 PM   #79
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 1,453
Default

Changelog 1.39
- Added MIDI dynamics. Toggle in dynamics panel allows you to set the dynamics controlling system to MIDI.
- Legato / Retrigger mode can be set in dynamics panel.
- Added actual time in attack/decay sliders.

Changelog 1.40
- Fixed bug that allowed for last spline node to be deleted (I think that's the bug you ran into JamesPeters).

Changelog 1.41
- Hide dynamics slider.

Especially 1.39 is a relatively big addition/change, so please let me know if you run into any bugs.
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [More JSFX: Thread|Descriptions|Reapack]
sai'ke is offline   Reply With Quote
Old 01-13-2019, 01:56 AM   #80
sinkmusic
Human being with feelings
 
sinkmusic's Avatar
 
Join Date: Feb 2006
Location: decepticon mothership in a hidden place inside a mountain
Posts: 3,754
Default

Thank you for sharing your work, Filther is very nice !
sinkmusic is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 02:30 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.