Awkward plate resonator


#1

After a brief time of inactivity i tried to get back to the "physical modelling" affair (see this topic https://sebiik.github.io/community.axoloti.com.backup/t/a-first-approach-to-physical-modelling/1636)

I applied the naivest of naive approaches (actually i tried the runge-kutta road, but my C knowledge is definitely not enough for this) and built something that might, to some extent, resemble a plate reverb.

plate.axp (13.0 KB)

The way this works is the following: every cell in the 12 x 4 rectangle represents a mass. On means connected, off means disconnected.
Masses are connected in rows and columns (no topdown wrapping currently), inputs (1-4) are like jacks connected to the masses of the first column, outputs (1-4) are like pickups (you can select the pickup position with the radio selector)

If you draw a closed path in the grid, the sound is transfered from one side to the other with spring-like connections. You can define the stiffness of the spring and the amount of friction (careful when going near 0)

This object is a cpu-monster, with all cells activated it can easily suck up to 90% of the dsp, however i'm pretty happy with it, and will definitely update.
Now i'll go eat some 100% real tagliatelle with ragù, have a nice afternoon!


#2

Sounds intriguing...
Keep up the great physical-modelling work!

a|x


#3

I'll test it once I get home but sounds interesting! How did you get to this formulation, is this the way people go on to model spring reverbs? I've seen several models of connected masses via a spring, but I thought they were also used to model a surface, like a drum surface for example.

Cheers!


#4

I don't think spring reverbs or any other physical modeled instruments are made this way. As i said earlier using this formulation requires a lot of cpu power and unfortunately does not sound particularly interesting.

The ode solving algorithm is a direct euler (same thing as filter/lp1 for example), which behaves correctly only at low frequencies. There's no saturation implemented (it would significantly increase cpu usage) and this implies huge resonances at critical frequencies (yeah, the system behaves like a net of resonant bandpass filters).

I came to this implementation thinking that any physical system could be modeled with hooke law (elastic model).
This is true to some extent, and it's the way simulation software works, the problem is that simulating a mesh of springs is expensive in terms of cpu power. A much more clever way to model a plate or a string or stuff like that would be to come to some compromises and maybe use several object types (filters, resonators, delays)

I tried going in that direction but my interest quicly dropped :frowning:
Maybe i'll come back to this some day