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
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.
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
__________________
Windows 10x64 | Asus Z170-a i7, 32GB ram | RME-Digiface USB
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.
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
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
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?
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))
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.
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.
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.
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!
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..
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
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.
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?
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.
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! )
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.
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?)
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
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:
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.
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)
This one is going to be hard to explain cause my english is broken, but may I suggest adding more values in Hz at the bottom?
I mean, for instance, you have 900 to 3k, but then nothing's written inbetween? I usually work by ear but if you want to target a specific frequency or know which one you're working on, sometimes it's not written anywhere so it makes it harder to know.
Also, this is not about the plugin itself but more about the different saturation models if anyone knows the answer : what kind of preset curve would be the average/typical classic saturation types such as tube, tape, transistor, etc? (I know there's not one type of each obviously but curves must be similar in each type?) If that makes sense.
Automatic Gain Compensation would be nice for suttle saturation, without always having to adjust the gain sliders manually.
I agree that it would be nice. I will do some investigations to see if I can come up with a reasonable solution to this. Maybe some K-weighted RMS-based thing. Have to look into appropriate windows and weightings for doing this. Will take a little while.
Quote:
Originally Posted by Akashic Bird
This one is going to be hard to explain cause my english is broken, but may I suggest adding more values in Hz at the bottom?
Good idea. I've added both a few more ticks, but also a precise label on each band which gives you the exact crossover frequency in Hz.
Quote:
Originally Posted by Akashic Bird
Also, this is not about the plugin itself but more about the different saturation models if anyone knows the answer : what kind of preset curve would be the average/typical classic saturation types such as tube, tape, transistor, etc? (I know there's not one type of each obviously but curves must be similar in each type?) If that makes sense.
I think if you want realistic tube distortion, you're likely going to have to make it somewhat dynamic (using the modulation section).
Some amplifiers have some crossover distortion. I think most tubes are asymmetric to a degree. I think to get a realistic tube sound, you'd probably need to model the different stages of the amp and have dynamic waveshaping to some degree. I don't have a specific shaper in there for that purpose, but maybe we could research and add one?
Automatic Gain Compensation would be nice for suttle saturation, without always having to adjust the gain sliders manually.
Gain compensation was added in 0.79. It's the toggle left to the master gain. Hover over it to see a tooltip with instructions.
This performs a gain correction on the overall signal, not individual bands. For individual bands, I recommend using the shift modifier which adjusts that bands output gain at the same time (and in opposite direction) of its drive.
Good idea. I've added both a few more ticks, but also a precise label on each band which gives you the exact crossover frequency in Hz.
Thank you!
Quote:
I think if you want realistic tube distortion, you're likely going to have to make it somewhat dynamic (using the modulation section).
Some amplifiers have some crossover distortion. I think most tubes are asymmetric to a degree. I think to get a realistic tube sound, you'd probably need to model the different stages of the amp and have dynamic waveshaping to some degree. I don't have a specific shaper in there for that purpose, but maybe we could research and add one?
I didn't even think in terms of crossover and dynamic distortion (might be obvious but I still have much to discover as a beginner.) I learned something today, thanks
As for adding a shaper, I didn't even ask for that much haha, but that's a great idea!
Now that I think about it seeing this pic, it might me be nice to have some sort of visualizer of the wave to see how each preset affects the sound. But it might be hard, I don't know, and we're asking a lot of stuff already
Edit : thank you for implementing this Saike!
Last edited by Akashic Bird; 10-18-2021 at 06:29 PM.