You either need to provide an implementation for all functions in your base class or declare them pure virtual, like this:
virtual AudioStream& getStream() = 0;
virtual unsigned char getPort() = 0;
protected:
// subclass should process the audio graph and fill the supplied buffer
virtual void processGraphAsBlock(TeensyBuffer& blockBuffer) = 0;
By the way now that the dust settled a tiny bit: Noise plethora seems very cool - haven’t always been very able to gel with noise modules unless trying to emulate a snare but a few minutes in and I really dig this module and can see myself using it a lot. Very glad I could test this one!!!
Yeah I’m still getting my head round it a bit, but it’s great you can get (say pairing with Percall), kick, snare, hat, cymbal, vinyl crackle all from one module. I’ve also been modulating absolutely everything with noise, you can get some great textures.
Here is a selection (load in Rack 2.0.1 via ‘Edit->Import Selection’ menu item) that makes some gurgly noises using the Noise Plethora. Careful, turn down gain on mixer before patching VCO out to mixer, and use a slow clock/lfo to trigger the adsr
This thing looks to be a lot of fun @hemmer , thanks for porting this over!
I’m in love with this new module! So many sounds, I can’t believe how much is packed in there. Looking forward to spending lots of time with this one.
It just caused Rack to crash. I was scrolling through the different programs or algorithms when it crashed. The log is long (68.8MB). I can send you the entire thing but it mostly consists of thousands of lines similar to this:
[2500.614 debug src/NoisePlethora.cpp:447 setAlgorithmViaBank] setAlgorithmViaBank: using
[2500.614 debug src/NoisePlethora.cpp:485 setAlgorithm] Didn't find in programSelector
[2500.614 debug src/NoisePlethora.cpp:447 setAlgorithmViaBank] setAlgorithmViaBank: using
[2500.614 debug src/NoisePlethora.cpp:485 setAlgorithm] Didn't find in programSelector
[2500.614 debug src/NoisePlethora.cpp:447 setAlgorithmViaBank] setAlgorithmViaBank: using
[2500.614 debug src/NoisePlethora.cpp:485 setAlgorithm] Didn't find in programSelector
[2500.614 debug src/NoisePlethora.cpp:447 setAlgorithmViaBank] setAlgorithmViaBank: using
[2500.614 debug src/NoisePlethora.cpp:485 setAlgorithm] Didn't find in programSelector
[2500.614 debug src/NoisePlethora.cpp:447 setAlgorithmViaBank] setAlgorithmViaBank: using
[2500.614 debug src/NoisePlethora.cpp:485 setAlgorithm] Didn't find in programSelector
[2500.614 debug src/NoisePlethora.cpp:447 setAlgorithmViaBank] setAlgorithmViaBank: using
[2500.614 debug src/NoisePlethora.cpp:485 setAlgorithm] Didn't find in programSelector
[2500.614 debug src/NoisePlethora.cpp:447 setAlgorithmViaBank] setAlgorithmViaBank: using
[2500.614 debug src/NoisePlethora.cpp:485 setAlgorithm] Didn't find in programSelector
[2500.614 debug src/NoisePlethora.cpp:447 setAlgorithmViaBank] setAlgorithmViaBank: using
[2500.614 debug src/NoisePlethora.cpp:485 setAlgorithm] Didn't find in programSelector
Good catch, looks like that’s just an easy ‘off by one’ error to fix. It reminds me I need to remove the test bank D, and also remove debug messages soon (although in this case it was useful!). EDIT: fix pushed
added soft clipping to outputs (-5 → +5V), like hardware
includes assymetric nonlinearity for bottom section to get even/odd harmonics with high resonance
added DC blocker, like hardware
tuned/calibrated playability of resonances and grit quantity
couple of fixes to make sure Teensy objects sound (roughly) the same at different sample rates
various refactoring/cleanup
Just wondering if there is any other feedback before we move this towards a release in the library? I was maybe thinking of making DC block always on (and just removing the menu item). This is my first time releasing something with filters in a musical context (i.e. beyond DC/antialising) so any feedback there especially welcome.
I’d say do it, but maybe the feedback you should be soliciting is: Is there ANY context in which you can use DC-offset for anything useful? I don’t know of any, so…
Possibly with LP filter all the way down you could get some interesting chaotic LFO stuff? As always it’s the tradeoff between complex/dense menus and feature completeness.
Didn’t watch the whole thing, and correct me if I’m wrong, but aren’t we talking about whether to block DC on the audio rate signal or not? Because for that I’d say yes. Of course if we’re also talking about potentially slow LFO, then no. Forgive me if I’m confused, I don’t know the module so… but I’m guessing there’s a good reason the DC-block is on the hardware.
It’s not just your modules that click when changing eg. filter mode and bypass on/off - could you make very short fades between states (1 audio-buffer?) ? Analog modules don’t click to the same extent i think.
This is probably a good idea (also for when algorithm is changed). Maybe not for filter bypass though, as that’s a bit of a niche option to use. Is there a particular compact way to implement this that you (or others) can reference? I was also thinking of this for Muxlicer.
Both white / gritty noise are fine from my checks, but the top section algorithms sometimes have DC (e.g. clusters of pulsewidth modulated square waves).
noooo, my gurgler would fail to work if you turn it off (which is fine, as long as I can turn it on again to return to current state) and remove the context menu item (not fine, leave it there please!!!)