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

Reply
 
Thread Tools Display Modes
Old 05-31-2019, 02:34 AM   #1
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 660
Default Squashman [JSFX] - GUI-based automateable multi-band saturator / distortion unit

Hello, I have made another thing.


Squashman

Squashman is a multi-band saturation / distortion plugin that allows modulation of several of its parameters. Squashman is currently in alpha status but should be usable already. There may still be some bugs, but the advantage of getting in early is that you could help shape its future



Installing
The best way to install Squashman and be kept up to date with updates is to add the following repository to your Reapack: https://raw.githubusercontent.com/Jo...ster/index.xml

You can find more information on how to do this here: https://reapack.com/user-guide#import-repositories

You can find some more information on Squashman and the repository here: https://github.com/JoepVanlier/JSFX.

Manual
Pending

Features
- Optional high quality oversampling
- Flexible band count, up to five bands can be used to manipulate sound
- 24 dB/oct Linkwitz-Riley crossover filters
- Graphical user interface
- 25 modulatable waveshapers and 4 fixed ones.
- Several modulation sources (4 LFOs with optional tempo sync and triggering, 2 MIDI triggered and/or loopable envelopes).

Waveshapers


Samples


Disclaimer
As for all my stuff, the usual caveat applies. Use this entirely at your own risk. I don't take any responsibility for this thing messing up a project, but I do hope this plugin is useful to some of you.

Tips
Depending on the number of subsystems you enable, the plugin can get pretty CPU hungry. Don't use more bands than you need.

Thanks
A special thanks goes out to all the people who have already helped with testing and feature requests as well as nitsuj for providing a nice oversampling reference

To-do list
- Oversampling for Squashman.
- Add 2 LFOs to Squashman.
- Add tempo synchronization to Squashman LFOs.
- Add envelopes to Squashman.
- Copy band settings to other band in Squashman.
- Add ability for envelopes to affect LFOs in Squashman.
- Refactor some of the widgets to their own separate file in Squashman.
- Add mouse-wheel fine controls for knobs.
- Add quick dry/wet toggle for Squashman.
- Add ability to modulate Squashman's shape mod and feedback / delay options.
- Add ability to put envelopes on the LFO rate / amount.
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [Filther: Thread|Github|Reapack] | [More JSFX: Thread|Reapack]

Last edited by sai'ke; 06-14-2019 at 06:57 PM.
sai'ke is offline   Reply With Quote
Old 05-31-2019, 07:05 AM   #2
Eliseat
Human being with feelings
 
Eliseat's Avatar
 
Join Date: Mar 2018
Location: Cologne
Posts: 1,167
Default

Here we go again.

Its already a great tool. So I guess it doesn't need to much future shaping.

Greetings and thanks
Eli
__________________
☆.。.:*・°☆.。.:*・°☆.。.:*・°☆REAPER//✿◔‿◔)°☆.。.:*・°☆.。.:*・°☆
Eliseat is offline   Reply With Quote
Old 05-31-2019, 12:42 PM   #3
Fabian
Human being with feelings
 
Fabian's Avatar
 
Join Date: Sep 2008
Location: Sweden
Posts: 5,441
Default

WoW! Just... !wow!

This is so amazing! Thanks.
__________________
// MVHMF
I never always did the right thing, but all I did wasn't wrong...
Fabian is offline   Reply With Quote
Old 06-01-2019, 12:12 AM   #4
ReaMike
Human being with feelings
 
ReaMike's Avatar
 
Join Date: Feb 2017
Location: Sydney Australia
Posts: 95
Default

This is getting so good. Thank you!
ReaMike is offline   Reply With Quote
Old 06-01-2019, 01:37 AM   #5
Winfield
Human being with feelings
 
Winfield's Avatar
 
Join Date: Jan 2007
Location: The Underground Bunker
Posts: 540
Default

This looks great - thanks for sharing!

I've only played with it for a minute, so perhaps I'm missing something but the 'over knob' (below the master) don't respond well to mouse drag - it moves very jumpy, if at all. I'm on W10 if that's of relevance.

