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

Reply
 
Thread Tools Display Modes
Old 05-11-2019, 06:33 PM   #81
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 655
Default

Quote:
Originally Posted by heda View Post
Very nice Tight Compressor. I don't mind the sliders. It could have its own thread
Quote:
Originally Posted by Edgemeal View Post
Tried 'Saike Tight Compressor' on bass guitar track, very impressive! Also like meters/graphs that display whats happening, very nice. Keep up the good work!
Quote:
Originally Posted by sinkmusic View Post
I tried the Tight Compressor, and enjoyed it a lot on some drum tracks : thank you so much for your plugins !
I also like the very clever way to use JS graphic features
Thanks peeps, I appreciate it. I hope it's useful
Sidechain is in the pipeline.

Quote:
Originally Posted by TonE View Post
What about a new type of spectral analyzer, specialized for human voice in the range 32..4096 Hz?
See explanation with images: https://github.com/michaelsjackson/r...orums/issues/2
You can zoom into a range with the spectral analyzer in the repo (drag outer mouse button). I don't really feel like adding another.

Quote:
Originally Posted by Eliseat View Post
Lovely.
Only thing I found so far is that some changes create crackles. Have to take a closer look.
Many thanks, Sai'ke. (๑•̀ㅂ•́)و✧ Yeah!
It should only happen when either switching wah type or oversampling level. But I should probably suppress that. Maybe mute the audio out for the first few milliseconds like I do in Filther when these guys are selected. Especially the crybaby takes a long time to get to "steady state"

So uh, today I pushed a big update for Squashman. Sadly, I was forced to remap the sliders to make room for the next steps.

