This is a teaser video for a new module I have been working since early this year. It will eventually be a hardware module as well. It is a direct spectral synthesis dual VCO with lots of modulation that make is possible to create pleasing piano and plucked instrument like sounds and harsh discordant metal sounds.
Sounds awesome! How’s the CPU usage so far?
The code is optimized for embedded hardware so CPU usage is pretty low given what it’s doing.
That’s quite a caveat!
I just want to get my hands on this thing lol
True. I’ll do some benchmarking
You may have a better way to do this, but here’s something I wrote a long time ago about that: here
My CPU usage is peaky because the heavy-weight portion runs every 43 milliseconds or so. There are ways to smooth this out somewhat by staggering the two voices or by breaking up phases of the algorithm but I’m not sure it’s worth the effort. Using the CPU meter, without modulation usage ranges beween 0.2% with average around 0.9%. For comparison Braids and the basic VCV VCO are relatively pretty flat at around 0.5%. I did this comparison with just three threads. Modulation kicks up the CPU usage a lwith external audio modulation because I am running an FFT to extract the spectrum from the modulation signal but the increase is surprisingly small at around 0.2%. Just for grins I duplicated dSpec 50 times (with 8 threads) and the audio was still played just fine.
You didn’t mention what sample rate you are using, what buffer size, what operating system. You (unintentionally?) omitted the peak CPU meter value, providing only the minimum and the average.
But, if I assume 44100 sample rate, I think you are saying that you are doing an FFT with a frame size of 1500 samples (so probably not 44100?), and that your “peaks” are because every block you do a lot of processing on the process thread.
Some people who do FFT processing do the FFT blocks on a different thread, to avoid that blockiness. That’s what I did with my ancient “Colors” module. But there are of course trade-offs - no obvious “right” answer.
Have you tried with a very small audio buffer size, like 32 sample? I would expect this blockiness could be more of a problem with small buffer? (and no problem at all where the buffer size is bigger than the frame size!).
Anyway, cool sounding module! Best of luck.