I was originally posting this in the Audulus 4 thread, but this is really more about Audulus 3 - a final library revision that will add lots of new user-created modules as well as adding labels to everything, taking away lights and other stuff that eat up CPU, and more. I’ll post modules here as I create them - let me know if you have any feedback about individual modules or the collection as a whole!
I took the internals of this module here and modified it a bit - turns out if you use oscillator nodes instead of a phasor core, you actually get some CPU savings.
I added an FM input control as well as a flashing indicator that will warn you if you’re modulating below 0Hz.
The big plus to using the internal oscillator rather than the phasor is the anti-aliasing included in the basic oscillator, although the external shaping circuitry will reintroduce some, as will the FM. One downside is that the phasor supports through-zero FM whereas the oscillator node does not. All in all, particularly if you’re saving some CPU, I prefer the oscillator node. I generally use the phasor in situations where I need control of the phase of the waveform, or I need a periodic ramp for some other purpose.
Here’s @stevex’s Moon Walk compressor with an added mix control and GR meter. I also changed the release times to a knob since it will save the parameters between loads vs. the pushbutton (will be different in Audulus 4!). The big addition is the mix knob which allows you to do parallel compression - dial in a really squished compressed tone and mix it back in with the original.
I also think @stevex had a homebrew zerocross calculator in there that I replaced with a ZeroCross node. If I’m wrong about that, let me know.
This oscillator is adapted from an @stschoen design from way back in 2016 that I still think is really cool. The cool thing about it is that it preserves the shape function of the osc node for the sawtooth. So the functionality will be the same as the basic VCO but with TZFM.
edit: I noticed that the sine output is actually sin(sin(x)) as the basic shape for both TZFM and Basic VCO. This isn’t necessarily a bad thing. It means a few extra harmonics and a little less amplitude, like an analog sine. But if you wanted to preserve the pure sine you could insert an asin(x) expression before, or inside, the shape expression.
I’ll second @robertsyrett’s comment. I’m a big believer in using the sub-module approach to divide a module into functional areas. Within a module you can group elements and use descriptive inputs and outputs since the size of the sub-module doesn’t really matter. It makes the overall module easier to understand and modify. It’s generally considered good programming practice to separate the UI and functional parts of an application and I think Audulus is no exception. If you have the parts that actually perform the module’s function encapsulated, it becomes simple to change the UI or re-use the logic in another module.
Some excellent work being done. You know things are hot when oscillators are dropping on Boxing Day. We had at least two other compressors, one with side-chain, what made you choose this recent one as a library forerunner?
Separate thread? It seems like utilizing a digital through zero fm modulator against an analog carrier might be an effective use of Audulus. The speed and versatility of the node patching should be extremely useful for hands on conceptual experimentation to compliment the subject matter in the muffwiggler thread, for example. Excited to get back to the rack for some hardware fiddling.
We could probably use a thread on TZFM as it is a pretty interesting topic and worth exploring in a coherent way.
I keep thinking about getting one of those doepfer A-110-4 oscillators, maybe the one with the nice blue front panel. Beyond that, I think Audulus does a great job in the through zero department, with aliasing only being really audible in the upper octaves.
@biminiroad as a side note, are you refacing the LFO’s? I was thinking of making a quicky video on them.