Menu Sidebar
Menu

Chris

Hi! I've got a new plugin you can have! These plugins come in Mac AU, and Mac, Windows and Linux VST. They are state of the art sound, have no DRM, and have totally minimal generic interface so you focus on your sounds.

Ultralight2

TL;DW: Ultralight2 is more of the most low-CPU matrix reverb I can make.

Ultralight2.zip (610k) standalone(AU, VST2)
Ultralight2 in Airwindows Consolidated under ‘Reverb’ (CLAP, AU, VST3, LV2)

This plugin continues work I’m doing, trying to make working demos of ideas for the Godot game engine.

Much like FastDistance is a filter that (when not pushed to really heavy attenuation of brightness) is way more efficient than using a DF1 biquad filter, Ultralight2 is a reverb that’s way more efficient than using any of my other reverbs. Why? Because it’s extremely limited. There’s nearly nothing to it, just a 4×4 Householder matrix and some tone shaping and a teeny allpass chain that runs in parallel to the predelay.

Why? Because I want to put dozens, maybe hundreds of them, into a game… and have the game still run and have room for graphics and gameplay.

This would involve placing them as ultrasimple mono instances, each with its own delay times and settings, in a scene. They’d all get fed all of the sounds in the scene, and then your environment would be composed of all the distinct spaces sounding off at once.

The controls have changed a bit! I had to do a bugfix on Ultralight anyway (redownload it if you want the tone shaping to work fully as intended). Now, rather than making part of the first delays turn into allpasses, I did further experimenting. No wonder I never liked allpasses, they sound awful unless the delay time is so quick it’s inside the ‘Haas effect’ region where really rapid echoes blur and merge… without that, they’re useless. Now all the matrix delays are normal reverb delays (which also means they can run even faster in SIMD) and then there’s another thing that goes in front…

Turns out you can use exactly the same sequence of operations to do an allpass, and a simple delay line. THAT means it can be SIMD (single instruction, multiple data). And it turns out if you set these things up right (never mind loops, just do things in fours) compilers really do optimize for them if they can. I learned that when some AMD users on retro machines got wildly worse performance than they should: your processor has to at least be able to do vector processing on 32-bit floats to run Ultralight or Ultralight2. Anything half recent ought to do it, though I’m interested in exceptions (I don’t think stuff compiled on the Pi will be using SIMD).

So now there’s Damping (same as RT60, but more damping means less sustain), but if you turn Damping to zero, rather than getting infinite sustain, now you get zero reverb… just only the predelay, dry/wet, and the allpasses. So Ultralight2 can also be used as a blurry slapback.

Then there’s unSolid and unRflec, which are the highpass and lowpass like they are in Ultralight. But there are changes here too… unSolid is the highpass, where if you turn it up the decay gets brighter and you lose bass through the walls. However, the frequencies are a bit different than they are in Ultralight. unRflec is the lowpass, like in Ultralight, where I’ve fixed a simple bug and re-uploaded it (it’s just the next week, be aware that’s happened and consider it an Ultralight Redux). However, with Ultralight, these things go from 0 to 4, incrementally adding stages of the feedback path into the filtering, and using the same paths: for Ultralight they count down from 4 which is the least filtered, and they pick the same paths so choosing 3 on both means that path is both highpassed and lowpassed.

For Ultralight2, you set it to 0 for no filtering, and 1 to filter only one path… but they come from opposite directions. So, if you set the filters to 2 and 2, you’ve just put a filter on every path, but only one. If you pick 1 and 3, or 3 and 1, same deal: you’ve affected all the feedback, but in different ways. 4 and 4 gives you full highpassing and lowpassing on every path, and so on. I just found that it sounded better that way.

You can also set the predelay to 0 and then there’s no allpassing. Each part of the reverb can be individually bypassed, just in case.

Dry/Wet is the reverb (there are no early reflections) and works as usual, except that in Ultralight2…