Here's the changelog:
+ Made RMB on node exclusive solo.
+ Shift + RMB on node is added solo.
+ Added Chebychev shapers.
+ Added Hill Shaper.
+ Added King of Tone.
+ Added shape mod interpolation.
+ Added oversampling for antialiasing (costly, don't go nuts on it!).
+ Added antagonistic gain slide when holding shift and sliding drive (this keeps volume roughly const while not saturating).
+ Optimized crossover updates (only update when frequencies or oversampling changes).
+ Improved graphics slightly
+ Bugfix for last band
+ Remapped sliders to free up some sliders
+ Added hints
+ Added small meters that indicate how much the waveshaper is squashing or expanding the signal
+ Added gain sliders on the spectrum

I'm not 100% sure yet whether I will end up putting a compressor on each band. I'm running out of sliders and screen space _fast_. I might be able to add them non-automateable, but the itch for adding other "creative" effects is there too. Next up will likely be the mod and drive automation via LFO / envelope though.

And a little teaser, the test sound is kinda awful, but LFOs are up next
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [Filther: Thread|Github|Reapack] | [More JSFX: Thread|Reapack]
sai'ke is offline   Reply With Quote
Old 05-12-2019, 02:13 AM   #82
Bri1
Banned
 
Join Date: Dec 2016
Location: England
Posts: 2,432
Default

ooohhh- throbbing,pulsating,wobbulating thingzzz-hmmmmm sound has never been so afraid of such processings..
requests for squashman- is there any way to do band subtraction /and or, band multiplying?

as eg:
band1 subtract from band3 >? band 2 multiplies band 4?
Band reversing?
Band time slope manipulation? (checkout shaperbox or grossbeat for this functioning)
sweetola! fabadoobiez!
Bri1 is offline   Reply With Quote
Old 05-12-2019, 06:03 AM   #83
Eliseat
Human being with feelings
 
Eliseat's Avatar
 
Join Date: Mar 2018
Location: Cologne
Posts: 1,167
Default

Quote:
Originally Posted by Sai'ke
+ Added antagonistic gain slide when holding shift and sliding drive (this keeps volume roughly const while not saturating).
Holy sh*:・✧⃛!

That feels so incredible! Again a very useful implementation which shows how practically things could be. And now LFOs? You don't do it below a certain level of monumentality.

Many thanks! -(๑☆‿ ☆#)ᕗ
__________________
☆.。.:*・°☆.。.:*・°☆.。.:*・°☆REAPER//✿◔‿◔)°☆.。.:*・°☆.。.:*・°☆
Eliseat is offline   Reply With Quote
Old 05-12-2019, 10:45 AM   #84
Sju
Human being with feelings
 
Join Date: Jun 2015
Posts: 686
Default

Thanks for implementing the solo features! I think the new gain slider workflow is very good; it's easy to quickly match the output gain when increasing saturation.

I'd like to propose couple features regarding input/output matching though:

1. A quick way to bypass the processing in the band. We have Dry/Wet now, but it would be nice to be able to quickly A/B between those states with a click of a mouse. Maybe something like a modifier+click on the Dry/Wet button (or the handle in the graph even) could toggle between Dry and the current value.

2. In my opinion the band's Output/makeup gain should be part of the Wet path, so you can toggle between and audition Dry/Wet without loudness bias.
Sju is offline   Reply With Quote
Old 05-12-2019, 02:14 PM   #85
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 1,810
Default

Thanks for the Anaconda recommendation, saike. How many GB after installation, on linux?
TonE is offline   Reply With Quote
Old 05-12-2019, 02:42 PM   #86
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 655
Default

Quote:
Originally Posted by Bri1 View Post
ooohhh- throbbing,pulsating,wobbulating thingzzz-hmmmmm sound has never been so afraid of such processings..
requests for squashman- is there any way to do band subtraction /and or, band multiplying?

as eg:
band1 subtract from band3 >? band 2 multiplies band 4?
Band reversing?
Band time slope manipulation? (checkout shaperbox or grossbeat for this functioning)
sweetola! fabadoobiez!
Hmm, it's an interesting idea but multiplying different frequency bands with each-other, I honestly have no idea what that'd sound like, but I imagine it'd be pretty inharmonic.

I'll have a look at those plugs later though. There's a lot of groundwork to cover first to get the modulation system up and running.

Quote:
Originally Posted by Eliseat View Post
Holy sh*:・✧⃛!

That feels so incredible! Again a very useful implementation which shows how practically things could be. And now LFOs? You don't do it below a certain level of monumentality.

Many thanks! -(๑☆‿ ☆#)ᕗ
First LFO is in, sort of. Can't choose the shape yet or have tempo-sync (the LFO supports it, but I need to design the UI still). I still have to think of a nice way to stuff them into the UI. I may have to set up a little tabbed display for the modulation sources, since I'm running out of screen-space rapidly.



Quote:
Originally Posted by Sju View Post
Thanks for implementing the solo features! I think the new gain slider workflow is very good; it's easy to quickly match the output gain when increasing saturation.

I'd like to propose couple features regarding input/output matching though:

1. A quick way to bypass the processing in the band. We have Dry/Wet now, but it would be nice to be able to quickly A/B between those states with a click of a mouse. Maybe something like a modifier+click on the Dry/Wet button (or the handle in the graph even) could toggle between Dry and the current value.

2. In my opinion the band's Output/makeup gain should be part of the Wet path, so you can toggle between and audition Dry/Wet without loudness bias.
Yeah, sounds good. I assume you meant drive? Because the post-gain already was. I've now made the drive gain part of the wet path.

Ctrl + LMB on the node bypasses the saturator/waveshaper now. There's also a little light for it.

Quote:
Originally Posted by TonE View Post
Thanks for the Anaconda recommendation, saike. How many GB after installation, on linux?
Uh, no clue, but uhm disk-space is cheap?

Just for kicks, a micro demo of the LFO system ...
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [Filther: Thread|Github|Reapack] | [More JSFX: Thread|Reapack]

Last edited by sai'ke; 05-13-2019 at 04:52 AM.
sai'ke is offline   Reply With Quote
Old 05-13-2019, 12:59 PM   #87
ErBird
Human being with feelings
 
Join Date: Jan 2017
Posts: 83
Default

Sai'ke,

AFAICT, since you updated Tight Compressor to add oversampling, the attack and decay are coupled when oversampling=1. I've looked through the code and can't see a reason why this should be.

Last edited by ErBird; 05-13-2019 at 01:04 PM.
ErBird is offline   Reply With Quote
Old 05-13-2019, 01:24 PM   #88
ErBird
Human being with feelings
 
Join Date: Jan 2017
Posts: 83
Default

I think I spoke too soon. Going back to ver. 0.09, there are still problems with interaction between the attack and decay. When attack=0 the decay can be fully adjusted. As soon at attack>0, the decay time matches the attack time and can't be adjusted independently. Please let me know if I'm missing something.

ErBird is offline   Reply With Quote
Old 05-13-2019, 01:39 PM   #89
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 655
Default

Quote:
Originally Posted by ErBird View Post
Sai'ke,

AFAICT, since you updated Tight Compressor to add oversampling, the attack and decay are coupled when oversampling=1. I've looked through the code and can't see a reason why this should be.
It should be consistent independent of the level of oversampling.

I mean, they were always coupled at any oversampling ratio. I preferred the "continuous release mechanism" from the paper, which releases to the input signal (so is affected by the attack), since release is rarely, if ever, faster than attack anyway. I picked the smooth version since it makes sure that the compressor always uses the full release time. It sounded quite a bit smoother and more natural to me rather than instantly flipping the time constants. The downside is that they couple, yes. I figured that with the graphical display, it'd be easy enough to tune anyway. If you however do not want this, you can change the lines:

Code:
ya = max( xL, rt * ya + (1.0-rt) * xL );
yL = at * yL + (1.0-at) * ya;
To:
Code:
yL = rt * yL + (1-rt) * mx;
It should already be there in comments. But I really prefer the peak detector one since this one tends to not actually match the desired ratio that well.

Edit:
That video is a really old version where the delay could be set shorter than the attack (which for this compressor layout makes little sense). This is also partially why the mapping changed.

Did that decouple them as you wanted? What I don't like about that altered version is that in that decoupled version, the final ratio seems to depend on the decay, which seems undesirable to me.

Anyways, if you want, I could add the decoupled version to the repo as well.

This is the paper where the layout comes from: https://www.eecs.qmul.ac.uk/~josh/do...n-JAES2012.pdf

I tried almost all the combinations before settling on this one. I thought this one gave me the most control in the end. But you can play around and see if you find one that suits you better.
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [Filther: Thread|Github|Reapack] | [More JSFX: Thread|Reapack]

Last edited by sai'ke; 05-13-2019 at 04:53 PM. Reason: Added the paper.
sai'ke is offline   Reply With Quote
Old 05-14-2019, 10:33 AM   #90
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 1,810
Default

Quote:
Originally Posted by sai'ke View Post
It should be consistent independent of the level of oversampling.

I mean, they were always coupled at any oversampling ratio. I preferred the "continuous release mechanism" from the paper, which releases to the input signal (so is affected by the attack), since release is rarely, if ever, faster than attack anyway. I picked the smooth version since it makes sure that the compressor always uses the full release time. It sounded quite a bit smoother and more natural to me rather than instantly flipping the time constants. The downside is that they couple, yes. I figured that with the graphical display, it'd be easy enough to tune anyway. If you however do not want this, you can change the lines:

Code:
ya = max( xL, rt * ya + (1.0-rt) * xL );
yL = at * yL + (1.0-at) * ya;
To:
Code:
yL = rt * yL + (1-rt) * mx;
It should already be there in comments. But I really prefer the peak detector one since this one tends to not actually match the desired ratio that well.

Edit:
That video is a really old version where the delay could be set shorter than the attack (which for this compressor layout makes little sense). This is also partially why the mapping changed.

Did that decouple them as you wanted? What I don't like about that altered version is that in that decoupled version, the final ratio seems to depend on the decay, which seems undesirable to me.

Anyways, if you want, I could add the decoupled version to the repo as well.

This is the paper where the layout comes from: https://www.eecs.qmul.ac.uk/~josh/do...n-JAES2012.pdf

I tried almost all the combinations before settling on this one. I thought this one gave me the most control in the end. But you can play around and see if you find one that suits you better.
What about a pull down menu which would allow replacing between such line versions? Crazy idea, parameter changing its code, or better only switching between alternatives, if they were available.
TonE is offline   Reply With Quote
Old 05-14-2019, 10:56 AM   #91
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 655
Default

Quote:
Originally Posted by TonE View Post
What about a pull down menu which would allow replacing between such line versions? Crazy idea, parameter changing its code, or better only switching between alternatives, if they were available.
More options is not always better. I'd rather add a side-chain than spend time on more of these topologies. I really quite like the sound of this topology and thought the other ones were harder to tweak and/or didn't sound as nice in my opinion. I think this one has a pretty nice bitey attack and the sliders are pretty transparent.

It seems that to get that second variant (not the one in the plugin now) to work well (actually produce the ratio intended), one would have to couple it with another peak detection mechanism, since implemented straight off of the paper equation, it'll just go to a steady state based on attack/decay/frequency (since it decays in every valley of the waveform).
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [Filther: Thread|Github|Reapack] | [More JSFX: Thread|Reapack]
sai'ke is offline   Reply With Quote
Old 05-14-2019, 11:32 AM   #92
ErBird
Human being with feelings
 
Join Date: Jan 2017
Posts: 83
Default

Sai'ke,

Thanks for you detailed response. The solution you offered does indeed make the attack and release times independent. I have other issues trying to adapt the compressor to my needs, but I'll come back after I've read the paper so I can express myself better/fully

It's so nice having an academic here. You're awesome, man.
ErBird is offline   Reply With Quote
Old 05-14-2019, 12:29 PM   #93
Sju
Human being with feelings
 
Join Date: Jun 2015
Posts: 686
Default

Quote:
Originally Posted by sai'ke View Post
Yeah, sounds good. I assume you meant drive? Because the post-gain already was. I've now made the drive gain part of the wet path.
Hmm, actually I meant that the post gain should _only_ affect the Wet path, so we can use it to compensate and get an even volume balance between Dry and Wet paths when the waveshaper starts to kick in. This way moving the Dry/Wet knob from 0% to 100% would maintain constant loudness throughout.

On the other hand, having a clean gain option seems useful too. Some plugins provide both, for example TDL Kotelnikov... but that's two knobs instead of one

Quote:
Originally Posted by sai'ke View Post
Ctrl + LMB on the node bypasses the saturator/waveshaper now. There's also a little light for it.
Thank you here I kind of meant that the bypassed signal would be just the Dry path (without post-gain, see above). Then post-gain would be used on the Wet signal to balance the loudness with the Dry, and then you can toggle bypass to switch between the two while maintaining contant loudness.

But again, I also see the value for clean gain, so we can use the bands like a pseudo-eq. Unfortunately the current configuration might make it impossible to match the loudness of Dry and Wet in some cases.

EDIT: Oh by the way, would it be possible to increase the post-gain range? I keep running out of range on that slider when pushing things into distortion with the shift+drag inverse link, especially on high frequency bands where it can take quite a bit of drive to get in there.

Last edited by Sju; 05-14-2019 at 01:12 PM.
Sju is offline   Reply With Quote
Old 05-15-2019, 05:19 PM   #94
TonE
Human being with feelings
 
Join Date: Feb 2009
Location: Reaper HAS send control via midi !!!
Posts: 1,810
Default

Installed anaconda3, requiring 3.6 GB here, deleting again. Can install it again, if I need it at some point.
TonE is offline   Reply With Quote
Old 05-16-2019, 04:23 AM   #95
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 655
Default

Quote:
Originally Posted by ErBird View Post
Sai'ke,

Thanks for you detailed response. The solution you offered does indeed make the attack and release times independent. I have other issues trying to adapt the compressor to my needs, but I'll come back after I've read the paper so I can express myself better/fully
Cool. Yeah, I mean, I'm not a compressor expert or anything. But from that paper, I found this one to be most musically useful.

Is there any particular aim that you're designing the compressor for which isn't fulfilled at the moment?

Also, feel free to rip the code. I think using this as a starting point is not too bad, since then you've got oversampling and visualization covered. I'd love to see you improve on it.

Quote:
It's so nice having an academic here. You're awesome, man.
My background is dynamical systems (which does have some overlap and does include some DSP, but isn't exactly music DSP). I have a lot to learn when it comes to DSP for music, but so far it's been quite fun.

Are you an academic as well?

Quote:
Originally Posted by Sju View Post
Hmm, actually I meant that the post gain should _only_ affect the Wet path, so we can use it to compensate and get an even volume balance between Dry and Wet paths when the waveshaper starts to kick in.
Done (gain only affecting wet path). Adding another knob may be possible, but I'm kind of running out of sliders again. I would have to think which ones to flag as automatable and which ones not.

Quote:
Thank you here I kind of meant that the bypassed signal would be just the Dry path (without post-gain, see above). Then post-gain would be used on the Wet signal to balance the loudness with the Dry, and then you can toggle bypass to switch between the two while maintaining contant loudness.
This should now also be the current behavior.

Quote:
EDIT: Oh by the way, would it be possible to increase the post-gain range? I keep running out of range on that slider when pushing things into distortion with the shift+drag inverse link, especially on high frequency bands where it can take quite a bit of drive to get in there.
Done. It's the same range as the drive now but antagonistic.

Also did some more work on the LFO stuff. I should probably also expose the drive and dry/wet as LFO/ENV modulateable parameter.

Any other per band effects that could be interesting in terms of sound design? I was thinking of widening, panning, vibrato (although this would likely cause comb filtering artefacts with other bands due to phase issues), but there may be ideas out there that are cooler than mine. I have a limited number of sliders, so it will only be possible to get a limited number of these automate-able from the arrange view; which is why it's a nice idea to think about early, rather than late.
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [Filther: Thread|Github|Reapack] | [More JSFX: Thread|Reapack]
sai'ke is offline   Reply With Quote
Old 05-16-2019, 05:28 AM   #96
nitsuj
Human being with feelings
 
nitsuj's Avatar
 
Join Date: Nov 2017
Posts: 162
Default

Hey sai'ke!

I was playing around with Squashman getting all sorts of crazy bass distortions out of it and I noticed something. I was using Asymmetric (M) in a lower band cranked right up.

In Squashman's analyser, I noticed large peaks in the very lowest part of the spectrum. I loaded up ReEQ and put a high pass 6dB filter at 10Hz and the lowest peak disappeared and the sound suddenly popped and was much fuller/louder.

I think this might be a DC issue? I'm sure I've seen reference to using a 6dB high pass filter to get rid of the DC offset.

See if you can get the same result. It might be worth having a DC filter option in Squashman.
nitsuj is offline   Reply With Quote
Old 05-16-2019, 08:04 AM   #97
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 655
Default

Quote:
Originally Posted by nitsuj View Post
Hey sai'ke!

I was playing around with Squashman getting all sorts of crazy bass distortions out of it and I noticed something. I was using Asymmetric (M) in a lower band cranked right up.

In Squashman's analyser, I noticed large peaks in the very lowest part of the spectrum. I loaded up ReEQ and put a high pass 6dB filter at 10Hz and the lowest peak disappeared and the sound suddenly popped and was much fuller/louder.

I think this might be a DC issue? I'm sure I've seen reference to using a 6dB high pass filter to get rid of the DC offset.

See if you can get the same result. It might be worth having a DC filter option in Squashman.
Thanks for the heads up, but hmmmm... there is a mono-pole DC fixer in there already. I will check why it's not doing its job and whether I need a steeper solution
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [Filther: Thread|Github|Reapack] | [More JSFX: Thread|Reapack]
sai'ke is offline   Reply With Quote
Old 05-16-2019, 12:49 PM   #98
Sju
Human being with feelings
 
Join Date: Jun 2015
Posts: 686
Default

Quote:
Originally Posted by sai'ke View Post
Done (gain only affecting wet path). Adding another knob may be possible, but I'm kind of running out of sliders again. I would have to think which ones to flag as automatable and which ones not.

This should now also be the current behavior.

Done. It's the same range as the drive now but antagonistic.
Thank you!

Because of these changes, apparently the positioning/scaling of the respective UI elements is a bit off now:
- Post-gain line doesn't match the background zero level indicator line anymore
- Post-gain knob isn't centered at 50% anymore at neutral gain
-> dbl-click on the knob resets it to 50%, but the post-gain becomes negative


But anyway, I was thinking more about the UX of Squashman, and decided to check out the Fabfilter Saturn as that's probably a good reference for a processor of this type. There is one major difference I noticed: they auto-compensate the gain applied by the Drive control.

This makes a lot of sense to me: when using the Drive control, most times I would like to compensate the gain, because things get very loud very fast. Also I'd like to keep the relative balance of the bands, especially when the saturation has not kicked in yet.

Once the saturation kicks in, maintaining the level balance usually requires constant readjustments of the post-gain with every tweak of the Drive (compensated or not). This leads to another UX inconvenience in the current implementation: a separate, inversely linked slider for drive and makeup move further and further away from each other, and you have to move the mouse over that distance every time you want to adjust the other. Alternatively, you can hold the shift modifier key and drive the saturation by pulling the post-gain slider down, and then release the modifier to adjust makeup gain. This actually works pretty nicely, but it would be even more convenient to not have to constanly hold a modifier down during adjustments.

So this idea may be a bit out of left field, but what if you could left-drag *anywhere* inside the band to adjust Drive, and right-drag anywhere to adjust post-gain? This way there would be no need to move the mouse between the two controls.

This would of course require a few changes to the current UI, like

- knobs for both Drive and post-gain in the bottom area, for LFO assignment etc.
- the horizontal line handles for Drive and post-gain just as level indicators (instead of interactable elements)
- possibly: mute/solo buttons separated from the Drive handle, maybe floating in the corner of the band graph area (Saturn does it like this)
- modifier+click to add/remove crossovers instead of right-click
- (maybe a few pixels click+drag move threshold to prevent changing Drive when selecting a different band by clicking on the graph)

I'm not sure if this would be the immediately most intuitive workflow, but I think it could be a very quick way to operate the two gain controls.

Hmm, yeah. That's a lot of stuff you probably have other priorities and preferences regarding UX, but maybe at least some food for thought.

Quote:
Originally Posted by sai'ke View Post
Any other per band effects that could be interesting in terms of sound design? I was thinking of widening, panning, vibrato (although this would likely cause comb filtering artefacts with other bands due to phase issues), but there may be ideas out there that are cooler than mine. I have a limited number of sliders, so it will only be possible to get a limited number of these automate-able from the arrange view; which is why it's a nice idea to think about early, rather than late.
Feedback amount and delay time with LFO would be interesting. Do you mean effects added to the waveshaper list? Hmm, gotta think about that more, but frequency shifting for example? Might be especially nice with feedback.

Speaking of widening, in Saturn it's apparently possible to apply different amounts of gain to mid and side signals, so that might be cool, but might present another UX (and slider shortage) problem if they're separated.
Sju is offline   Reply With Quote
Old 05-16-2019, 04:00 PM   #99
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 655
Default

nitsuj; Alright, so I just pushed a small update with a (hopefully better) DC blocker.

A 5th order Butterworth rather than my sad little mono-pole from before. It should do a better job at keeping the DC and rumble at bay. On the to-do list is still to add different ones for different sample rates. Not sure what is typical to support, 44.1, 48, 88.2 and 96?

I mean, it's clear from the shapes of the asymmetric one and the octaver that they induce a lot of DC. So I agree that rejection of that is important. I may make it a toggle in the future, for people who are worried about the phase shift near zero.

Sju; The UI ideas are not bad. But I'm also afraid that they won't be intuitive to a new user (or to me at first! ). It is something I will keep in mind for a future expert mode maybe; or once I've used it a bit more and I get frustrated with the current UX myself ;D.

And yes, I should still fix up those lines. I will read your post again next time I work on it. It is late and I must sleep now

Edit: Actually, come to think of it, I should have probably broken that butterworth up into lower order sections for better stability. Ah well, there's always tomorrow
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [Filther: Thread|Github|Reapack] | [More JSFX: Thread|Reapack]

Last edited by sai'ke; 05-16-2019 at 04:18 PM.
sai'ke is offline   Reply With Quote
Old 05-17-2019, 03:48 AM   #100
nitsuj
Human being with feelings
 
nitsuj's Avatar
 
Join Date: Nov 2017
Posts: 162
Default

Quote:
Originally Posted by sai'ke View Post
nitsuj; Alright, so I just pushed a small update with a (hopefully better) DC blocker.

A 5th order Butterworth rather than my sad little mono-pole from before. It should do a better job at keeping the DC and rumble at bay. On the to-do list is still to add different ones for different sample rates. Not sure what is typical to support, 44.1, 48, 88.2 and 96?
Did you try it with a simple 12dB high pass? On the test I did I just used a 6dB cut at 10Hz. So, on the basis that you already had a 6dB filter implemented, that would be 12dB. But...it didn't just lower it, it got rid of the low-frequency hump altogether and the sound popped back (for want of a better explanation!).

EDIT: I'd put low pass but meant high pass.

Last edited by nitsuj; 05-17-2019 at 08:55 AM.
nitsuj is offline   Reply With Quote
Old 05-17-2019, 04:30 AM   #101
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 655
Default

High pass you mean?

Yeah, I threw it through some test sounds and noticed that some were also producing a bit of rumble around the 5-10 Hz.

I'll probably replace it with a 2x SVF 2-pole at 10 Hz tonight, that should be good enough given what I saw with the test sounds. Especially the octaver was bad for introducing DC (not unexpected since it's value at zero isn't even zero).

I'll have a quick look at the phase too though. I don't want the plugin to rotate the phases at low frequencies too much.
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [Filther: Thread|Github|Reapack] | [More JSFX: Thread|Reapack]
sai'ke is offline   Reply With Quote
Old 05-17-2019, 09:00 AM   #102
nitsuj
Human being with feelings
 
nitsuj's Avatar
 
Join Date: Nov 2017
Posts: 162
Default

Quote:
Originally Posted by sai'ke View Post
High pass you mean?
Yes (fixed). I keep bouncing between low cut/high pass, low pass/high cut. I need to settle on one or the other!
nitsuj is offline   Reply With Quote
Old 05-17-2019, 05:14 PM   #103
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 655
Default

Quote:
Originally Posted by nitsuj View Post
Yes (fixed). I keep bouncing between low cut/high pass, low pass/high cut. I need to settle on one or the other!
Ghehehe, yeah.

I did change out the HPF today. This one should be better. 6 pole cascaded HPF with Q's chosen from a butterworth table to act as maximally flat but steep filter.

Also worked a bit on the LFO system again. Added tempo sync and MIDI triggering.
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [Filther: Thread|Github|Reapack] | [More JSFX: Thread|Reapack]
sai'ke is offline   Reply With Quote
Old 05-18-2019, 04:19 AM   #104
Sju
Human being with feelings
 
Join Date: Jun 2015
Posts: 686
Default

Some bugs and FRs and stuff

1. The Overtones Even mode sometimes seems to cause crackling and visual glitches when the band is selected, playback or not (GIF):


EDIT: see post below for more detailed info

(BTW it sounds _really_ good otherwise!)

2. Post-gain knob not centered at 50% when it's neutral. dbl-click the knob to reset -> post-gain handle line resets to the old, obsolete position

3. Can the post-gain go after the feedback tap, so it wont affect distortion amount that way?

4. FR: Shift + dbl click either drive or post-gain handle -> reset both

5. FR: copy band settings to other band

EDIT: 6. Favorites toggle for waveshaper dropdown list entries (or a blacklist like in Filther if that's more consistent)

Last edited by Sju; 05-18-2019 at 10:02 AM.
Sju is offline   Reply With Quote
Old 05-18-2019, 10:01 AM   #105
Sju
Human being with feelings
 
Join Date: Jun 2015
Posts: 686
Default

Quote:
Originally Posted by Sju View Post
1. The Overtones Even mode sometimes seems to cause crackling and visual glitches when the band is selected, playback or not
Upon further testing, this seems to be related to the Shape Mod control:

- All Overtones bands (odd/even) will get visual glitching in the waveshaper curve display if there's at least one other band in Overtones mode (odd/even) which has the Shape Mod control increased.

- If the selected band or the other Overtones band is in Even mode, there will also be crackles
Sju is offline   Reply With Quote
Old 05-18-2019, 06:28 PM   #106
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 655
Default

Thanks! Yeah, those bugs with the overtone shapers were due to me temporarily making something global to observe it and forget to put it back.

Changelog
Show location on LFO.
Add knob for drive.
Allow automation of drive.
Fix reset level for gain knob.
Fix bug in overtones.
Add warm hug distortion.
Added blacklisting distortions.
Added shift + doubleclick handle resets both.

More tomorrow!
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [Filther: Thread|Github|Reapack] | [More JSFX: Thread|Reapack]
sai'ke is offline   Reply With Quote
Old 05-19-2019, 05:24 AM   #107
Eliseat
Human being with feelings
 
Eliseat's Avatar
 
Join Date: Mar 2018
Location: Cologne
Posts: 1,167
Default

Thanks for the warm hug, but whats about this little thing called Sai'ke Transience? Huh? Isn't it worth to get mentioned?

And again its a very organic sounding tool which already has found its way into my work flow. LOVELY!

So now comes the tough part. You know, I really hate it to not understand something. I tried to get behind those little numbers which indicate something of the LFO. Are those placeholders for further added LFOs? Or what do they mean? I just don't get it. Please help!

By the way. There is one thing that really acts like a brake in Squashmans workflow. That's choosing the synced LFO speed. Would it be possible to allow a context menu with a list (like in LFO shapes) of all available sync rhythms? This would speed up the process as finding the right rhythm with dragging or even mouse wheel is really "fummelei". <- German for fiddling (but also means petting. )

Anyway. Many thanks for the exciting progress.
Greetings
Eli
__________________
☆.。.:*・°☆.。.:*・°☆.。.:*・°☆REAPER//✿◔‿◔)°☆.。.:*・°☆.。.:*・°☆
Eliseat is offline   Reply With Quote
Old 05-19-2019, 03:16 PM   #108
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 655
Default

Quote:
Originally Posted by Sju View Post
1. The Overtones Even mode sometimes seems to cause crackling and visual glitches when the band is selected, playback or not (GIF):
Fixed.
Quote:
Originally Posted by Sju View Post
image
Where is Squashman? :O

Quote:
Originally Posted by Sju View Post
(BTW it sounds _really_ good otherwise!)
Dank u zeer

Quote:
Originally Posted by Sju View Post
2. Post-gain knob not centered at 50% when it's neutral. dbl-click the knob to reset -> post-gain handle line resets to the old, obsolete position
Fixed.

Quote:
Originally Posted by Sju View Post
3. Can the post-gain go after the feedback tap, so it wont affect distortion amount that way?
I checked, but it should be there already?

Quote:
Originally Posted by Sju View Post
4. FR: Shift + dbl click either drive or post-gain handle -> reset both
Done in beforelast commit.

Quote:
Originally Posted by Sju View Post
5. FR: copy band settings to other band
Added to to-do list.

Quote:
Originally Posted by Sju View Post
EDIT: 6. Favorites toggle for waveshaper dropdown list entries (or a blacklist like in Filther if that's more consistent)
Done in beforelast commit.

Quote:
Originally Posted by Eliseat View Post
Thanks for the warm hug, but whats about this little thing called Sai'ke Transience? Huh? Isn't it worth to get mentioned?

And again its a very organic sounding tool which already has found its way into my work flow. LOVELY!
Thanks

Yeah transience is a new thingamabob. It's for enhancing transients. Basically you have two envelopes, one is an envelope follower (roughly follows the peaks of the sound), the other is a user specified envelope (with attack/decay). You can then shape the sound according to the difference between the two, making attacks or decays longer or shorter. The whole thing operates in logarithmic-space because so does our hearing (more or less). It's a bit finicky, and I don't know of any good way to calculate make-up gain for this type of effect which is a real pity...

Quote:
Originally Posted by Eliseat View Post
So now comes the tough part. You know, I really hate it to not understand something. I tried to get behind those little numbers which indicate something of the LFO. Are those placeholders for further added LFOs? Or what do they mean? I just don't get it. Please help!
Does this help?



So yes, you were right, they're different modulation sources. You can set the amount of modulation on the target by clicking them and dragging. Outer mouse button brings up a (finicky) list for selecting which one to use as a source. You can also use arrow keys, which is what I often do (click and then arrow keys).

Envelopes are on the to-do list under modulation.

Quote:
Originally Posted by Eliseat View Post
By the way. There is one thing that really acts like a brake in Squashmans workflow. That's choosing the synced LFO speed. Would it be possible to allow a context menu with a list (like in LFO shapes) of all available sync rhythms? This would speed up the process as finding the right rhythm with dragging or even mouse wheel is really "fummelei". <- German for fiddling (but also means petting. )
This took some doing, but it should work now. I agree that it was obnoxious. It's better now I think. Outer mouse on the knob (when in sync mode) brings up a list. Let me know if you run into bugs.

Changelog:
- Optimized chebychev even shaper.
- Fixed obnoxious bug that kept changing band when selecting combobox item.
- Added slope distortion shaper (sounds good up to say 600 Hz, but awful above and doesn't play nice with feedback).
- Added saturating distortion.
- Added combobox outer mouse button menu for synced LFOs when sync is on.
- Added feedback toggle to the serialization list (forgotten last time).
- Refactored LFO subwindow rendering.
- Exposed all four LFOs now, under a modulation window.
- Fixed some issues with settings not propagating correctly when adding/deleting a band (feedback toggle is still on the to-do).
- Added a fix which makes sure that the combobox doesn't go off screen on the left side.
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [Filther: Thread|Github|Reapack] | [More JSFX: Thread|Reapack]
sai'ke is offline   Reply With Quote
Old 05-20-2019, 02:00 AM   #109
Eliseat
Human being with feelings
 
Eliseat's Avatar
 
Join Date: Mar 2018
Location: Cologne
Posts: 1,167
Default

Quote:
Originally Posted by sai'ke View Post
This took some doing, but it should work now. I agree that it was obnoxious. It's better now I think. Outer mouse on the knob (when in sync mode) brings up a list. Let me know if you run into bugs.
Wohooooh! That is such a better solution. I also have to compliment you because how you eventually did the implementation is again very pleasing and practical. Many thanks

Okay, now all the tiny numbers make completely sense. And again its a very intuitive and space saving solution for the whole modulation section. I really like it. But you should add context info like in Filther in a later state of Squashman to lead people in the right direction.

And another thing: The new slope distortion is just amazing. Such a fat destroying feeling. If you put that on a drum loop from 30 to 800 hz its like squashing it thru a big loudspeaker with the volume level at 11! That is my favorite. That's for sure.

I really like to see how the progress of your plugins goes on. And there is kind of magic how patiently you involve the community in this process. Its a good example of how ideas of many people can find a way into the development if the CEO knows how to filter and sort them out for the best solution. I really like that. Its my daily soap opera.

Thank you for all, Sai'ke.
__________________
☆.。.:*・°☆.。.:*・°☆.。.:*・°☆REAPER//✿◔‿◔)°☆.。.:*・°☆.。.:*・°☆
Eliseat is offline   Reply With Quote
Old 05-20-2019, 02:15 AM   #110
Eliseat
Human being with feelings
 
Eliseat's Avatar
 
Join Date: Mar 2018
Location: Cologne
Posts: 1,167
Default

Ah, I just realized that there is again the initializing gain problem with Squashman. It doesn't let sound thru until you have moved the gain knob at least a little bit.

And here is a short example of how easy and quickly LFOs can now be done in Squashi!

__________________
☆.。.:*・°☆.。.:*・°☆.。.:*・°☆REAPER//✿◔‿◔)°☆.。.:*・°☆.。.:*・°☆
Eliseat is offline   Reply With Quote
Old 05-21-2019, 02:06 AM   #111
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 655
Default

Hey, yeah, I can't believe I got hit by the same bug twice (but in different locations)

The bug happened because I cache the last calculated gains and left the initial uninitialized (rookie mistake). So gainSlider = 0 was observed as no change. Anyways, should be fixed now.

I also fixed a renderbug that messed with the render order for the LFO section (you might notice that some comboboxes appear glitched) and started to refactor the code (splitting things out into multiple files to not end up with the same giant code file mess that is Filther) but these haven't been pushed yet. Once I get the envelopes running, I will do another bigger push.
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [Filther: Thread|Github|Reapack] | [More JSFX: Thread|Reapack]
sai'ke is offline   Reply With Quote
Old 05-22-2019, 09:30 AM   #112
Sju
Human being with feelings
 
Join Date: Jun 2015
Posts: 686
Default

Quote:
Originally Posted by sai'ke View Post
Where is Squashman? :O
Hmm... I don't how to make him appear


Quote:
Originally Posted by sai'ke View Post
I checked, but it should be there already?
I thought I heard a change in the distortion character when tweaking post-gain. I might have had another plugin after Squashman, I'll check again. EDIT: yeah post-gain has no effect on distortion even with feedback enabled. I must have had something else distorting after Squashman.

Thank you for the updates!

PS. enjoying Transience a lot. Even without makeup gain it seems very useful. I find that it's cleaner and generally more effective than Transpire, for example.
Sju is offline   Reply With Quote
Old 05-22-2019, 03:08 PM   #113
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 655
Default

Ghehe... After a little struggle with reapack, you should now also have the little squash dude

I did a really big refactor and split the source code for Squashman over several files. This is to keep things a bit more maintainable for myself (with Filther it was really getting quite painful), but does mean that there are more separate files needed now.

In other news, the envelopes are in. There may still be bugs, and I'd be happy to hear about them if anyone runs into them.

I do realize that they are kind of tiny. For me they're workable and I kind of like seeing them both at once, but if they're really too small, then it might be an option to put only one envelope there at a time, and add a little tab as switch. For now ... bed

P.S. Also glad to hear you like Transience
P.P.S. The multi-band splitter is on the to-do list. The refactor will help with this.
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [Filther: Thread|Github|Reapack] | [More JSFX: Thread|Reapack]
sai'ke is offline   Reply With Quote
Old 05-22-2019, 03:46 PM   #114
Eliseat
Human being with feelings
 
Eliseat's Avatar
 
Join Date: Mar 2018
Location: Cologne
Posts: 1,167
Default

Quote:
Originally Posted by sai'ke View Post
... the little squash dude
I know that was a silly one.

Can't sleep for some reason. It was a stressful day but I just can't calm down. So I will take a look at the new envelopes right now.

Thanks for the info ... and for the hard work with the little squash dude.
You know..
__________________
☆.。.:*・°☆.。.:*・°☆.。.:*・°☆REAPER//✿◔‿◔)°☆.。.:*・°☆.。.:*・°☆
Eliseat is offline   Reply With Quote
Old 05-22-2019, 04:16 PM   #115
Eliseat
Human being with feelings
 
Eliseat's Avatar
 
Join Date: Mar 2018
Location: Cologne
Posts: 1,167
Default

It seems like the envelope loop has no effect. If I trigger the envelope at every second beat (MIDI note) and create a loop at 1/4 beat with a spike at the beginning, it doesn't repeat the spike in 1/4 but only in 2/1. It shows a little movement but not as much as the spike would need. Have no idea if its my sleepy mind. And I hope you understand my Swahili description.

But Squashman is now really packed with a crazy modulation matrix. Amazing!

Greetings
eli
__________________
☆.。.:*・°☆.。.:*・°☆.。.:*・°☆REAPER//✿◔‿◔)°☆.。.:*・°☆.。.:*・°☆
Eliseat is offline   Reply With Quote
Old 05-23-2019, 03:25 AM   #116
Eliseat
Human being with feelings
 
Eliseat's Avatar
 
Join Date: Mar 2018
Location: Cologne
Posts: 1,167
Default

Here is an example gif. It shows how the first initiation with the MIDI note (white line in item) creates a maximal strike on the shape mod icon. Theoretically the loop repeats the same moment every 1/4 note but it doesn't for some reason. At least I would find it logically if the loop would recreate the first spike of the envelope again and again.



Greetings
ELi
__________________
☆.。.:*・°☆.。.:*・°☆.。.:*・°☆REAPER//✿◔‿◔)°☆.。.:*・°☆.。.:*・°☆
Eliseat is offline   Reply With Quote
Old 05-23-2019, 03:58 PM   #117
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 655
Default

Yep. Good find. Should be fixed now.

Edit: Aaaand also in Filther.

Also fixed a minor nuisance that when you were dragging nodes, you could accidentally very easily slip onto the tempo slider and completely throw that setting out of whack.
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [Filther: Thread|Github|Reapack] | [More JSFX: Thread|Reapack]

Last edited by sai'ke; 05-23-2019 at 04:05 PM.
sai'ke is offline   Reply With Quote
Old 05-24-2019, 08:15 AM   #118
Eliseat
Human being with feelings
 
Eliseat's Avatar
 
Join Date: Mar 2018
Location: Cologne
Posts: 1,167
Default

Sai'ke, I'm afraid there is another issue. The time sync of the envelope doesn't match with Reaper. If I create a loop of two bars in Reaper with a note played for those two bars, it then should be possible to use the envelope as LFO to repeat 1/4 bar continuously. BUT for some reason 1/4 bar in Squashman is different from 1/4 in Reaper. It creates an uneven loop which resets only at the moment the note/loop starts.

I know, its a weird explanation. But to recreate you only need a metronome, a 1 bar loop and a 1 bar MIDI note which plays reasynth. The note start triggers the envelope. And if you select the first four stripes inside the envelope (representing the 1/4) and choose loop you will see that it doesn't sync up.

Hope you get something out of my stupid English.

Greetings from sunny Cologne
Eli
__________________
☆.。.:*・°☆.。.:*・°☆.。.:*・°☆REAPER//✿◔‿◔)°☆.。.:*・°☆.。.:*・°☆
Eliseat is offline   Reply With Quote
Old 05-24-2019, 02:24 PM   #119
Sju
Human being with feelings
 
Join Date: Jun 2015
Posts: 686
Default

Quote:
Originally Posted by sai'ke View Post
P.P.S. The multi-band splitter is on the to-do list. The refactor will help with this.
Cheers!

Another FR for Squashman by the way the waveshaper blacklist is very handy, but I find that I'd like to sometimes be able to scroll through the blacklisted types too. Un-blacklisting them for those specific situations doesn't make much sense, but how about a modifier that you can hold while mousewheeling the list to temporarily bypass the blacklist and scroll through all the types?
Sju is offline   Reply With Quote
Old 05-26-2019, 09:50 AM   #120
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 655
Default

Quote:
Originally Posted by Eliseat View Post
Sai'ke, I'm afraid there is another issue. The time sync of the envelope doesn't match with Reaper. If I create a loop of two bars in Reaper with a note played for those two bars, it then should be possible to use the envelope as LFO to repeat 1/4 bar continuously. BUT for some reason 1/4 bar in Squashman is different from 1/4 in Reaper. It creates an uneven loop which resets only at the moment the note/loop starts.

I know, its a weird explanation. But to recreate you only need a metronome, a 1 bar loop and a 1 bar MIDI note which plays reasynth. The note start triggers the envelope. And if you select the first four stripes inside the envelope (representing the 1/4) and choose loop you will see that it doesn't sync up.

Hope you get something out of my stupid English.

Greetings from sunny Cologne
Eli
Should be fixed now! Was there over the weekend actually. Went to see Dara O'Briain at the Tanzbrunnen. And got sunburnt

Quote:
Another FR for Squashman by the way the waveshaper blacklist is very handy, but I find that I'd like to sometimes be able to scroll through the blacklisted types too. Un-blacklisting them for those specific situations doesn't make much sense, but how about a modifier that you can hold while mousewheeling the list to temporarily bypass the blacklist and scroll through all the types?
Holding SHIFT ignores the blacklist now

Also added the 4-pole band splitter/joiner as a separate thingamabob (by popular request). It's much steeper than the default providing sharper band separation.

And added the alles schrott shaper.
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [Filther: Thread|Github|Reapack] | [More JSFX: Thread|Reapack]

Last edited by sai'ke; 05-26-2019 at 10:47 AM.
sai'ke 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 05:28 PM.


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