Spring modeling

Hi, I was checking the code of the Spring class and wanted to get better its parameters and all. Then I see the source says

// some basic physical modeling ugens - julian rohrhuber 1/04
// these are very simple implementations with cartoonification aspects.

And in fact, I was checking this mass spring damper system implemented in Max and it seems a much more robust system with more meaningful parameters based on actual physical quantities https://www.youtube.com/watch?v=2rFkZD51mT8

How “cheap” and “worse” is Spring anyway compared to more sophisticated models? Are there such more sophisticated models for SC as a plugin? What about in other computer music systems such as Csound, MAX, etc? I’m actually a Pd guy and I know about [pmpd] but it is a more complex and low level toolbox.

I’ve also been having fun with Sine Waves with Decay.ar envelopes This way you have a good control on the frequency and decay time. Another option is to just use Ringz.ar excited by impulses. How does it compare to “Spring”? How is Spring “springer” than creating damped oscillators with Decay and Ringz?




When I hear that n physical modeling implementation is “simpler” in this context, I understand that a less computationally intensive method was used. For example, prefer Euler’s method over Runge-Kutta 4th Order Method for ordinary differential equations (ODEs), or something similar.

That’s probably that. One does not necessarily “sound better” , maybe less “realistic”, if that at all,if you’re trying to be realistic.

yup, that’s what I get from being “cheap”, or “not sophisticated”, but I was hoping for some more details on the strategy used and how it compares to other models. I couldn’t really get the equation used and I see it is very different from the MAX reference I gave. Also, the parameters aren’t much clear, what is the ‘constant including mass’ supposed to quantify, are we just supposed to try by ear some parameters? (That MAX patch has more parameters that correspond to “real” physical quantities).

And about just using Decay and Ringz, could it be some sort of real real cheap spring damper system? I’m just getting into physical modelling stuff, would appreciate some very basic and easy guide for dummies. Thanks

I don’t have details about both projects. Maybe they just have a different nature.

Galileo alone had risked asserting the truth about our planet, and this made him a great man…

Fortunately, it is not true today. It’s not science, and nobody is at risk. So it’s just a question of taste.)))

“(Galileo) Galileo, (Galileo) Galileo, Galileo Figaro, magnifico”

1 Like

Saudadem já á nos vemos, querido <3

1 Like

vem logo poooooooorra :slight_smile:

I’ve lost the link but at some point, I saw a video where they started with the physical equations for a spring model, and it reduced to – wait for it – one feedforward term and two feedback terms. Many types of second order bandpass filters are also calculated as one feedforward term and two feedback terms, meaning that (at minimum) some types of BPFs are spring-model resonators.

I’ve used a low-frequency bandpass filter as a control signal – the natural decay toward its resting state is quite convincing.



There’s nothing particularly new about either the Spring UGen, nor the model discussed in the linked video. The damped harmonic oscillator is a well-studied phenomenon, and so ubiquitous in signal processing that it formed the foundation of many second-order filters we’re familiar with — Resonz, Ringz, RLPF, BPF, RHPF, and SVF accomplish the same thing but with parameters that are easier to work with. (The lowpass/bandpass/highpass shapes are a matter of whether you read out the position, velocity, or force respectively.) These filters are already physical models of a damped harmonic oscillator.

There is some inside baseball concerning ODE discretization methods and response to modulation of parameters:

  • RLPF/BPF/RHPF all employ the Bilinear Transform (a special case of the Trapezoidal Rule) with pre-warping, which is generally adequate, although if you’re sweeping around the filter parameters too quickly they can have some weird artifacts.
  • I’m pretty sure Resonz/Ringz use the Impulse Invariant Transform, which is the best option for very ringy filters and I believe unconditionally stable.
  • Spring seems to use forward Euler, which has poor stability properties; you can’t increase the oscillation frequency very much before it blows up.

The spring stuff is interesting for getting an idea of how filters work, but the standard EQ filters are practical implementations of it, and you can just use those.