Distnce is the distance high frequency attentuation, just like in FastDistance, and runs AFTER dry/wet so you can hear what a sound, its predelay, and its reverb, sound like in a game engine with all of them far away from you. That’s because, like my earlier plugin VerbSixes, this plugin is the tool I use to audition possible 4×4 reverbs to add to the game engine. I paste in the new values in the header file, build it, and do a sound example to hear what it did. Especially when dialing in settings, that’s helpful. Again, this is NOT really meant for musician or mix use, though if you must run a reverb on impossibly potato hardware (that can do SIMD), this might save you.

I think this will hold me with low-CPU verbs for now. I’ve got big things in store for the flagship reverbs: turns out there’s a kind of matrix for 6x6es that’s way better than Householder, which is optimal for stuff like these 4x4s. So this work has led to some nice advances in Airwindows-land :)

Airwindows Consolidated Download
Most recent VCV Rack Module
download 64 Bit Windows VSTs.zip
download Signed M1/Intel Mac AUs.dmg
download Signed M1/Intel Mac VSTs.dmg
download LinuxVSTs.zip for x86
download Pi4VSTs.zip for 32-bit Pi
download Pi5VSTs.zip for 64-bit Pi
download Retro 32 Bit Windows VSTs.zip
download Retro PPC/32/64 Mac AUs.zip
download Retro PPC/32/64 Mac VSTs.zip
Mediafire Backup of all downloads
All this is free and open source under the MIT license, brought to you by my Patreon.

Ultralight

TL;DW: Ultralight is the most low-CPU matrix reverb I can make.

Ultralight.zip (610k) standalone(AU, VST2)
Ultralight in Airwindows Consolidated under ‘Reverb’ (CLAP, AU, VST3, LV2)

This plugin continues work I’m doing, trying to make working demos of ideas for the Godot game engine.

Much like FastDistance is a filter that (when not pushed to really heavy attenuation of brightness) is way more efficient than using a DF1 biquad filter, Ultralight is a reverb that’s way more efficient than using any of my other reverbs. Why? Because it’s extremely limited. There’s nearly nothing to it, just a 4×4 Householder matrix and some tone shaping. (all my test audio of potential patches for this reverb are even simpler, showing only the raw matrix without even tone shaping.)

Why? Because I want to put dozens, maybe hundreds of them, into a game… and have the game still run and have room for graphics and gameplay.

This would involve placing them as ultrasimple mono instances, each with its own delay times and settings, in a scene. They’d all get fed all of the sounds in the scene, and then your environment would be composed of all the distinct spaces sounding off at once.

This is the plugin version of that, so unless you can compile it with your own reverb patch (generated by IntoTheMatrix) you get the built-in space and can manipulate it with the controls. Warning, if you set the RT60 control (which is ‘damping’) to zero, you get infinite sustain! I wanted that in case some patch and combination of settings worked, when set to ‘infinite’, though I’m not sure that can ever happen.

Furnish goes from zero to four, and specifies how many of the first four comb filters should be replaced with allpass filters.

SolidWl goes from zero to four and works on the feedback paths. It’s a highpass filter that also cuts back regeneration a lot. The idea is that it’ll mimic the walls being less than solid as rock, since normal construction doesn’t contain superlow frequencies very well. Don’t expect much adjustability as it is a very cheap efficient hack for doing it.

ReflcWl goes from zero to four and works on the feedback paths. It’s the same kind of lowpass filter that’s in FastDistance, which leads to some funny behavior at high regeneration (low RT60 damping). Again, it’s a very cheap hack, as efficiency is all that matters.

Predlay is the predelay, in samples, and goes from 0 (1 for the AU) to 4096, which in Ultralight runs inside a simplified version of my undersampling, so it’ll act consistent if you’re running it at high sample rate. It’s enough predelay to account for some pretty huge spaces.

Dry/Wet is the reverb (there are no early reflections) and works as usual, except that in Ultralight…

Distnce is the distance high frequency attentuation, just like in FastDistance, and runs AFTER dry/wet so you can hear what a sound, its predelay, and its reverb, sound like in a game engine with all of them far away from you. That’s because, like my earlier plugin VerbSixes, this plugin is the tool I use to audition possible 4×4 reverbs to add to the game engine. I paste in the new values in the header file, build it, and do a sound example to hear what it did. Especially when dialing in settings, that’s helpful. Again, this is NOT really meant for musician or mix use, though if you must run a reverb on impossibly potato hardware, this might save you :)