-W
__________________
"if DAWs are religions, REAPER is atheism" - The big J
Winfield is offline   Reply With Quote
Old 06-01-2019, 03:38 AM   #6
heda
Human being with feelings
 
heda's Avatar
 
Join Date: Jun 2012
Location: Spain
Posts: 5,412
Default

Squashman is great! I was able to play with it a bit today. Very amazing! I still need to understand all the parameters.

maybe a bug? :
If I automate frequency parameter, for example Frequency 1, then other frequency splits also move. But if I drag Frequency 1 with the mouse in the plugin window, then only Frequency 1 moves, which is what I wanted.
heda is offline   Reply With Quote
Old 06-02-2019, 04:03 PM   #7
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 660
Default

Quote:
Originally Posted by Winfield View Post
This looks great - thanks for sharing!

I've only played with it for a minute, so perhaps I'm missing something but the 'over knob' (below the master) don't respond well to mouse drag - it moves very jumpy, if at all. I'm on W10 if that's of relevance.

-W
It's supposed to be jumpy, since it's the oversampling knob. It only has a discrete number of settings. But it shouldn't be finicky, so I will have a look at it

Quote:
Originally Posted by heda View Post
Squashman is great! I was able to play with it a bit today. Very amazing! I still need to understand all the parameters.


Quote:
Originally Posted by heda View Post
maybe a bug? :
If I automate frequency parameter, for example Frequency 1, then other frequency splits also move. But if I drag Frequency 1 with the mouse in the plugin window, then only Frequency 1 moves, which is what I wanted.
Well, this is maybe a design issue. The frequencies are relative to the previous bin, to make sure that they stay in order. So this behavior is more or less expected. Are there cases where you´d want to automate the frequencies?
__________________
[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 06-02-2019, 08:12 PM   #8
sinkmusic
Human being with feelings
 
sinkmusic's Avatar
 
Join Date: Feb 2006
Location: decepticon mothership in a hidden place inside a mountain
Posts: 3,357
Default

excellent ! thank you !
sinkmusic is offline   Reply With Quote
Old 06-10-2019, 07:37 AM   #9
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 660
Default



Changelog:
- FIX: Made oversampling slider less finicky to use.
- FIX: Proper drive default value.
- NEW: Added envelope modulators on the LFO parameters (can use envelopes or audio-driven modulators to modulate envelope frequency and amount now).
- NEW: Added dynamics section which responds to input audio (both thresholded as well as a envelope follower mode).
- OTHER: Some performance optimizations (replaced instances of 10^y with exp(l10*y))

Happy squashin'.
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [Filther: Thread|Github|Reapack] | [More JSFX: Thread|Reapack]

Last edited by sai'ke; 06-10-2019 at 08:02 AM.
sai'ke is offline   Reply With Quote
Old 06-10-2019, 01:14 PM   #10
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 660
Default



v0.57 - Automate *all* the things
NEW: Overdrive shaper
NEW: Per band gain modulation
NEW: Per band dry/wet modulation
NEW: Per band delay modulation
NEW: Per band feedback modulation
FIX: Force attack/decay for dynamics panel in sane range.

Note that if you have older presets saved, the new settings will not be present in your old presets. The best way to make sure that they are is to initialize the plugin cleanly and go through your presets one by one and resave them. If not, what can happen is that you make a newer preset with some new settings, and then when you switch to an old preset, instead of having those things off, it will carry over the new settings to your old preset.
__________________
[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 06-12-2019, 12:17 AM   #11
Eliseat
Human being with feelings
 
Eliseat's Avatar
 
Join Date: Mar 2018
Location: Cologne
Posts: 1,167
Default

Wow! Lots of new features.

I just tested the new overdrive as I use it quite often, but its a very difficult preset. Its nearly impossible to get an even sounding overdrive its more like starting an envelope slope at a certain level.
If I take the witti overdrive2 JS for example - which I use a lot - is gets grip to the whole sound and not only in certain areas of the sound/level/spectrum I don't know. Though I have to say, that wittis overdrive 2 JS sounds very close to your Hill Crossover preset.

I played around with a simple clean guitar and you really need to be careful in some presets to find a useful spot. Shift drag of the drive/level parameter is your best friend in this case.

I will check some of the new modulations today.

Greetings and many thanks
Eli
__________________
☆.。.:*・°☆.。.:*・°☆.。.:*・°☆REAPER//✿◔‿◔)°☆.。.:*・°☆.。.:*・°☆
Eliseat is offline   Reply With Quote
Old 06-12-2019, 02:29 AM   #12
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 660
Default

Yeah, I should have probably not called that one overdrive, since it folds back. I'll rename it at some point.

If you want smooth overdrive, it's probably best to go with tanh, rapid saturation or King of Tone. Overdrive is usually just soft clipping. I could add a few even softer clipping options too (atan comes to mind).

I just had a look at Witti's and it seems that he does a fairly rapid dynamic onset in his. For a single sine input it looks like a small attack. Maybe this sounds nice because it avoids distortion the pluckey high frequency part of the guitar. You could emulate that with an attack on the drive. It would be trivial to add Witti's

If you want a more amp-ey sound, go for the crossovers.

Edit: I would like to do a bit more elaborate pedal modelling, but I really need real pedal data for this.
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [Filther: Thread|Github|Reapack] | [More JSFX: Thread|Reapack]

Last edited by sai'ke; 06-12-2019 at 02:46 AM.
sai'ke is offline   Reply With Quote
Old 06-12-2019, 04:01 PM   #13
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 660
Default

v0.58 - Phase matters

Actually, I just realized that the filter I was using to block the DC was really screwing up the phase in the low end.

This is problematic, since that means that while the frequencies stay the same, the actual shape of the wave changes.

So for example, a square shape becomes more peaky, which means that effects further down the road could then start shaving off those peaks again and changing the tone there.

Also, it would technically not be squashing!

Decided to go with a linear phase solution instead.

DC-fix 0 - No DC blocking
DC-fix 1 - New linear phase filter
DC-fix 2 - Old DC blocker

You can see on a scope what I mean, and why DC-fix 2 (the old one) was a poor solution to the problem.

Anyways... I'll make this part of the GUI in the future, and still have to add the latency compensation, but this is for tomorrow!
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [Filther: Thread|Github|Reapack] | [More JSFX: Thread|Reapack]

Last edited by sai'ke; 06-13-2019 at 01:03 AM.
sai'ke is offline   Reply With Quote
Old 06-13-2019, 06:44 AM   #14
Bri1
Banned
 
Join Date: Dec 2016
Location: England
Posts: 2,432
Default

thanx again sai'ke-good stuff..
jfyi..-have noticed this glitch for some times + also some odd behaviour while using 96khz..lower band seemed to not go very low=dunno,maybe worth noting..




cheerz4alludo!
Bri1 is offline   Reply With Quote
Old 06-13-2019, 07:01 AM   #15
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 660
Default

I'll have a look when I get home. I suspect that it's bleed from the band above. While the bands are drawn as vertical lines; there's actually crossover filters there. So you have to picture a diagonal going from the band edge.

Something like this:


It may be a good idea to draw them though. Might make things more clear
__________________
[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 06-13-2019, 03:13 PM   #16
bucca
Human being with feelings
 
bucca's Avatar
 
Join Date: Mar 2016
Posts: 183
Default

Quote:
Originally Posted by Bri1 View Post
good stuff..
yeah - thx sai'ke
__________________
who's gonna water my plants ... if not you
bucca is offline   Reply With Quote
Old 06-13-2019, 10:52 PM   #17
Reflected
Human being with feelings
 
Reflected's Avatar
 
Join Date: Jul 2009
Posts: 2,160
Default

doesn't work for me
getting error: "can't find saike_upsamplers.jsfx-inc"
Reflected is offline   Reply With Quote
Old 06-14-2019, 01:41 AM   #18
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 660
Default

Ah yes, thanks.

Currently you depend on installing "basics" first as it contains the oversampling library I wrote.

I agree though, it's not nice. I will give Squashman its own copy of the oversampling lib in the next version.

Changelog v0.60 - Yeah, I'm going to need that to null properly:
Fix: Compensate latency for FIR DC corrector.
Fix: Clamp squash bar to lower limit of the FFT when it normally would have gone beyond it.
Fix: Fix for dynamics window sometimes being scrunched (occurred when plugin is opened on dynamics, but envelopes have never been open).
New: Add DC button on the UI.
__________________
[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 06-14-2019, 01:11 PM   #19
Reflected
Human being with feelings
 
Reflected's Avatar
 
Join Date: Jul 2009
Posts: 2,160
Default

it works
you are a genius!

hard to believe that you can get such a great results from JSFX

thanks you so much for sharing. <3
Reflected is offline   Reply With Quote
Old 06-14-2019, 02:56 PM   #20
Eliseat
Human being with feelings
 
Eliseat's Avatar
 
Join Date: Mar 2018
Location: Cologne
Posts: 1,167
Default

Wow! Dynamics works wonders. Really lovely how you now can make it more transparent. In some cases it reminds me to vinyl records. But could you add the zoom feature to the dynamics window like in Filther?

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

Glad it works, and you're welcome

Eliseat; I've added an input gain slider for the envelope. This can be set either with the knob, or by dragging on the envelope (analogous to Filther). The reason I didn't make it a zoom (where also the thresh moves), is because I think this is more sensible for both modes of operation as I needed a gain slider for the envelope follower mode anyway (the one with threshold disabled). I hope it also works for you.

v0.61 - "Set phasers to stun"
Improvement: Reduced overhead when using fewer bands.
Improvement: Made a copy of the oversamplers in the squashman dir. Shouldn't need basics anymore now.
New: Added gain slider for the envelope input.
New: Added phaserdrive shaper (two phase rotators sandwiched by shapers).
Fix: Bugfix envelopes going nuts when jumping back to factory setting.
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [Filther: Thread|Github|Reapack] | [More JSFX: Thread|Reapack]

Last edited by sai'ke; 06-14-2019 at 06:57 PM.
sai'ke is offline   Reply With Quote
Old 06-15-2019, 09:46 AM   #22
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 660
Default

v0.62 - "In gain we trust"
New: Power shaper

https://instaud.io/3OMZ
__________________
[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 06-18-2019, 02:43 AM   #23
Eliseat
Human being with feelings
 
Eliseat's Avatar
 
Join Date: Mar 2018
Location: Cologne
Posts: 1,167
Default

Sai'ke,

the follower gain is perfect and does its job like the zoom in Filther did. Great solution! And the new Power drive is really amazing for getting grip to the whole sound. Love it! (Better than the Overdrive! )

Many thanks for all the nice goodies.

Greetings
Eli
__________________
☆.。.:*・°☆.。.:*・°☆.。.:*・°☆REAPER//✿◔‿◔)°☆.。.:*・°☆.。.:*・°☆
Eliseat is offline   Reply With Quote
Old 06-18-2019, 04:31 AM   #24
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 660
Default

Glad to hear it works for you

Rather than going from the circuitry, I modelled that one a bit more phenomenologically. I studied the waveforms and spectra of undistorted guitar vs distorted guitar at various pitches and volume levels. It's actually a dynamical system rather than just a waveshaper (all the ones with a D are). I'm pretty happy with how it turned out. To add some character, I would really recommend matching it with a nice cabinet impulse response if you're using it for guitars.

If you know any good cab impulses that are completely royalty free and that I would legally be allowed to ship with the plugin (the ones I have I'm not allowed to redistribute), I'd love to include them. I'm not as active on the rest of the forum, so maybe they've come by a while ago and I don't know about them

The overdrive is kind of shit. I wonder if anyone would miss it if I just axed it. It's really only a very basic waveshaper based on one that comes with a reason plugin.
__________________
[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 06-18-2019, 07:54 AM   #25
JHughes
Human being with feelings
 
JHughes's Avatar
 
Join Date: Aug 2007
Location: Too close to Charlotte, NC
Posts: 3,412
Default

Hmm, lots of free cab impulses out there, but I can't find any licenses that say free for what. Free for individual use is a given, but I don't see mention of "free to be repackaged and distributed". I know there are people on this forum who have created their own. (Pipelineaudio maybe?)
__________________
You can only Reverse, Switch, Invert or Flip POLARITY, not "PHASE".
JHughes is offline   Reply With Quote
Old 06-18-2019, 09:35 AM   #26
Pinknoise
Human being with feelings
 
Pinknoise's Avatar
 
Join Date: Aug 2012
Location: Around Montréal
Posts: 877
Default

Mr Elwood is working on a Beta js amp sim called Era. It has a builtin cab sim.
Pinknoise is offline   Reply With Quote
Old 06-24-2019, 01:47 PM   #27
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 660
Default

Thanks for the tips. I'm still not 100% certain I will add cabs. Usually I just plunk a single reaverb behind it with an impulse. Not sure if adding it to the plugin itself adds much.

I did add panning to the drive control now though. Both L/R and mid/side with cos/sin taper and 3 dB compensated in the middle.



Changelog:
- Bugfix overdrive which accidentally mono'd the track
- Added L/R and M/S panning for the drive control
__________________
[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 08-19-2019, 11:54 PM   #28
squibble94
Human being with feelings
 
Join Date: Sep 2010
Posts: 144
Default

I've been using Squashman on a ton of mixes after learning about Eric Valentine's "make things respond more like tape using Fabfilter Saturn" trick. (quick example here if anyone is curious https://www.youtube.com/watch?v=iz0Dww6e9QQ&t=1299s)

I love it! Thanks for all the hard work you put into this.
squibble94 is offline   Reply With Quote
Old 08-20-2019, 03:45 AM   #29
HoJo
Human being with feelings
 
Join Date: Dec 2007
Location: Germany
Posts: 211
Default

Squibble94:
Sorry, I don't understand, don't get the workflow.
Can you be some more specific on what you are actually doing with Squashman?

Thank you.
HoJo
HoJo is offline   Reply With Quote
Old 08-20-2019, 03:45 PM   #30
squibble94
Human being with feelings
 
Join Date: Sep 2010
Posts: 144
Default

Quote:
Originally Posted by HoJo View Post
Squibble94:
Sorry, I don't understand, don't get the workflow.
Can you be some more specific on what you are actually doing with Squashman?

Thank you.
HoJo
I could have picked a better spot in that YouTube video, but I encourage you to watch any of the videos on Eric Valentine's channel. That man is a genius!

In a nutshell, he talks about tape causing more distortion as frequencies increase. He will commonly have the low band doing nothing, a mid band saturating a little, and the high band saturating a little more.

The second (very powerful) use is to smooth out a pokey drum transient. This has opened up a whole new palette of snare tones for me.
squibble94 is offline   Reply With Quote
Old 08-21-2019, 10:10 AM   #31
sai'ke
Human being with feelings
 
sai'ke's Avatar
 
Join Date: Aug 2009
Location: NL
Posts: 660
Default

Neat!

And thanks for the kind words. I've been meaning to make a little list of presets for good ol' Squashie so that I can ship them with, but it keeps falling through the cracks of my (non-existent) time planning.

It's also kind of tricky to ship presets for such gain sensitive plugins. I should probably read up on what people normally use in terms of gain staging and use that as a reference for the presets.

I'd also be happy to take any presets made for inclusion into the list (preferably with a preferred handle so I can credit whoever made it)
__________________
[Tracker Plugin: Thread|Github|Reapack] | [Routing Plugin: Thread|Reapack] | [Filther: Thread|Github|Reapack] | [More JSFX: Thread|Reapack]
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 06:13 PM.


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