Hey, allow mw to share info from the Pd list by Cyrille, who’s behind pmpd, a library for physical modelling for Pd. He answered me about the comparison from SC’s Spring UGen and the MAX gen~ patch I showed.

Both actually use the same equation, the Spring object is just a very basic implementation where it’s not possible to define a non-linear link for example. So I guess I now understand what these are very simple implementations with cartoonification aspects. means. It is just a very simplified model!

The MAX patch is more complex but in also a very simple scenario : 1 mass and 1 spring. So it’s not possible to create networks.

The pmpd library for Pd is a very nice and complex library that offers all building blocks to complex systems and movements. I wonder if there are other things like this in SC…

As for Spring, I’m failing to see where it shines and makes itself indispensible. Though I came across it here in this code on Scanned Synthesis Scanned Wave Synthesis

Who’s understanding this code anyway and could explain it to me how Spring is the thing needed and not just some Ringz instead? :slight_smile:


I do not understand why this post was hidden by the way, and it seems it led to a suspension that is being discussed here Suspension

anyway, just saying…

I think one of the main reasons why people (like myself) like spring (and plate) reverbs is simply that they were used on so many albums, that we think of it as a pleasant and soothing sound. I am guitar player and spring reverb is to me simply how guitar-reverb ‘should sound’. A spring reverb is very far from a natural sounding reverb which is very much part of its charm. Something similar can be said for plate reverbs although they seem slightly more realistic than spring reverbs.

On the other end of the spectrum are hall reverbs. Original hall reverb simply was the re-recording of a recording played back in hall or stairwell and thus far more realistic than plates and springs. I think the original aim of plates and springs was realism but as we now have far more realistic sounding reverbs available, they are mainly being used for their distinct non-realism. Typically when talking about how good some plate or spring emulation is, we don’t judge how close it is to realism, only how close it is to the analog version it is trying to emulate.

So to me spring reverbs shine on electric guitar. If you are not in to the particular non-realism of springs, then you should not worry about it and use other types of reverb. I personally very rarely use spring reverb in post production. I always record my guitar with a little spring reverb from the built in analog spring in my Fender amp and if I feel I need more reverb when mixing I usually opt for a plate reverb, either in the form of the gigantic mono - stereo mod’ed EMT 140 I have sitting at the studio (really two EMT 140 combined) or some convolution version, I particularly like the Wendy Carlos 140 impulse response which is part of the Altiverb plugin.

As Brian Eno so eloquently put it:

“Whatever you now find weird, ugly, uncomfortable and nasty about a new medium will surely become its signature. CD distortion, the jitteriness of digital video, the crap sound of 8-bit - all of these will be cherished and emulated as soon as they can be avoided. It’s the sound of failure: so much modern art is the sound of things going out of control, of a medium pushing to its limits and breaking apart. The distorted guitar sound is the sound of something too loud for the medium supposed to carry it. The blues singer with the cracked voice is the sound of an emotional cry too powerful for the throat that releases it. The excitement of grainy film, of bleached-out black and white, is the excitement of witnessing events too momentous for the medium assigned to record them

1 Like

Ok, but Spring is not a SpringVerb, right?

None of the models so far discussed in this thread are related to spring or plate reverb.

1 Like

Maybe I didn’t make this clear enough, but there’s no good reason to use Spring. It models the same system as Ringz, provides no additional features, has less intuitive parameters, and it can blow up to infinity.


thanks, I wasn’t sure, I guess you were clear, but it’s still hard for me to believe this is useless :slight_smile: I guess it’s time to try and recreate the scanned synthesis example with Ringz then

Haha ok so I was waaaaay off topic, please don’t flag!!

1 Like

sorry, just dit it :smile:

Have a look at miSCellaneous_lib’s Fb1_ODE and Fb1_ODEdef for general ODE audification.
Fb1_MSD is a wrapper for the mass-spring-damper model.

There’s a SMC paper and a video summary on YT:




I very much enjoyed your post despite, or perhaps because of, its offtopicness!