Airwindows Consolidated Download
Most recent VCV Rack Module
download 64 Bit Windows VSTs.zip
download Signed M1/Intel Mac AUs.dmg
download Signed M1/Intel Mac VSTs.dmg
download LinuxVSTs.zip for x86
download Pi4VSTs.zip for 32-bit Pi
download Pi5VSTs.zip for 64-bit Pi
download Retro 32 Bit Windows VSTs.zip
download Retro PPC/32/64 Mac AUs.zip
download Retro PPC/32/64 Mac VSTs.zip
Mediafire Backup of all downloads
All this is free and open source under the MIT license, brought to you by my Patreon.

FastDistance

TL;DW: FastDistance is a sort of ultra-efficient lowpass filter.

FastDistance.zip (545k) standalone(AU, VST2)
FastDistance in Airwindows Consolidated under ‘Filter’ (CLAP, AU, VST3, LV2)

This is work I’m doing in efforts to help the Godot game engine. Whether or not it’s accepted by them, you get to have it now :)

The idea of the distance filter is, something you can have on every sound source in a scene. It’s gotta be efficient, because there can be an awful lot of them. It’s gotta handle wild modulations, because who knows what might be happening there in the game engine. And it’s gotta roll off high frequencies, because stuff that’s far away doesn’t sound as bright as stuff that’s right next to you.

Ideally (like with my previous Distance plugins) it’s doing clever things to put across the sense of great distance, but how clever can you be if you might have to have hundreds of sound-makers all talking at once? And so, FastDistance specifically chooses forms of treble-filtering that are dirt simple. It’s just a variation on an averaging filter crossed with an IIR. Need more? Layer on more of them. The IIR (infinite impulse response) is not there to be fancy, it’s just there because it saves me allocating one extra variable. The way it uses more or less poles of filtering is literally jumping into a pile of them and letting them go. There’s no way of controlling it other than just choosing how deeply you filter in this one particular way that’s unreasonably efficient to calculate. In fact you don’t ‘calculate’ it at all, you just use it directly.

The weird thing is it actually sounds pretty awesome.

Since it’s so efficient to run, instead of doing three or four poles of filtering, you can do thirty or forty. They run about as quick as calculating the coefficients of a regular old filter. There’s next to nothing to them. And when you take such a primitive filter and just do it more, what you get is increased cutoff steepness… but the cutoff is very high already, and it’s not at all resonant. So the intense layering just gives you a very natural sounding darkening effect, combined with taking the highs and absolutely burying them an unthinkable number of dB down. It’s just how it works. It’s not really a ‘steep cutoff’ no matter how many poles you use, and is never the least bit resonant or filter-sweepy. Just a distance through air darkener.

It’s very likely that this will find other use but for now I’m gonna see if Godot likes it (and if it’s competitive efficiency wise with the more traditional low shelf they’re using). I’m working on a system for game engine reverb that I hope will be useful, also for Godot, and I’ll have an ultra lightweight reverb soon that’s teaching me many useful things I can incorporate into my flagship reverbs.

And whatever else happens with all that, you have FastDistance as a free plugin, plus also as MIT licensed source code that you can use for anything so long as you credit. Enjoy the new lowpass :)

Airwindows Consolidated Download
Most recent VCV Rack Module
download 64 Bit Windows VSTs.zip
download Signed M1/Intel Mac AUs.dmg
download Signed M1/Intel Mac VSTs.dmg
download LinuxVSTs.zip for x86
download Pi4VSTs.zip for 32-bit Pi
download Pi5VSTs.zip for 64-bit Pi
download Retro 32 Bit Windows VSTs.zip
download Retro PPC/32/64 Mac AUs.zip
download Retro PPC/32/64 Mac VSTs.zip
Mediafire Backup of all downloads
All this is free and open source under the MIT license, brought to you by my Patreon.

PurestWarm3

TL;DW: PurestWarm3 is a subtle tone shaper and warmth adder.

