hi Randy and community, my name is Scott, and i've been enjoying the timbres of the Kaivo demo i downloaded. great synth plugin!
so, i'm on the warpath to creating a setup that uses a live non-commercial performance rig where i'm basically trying to recreate the idea of a prepared piano that i can interact with physically. i have a custom UI i built in Unity on a touchscreen talking via OSC to my sound engine, running PureData.
so, i'm looking for waveguide modelling or physical modelling of strings and i came across your excellent Kaivo instrument, but the issue that is that this will be running on Linux on a Raspberry Pi (ARM) which throws out hosting VST plugins (i have read about possible VCV Rack versions but these are still to be addressed and it seems like its taking a while - plus i kind of don't want a GUI) . i do actually have a few models via PD externals that get me close for plucking and tubular resonators, but i really liked the spring models you used in Kaivo, and the idea of using a granulator to drive excitation is interesting as well.
breaking things down, how did you get the model for the springs specifically? did you use Perry Cook's STK or a modified Karplus or Matlab or what? if i wanted to make my own version where would i look? would Csound work? i have a few sources for granular objects in PD so i think excitation is available. i've also worked with this long enough to know that the process is very iterative and that this is the main difference between a prototype and a performable expressive instrument. but if there was a good jumping off point to start from i'd be grateful for the information. thanks!
Hi and welcome.
I haven't seen any spring models in open tools like the STK. One reason might be that it's a lot more art than science at this point. Making spring sounds from a physical model based on the actual geometry and material properties of a metal spring is possible, but requires a lot of computation, too much to do in real time. Very roughly, it's in "devote a whole GPU to it" territory.
Any software spring models running in real time now are black-box models, in the sense that they make a springy sounding signal but are not based on an actual spring's geometry. Rather, a phenomenological approach is taken, where DSP blocks that we can run in real time are combined to produce a system that sounds spring-like. To mimic the way the sound scatters, allpass filters are used. These have the effect of making high frequencies travel faster than low ones (or vice versa) and when lots of them are combined in a feedback loop, the characteristic "dewp" of a spring results. Kind of.
If you look for the sounds people have generated from this kind of model in open research (search "Parametric Spring Reverberation Effect" for one starting point) generally they are not very convincing. Yet some of the spring reverb products, from Universal Audio for example, do sound very good. With this stuff that's more art than science, makers are understandably less motivated to share their work.
To make Kaivo's springs I used a bunch of very short allpass filters in a feedback loop—essentially modifying the string model to make it more like a spring. If you were to take a tunable Karplus-Strong spring, add 20–50 allpass filters in the feedback loop, and tune the parameters for maximum dispersion, you would have a good starting point.
hi Randy - thanks for this! very helpful for sure. and i recently delved into Iain McCurdy's Csound examples of Karplus and other variants using CsoundQt and he was using various methods of excitation in his demo, somewhat like Kaivo, though it wasn't a granular effect per se, just a sound file input. but the effect was a bit similar. appreciate the breakdown!