Just browsed over the source, in stead of hard-coding “48000”, shouldn’t it be based to the actual sample-rate choosen by the user?
float _sampleTime = 1.f/48000.f;
Just browsed over the source, in stead of hard-coding “48000”, shouldn’t it be based to the actual sample-rate choosen by the user?
float _sampleTime = 1.f/48000.f;
If you have a constant frequency sine wave and want a stable very low cpu approach the stable recurrence here https://vicanek.de/articles/QuadOsc.pdf is great
It’s easy to implement but here’s ours sst-basic-blocks/include/sst/basic-blocks/dsp/QuadratureOscillators.h at f3634226b0bc8232da59a3427cd36098c8ab2dc4 · surge-synthesizer/sst-basic-blocks · GitHub
It’s just the initialization. I understood it is better to initialize variables with a value. (Do correct me when I’m talking nonsense.) You can find the onSampleRateChange method, where it says osc[c].setSampleTime(APP->engine->getSampleTime()); .
Oh, interesting, thanks, @baconpaul !
You say “constant frequency”, so does that mean that you cannot do audio rate FM?
What I did, is that some computations are done less often, as @codyge suggested: the parameters concerning the amplitudes of the partials (the parameters ‘partials’, ‘tilt’ and ‘sieve’, as the CV buffer section (everything with red labels)) of the partials are processed a 1/64th of the sample rate, with a minimum of 750Hz. The pitch and the stretch parameter are processed at sample rate, so you can do audio rate FM.
If you do audio rate fm the computation advantage drops away since you need to calculate sin and tan every frequency reset
As I’ve said over and over, re sine:
My “Basic VCO” uses that. I made a patch with 1000 sines once - it’s quite fast.
Also, as you mention, there is no need to run the seive every sample. That’s crazy. Perhaps the envelopes don’t have to run at audio rate, but, again, they shouldn’t take a ton of time, if properly implemented. Just look at how little CPU the VCV ADSR uses. Esp for 4 channels at once.
There’s lots of (I think) useful stuff about this, including code examples here
Hi all!
I added 3 new modules to the plugin:
These are some of the best modules in VCV. Been using them for quite some time now. Matthias is a genius for implementing the Sieve of Eras so neatly and FUNS is just an awesome VCO with continuosly variable waveforms and modifiers. Stereo too. Try them if you can !
@tiesoetberg Love these as well, thanks for the great work. Any chance you are considering porting these to the Metamodule? I think they would be a great addition.
Hello, first thank you for these nice modules. I like adje and funs a lot. but unfortunately i can’t bring in the b parameter in funs. nothing happens. a and c works. what can i do? @matthiassars
Fixed it for version 2.6.2. It’s available in the VCV Rack library now.
hello,
i am struggeling with the parameter b in Funs.
after updating i hope it is gone, but playing with the knobs a.c and b brings no change.
could you please describe in details in which situation the knob b brings a difference?
thanks
thank you, i know that.
but i need some ideas, which values of a,c makes it possible to change b.
i see no changes in the display, if i turn knobs a,c.
a short info about an exact value of a,c will be good. then i can turn knob b.
Playing with Funs. For me any change to a, b, or c does make a change to the waveform. Both for turning the knobs, or using the CV inputs.
Version 2.6.3 on Arm Mac.
Hm.
What is the pitch and the sample rate you are on, @karlderletzte ? Can you see what happens when you try a lower pitch or a higher sample rate? You can see it works for @Yeager , because he set the pitch very low.
(The reason for that is: to mitigate aliasing, I simply put restrictions on the tree parameters and these restrictions depend on the normalized frequency (frequency / sample rate). I admit it was a bit too strict in v2.6.0, so I loosened it for v2.6.2.
If you’re interested in the underlying code: see the method RatFuncOscillator::setParams in RatFuncOscillator.cpp )
Ah that’s why ! Be good to have a menu option to get aliasing and old behaviour, it’s funs sometimes.
hello there,
thank you for the explanation.
i checked it here and it seems that i could use funs with octave set 0 to 2.
unfortunately with higher octaves nothing happens.
as far as i understand, therefore you can’t use funs as a vco?
only for lfo purposes.
or am i wrong?
Karl