PurestWarm3.zip (503k) standalone(AU, VST2)
PurestWarm3 in Airwindows Consolidated under ‘Subtlety’ (CLAP, AU, VST3, LV2)

It’s been some years since PurestWarm saw any attention. It’s always been a bit tricky: proper second harmonic distortion is ‘warmth’ but it’s very hard to hear. But that’s just the start of it…

Every version of PurestWarm ever (OK, so that’s just the original and v2) has had a flaw that I didn’t fully understand in 2022, and have come to respect. Freya Holmer’s video on spline continuity tipped me off, but I learned about it years earlier with an ill-fated Channel ‘upgrade’ that I had to roll back as if it was ‘New Coke’. People respond to sudden changes in derivatives even when the waveform seems to have perfectly good continuity.

The crossover through zero in an audio waveform counts.

So, the previous versions of PurestWarm do an abrupt switch between ‘dry’ and ‘effect’ at the zero cross. That’s nearly as bad as what a sine does (abruptly changing from positive to negative curvature at zero) and even though it’s fairly hard to hear the largely even harmonics this produces, it’s still a limited approach. And so, PurestWarm3 is here… but what’s it doing that’s different?

An odd little use of ‘FMA’ (fused multiply-add) to produce a super high resolution version of a continuous asymmetrical distortion. One that can scale up and down to produce more or less of an effect. One that’s already been heard in RetroBass, in ChannelX… now you’ve got it standalone, in a stripped-down and minimal plugin that only does that one thing.

And it’s so much purer and smoother than even the previous two, that you damn near can’t hear it at all.

That’s the trouble with these. PurestWarm3 actually throws two harmonics, a second and a fourth. It doesn’t matter much, you still can barely hear it. I’ve set it up so it can be exaggerated wildly, just to be heard. The challenge there (not present with the previous two) is, this is a continuous algorithm. It just reshapes everything. So what it takes from one side of the wave, it adds as peakiness to the other side, and so it will distort enthusiastically if you push it too hard, and then if you don’t push it too hard you kinda can’t hear what it’s doing, much.

Add to that the same derivative BIP tech I’ve been developing, and it really really stays out of the way sonically. A puzzle.

So, this is not really a ‘slather on thicc warmth!’ effect. If you have sounds that are already asymmetrical, such as certain basses, it can reshape those to ironically make them LESS warm but cleaner. Or, you can exaggerate the effect and make it more striking. Push it too far and you’re messing with a kind of expansion that won’t play nicely with mixing.

I hope to make use of this in a future console plugin where it’ll convey the exaggerated transient spikes of certain late-70s noise reduction, so it’s not like there’s no use for it. Just don’t expect an ‘EQ-like’ activity out of PurestWarm. It is rearranging energy, almost losslessly, to be a subtly different shape, and leaving next to no trace it was ever there. To some of you, this might be of great interest if that got your attention…

Airwindows Consolidated Download
Most recent VCV Rack Module
download 64 Bit Windows VSTs.zip
download Signed M1/Intel Mac AUs.dmg
download Signed M1/Intel Mac VSTs.dmg
download LinuxVSTs.zip for x86
download Pi4VSTs.zip for 32-bit Pi
download Pi5VSTs.zip for 64-bit Pi
download Retro 32 Bit Windows VSTs.zip
download Retro PPC/32/64 Mac AUs.zip
download Retro PPC/32/64 Mac VSTs.zip
Mediafire Backup of all downloads
All this is free and open source under the MIT license, brought to you by my Patreon.

Older Posts

Airwindows

human-made bespoke digital audio

Kinds Of Things

The Last Year

Patreon Promo Club

altruistmusic.com

Dave Robertson and the Kiss List

Decibelia Nix

Gamma1734

|GRENS|

GuitarTraveller

ivosight.com – courtesy Johnny Wishoff

Podigy Podcast Editing Service

Super Synthesis Eurorack Modules

Very Rich Bandcamp

If you’re pledging the equivalent of three or more plugins per year, I’ll happily link you on the sidebar, including a link to your music or project! Message me to ask.