[PD] msd change mass of mass

marius schebella marius.schebella at gmail.com
Sun Mar 16 03:04:04 CET 2008


wow, thanks chuck and andy,
I had a much more practical approach, do the theory afterwards.
the problem is only that I found out that bang~ is not working for 
blocksizes <=64, so I cannot trigger the msd (will write another mail 
for that.) which means the msd patch is broken. (attached).
m.

Charles Henry wrote:
> I have forgotten some things here.  That's why it took so long, but I
> think I've got it mostly right.
> 
> There are two type of mass spring systems, depending on what kind of
> input you have.
> 
> force-driven: such as a loudspeaker--the coil induces a force on a
> permanent magent.
> 
> velocity driven: a crankshat-piston assembly--rotates with a fixed
> speed;classic problems for vibration isolation.
> 
> but I'm only going to cover the first one here.
> 
> these two type of inputs are similar to electronic circuits: a voltage
> source (force) and a current source (velocity)
> 
> so, a mechanical circuit would look like:
> 
>  |-----(M)---(S)----(D)---|
> (F)                          |
>  |----------------------------|
> 
> all in series
> 
> Suppose our output is the velocity.
> 
> F=m*a  (the force on a mass is in the same direction as its acceleration)
> F=c*v  (the damping force is in the opposite direction of velocity)
> F=k*d  (the spring force is in opposite direction of displacement)
> 
> 
> F(t)=m*dv/dt + c*v + k*integral(t0 to t, v*dt)
> Laplace transform:
> F(s)=(m*s+c+k/s)*V(s)
> 
> And the transfer function:
> 
> F(s)                   1/k*s
> ------ = --------------------------------------
> V(s)       (m/k)*s^2 + (c/k)*s + 1
> 
> And there are three cases:  underdamped, critically damped, and over damped
> (I'm not sure how to do the z-transform for a critically damped
> system, but I think we can figure it out).
> 
> poles:
> -0.5*c/m  +/- 0.5*sqrt( (c/m)^2 - 4k/m )
> zero:
> 0
> 
> Note, when c goes to 0, we get a harmonic oscillator at angular
> frequency w=k/m rad/sec, which is correct.  When we increase the
> damping, we get terms of e^(-0.5*c/m*t) which damps the solution.
> 
> 
> Under-damped case (the resonant system):
> (c/m)^2 - 4k/m < 0
> 
> 
> I'm reluctant to try to use a bi-linear tranform, here.  I'd like to
> look it up in a table!  I've worked through these problems before, but
> I can't remember what you do differently with the numerator... I think
> it indicates a mixture of sines/cosines.
> 
> z-transform of
> (s+a)/ ((s+a)^2 + b^2)   is
> (1 - z^(- 2)*e^(-aT)*cos(b*T) ) / (1 - z^(-1)*e^(-aT)*cos(b*T) +
> z^(-2)*e^(-2*a*T) )
> 
> T is 1/fs, our sample rate
> 
> z-transform of
> 1/((s+a)^2 + b^2)          is
> 
> 1/b * z^(-1) * e^(-aT)*sin(b*T) / (1 - z^(-1)*e^(-aT)*cos(b*T) +
> z^(-2)*e^(-2*a*T) )
> 
> 
> so, s/ ((s+a)^2 + b^2)   is
> 
> (1 - a/b * z^(-1) * e^(-aT)*sin(b*T) -  z^(- 2)*e^(-aT)*cos(b*T) ) /
> (1 - z^(-1)*e^(-aT)*cos(b*T) + z^(-2)*e^(-2*a*T) )
> 
> In our case, a=0.5*c/m and b=0.5*sqrt( abs((c/m)^2 - 4k/m ))
> 
> and our biquad coefficients are:
> ff1=1
> ff2= -a/b*e^(-aT)*sin(b*T)
> ff3= -e^(-aT)*cos(b*T)
> fb1=e^(-aT)*cos(b*T)
> fb2=-e^(-2*a*T)
> 
> I've put together a little patch, calculator and example biquad.  This
> took a little more time than I expected, and I'm running out of steam
> here.  Try it out, and see if it's what you had in mind.
> 
> There are two more cases to cover, but this is probably the one you
> want.  I may come back to this later....
> 
> 
> Chuck
> 
> On Sat, Mar 15, 2008 at 3:09 PM, marius schebella
> <marius.schebella at gmail.com> wrote:
>> yes, I was talking about an external called msd.
>>  I am not sure if biquad~ or fexpr~ can help. Is it possible to create
>>  harmonic sounds by sending impulses into a biquad~? that would really
>>  help. right now I am playing with msd in a block~ 1 subpatch, which is
>>  not very efficient.
>>  marius.
>>
>>
>>
>>  Charles Henry wrote:
>>  > Are you talking about some kind of mass, spring, damper equation?
>>  >
>>  > We could write such a thing with just a biquad~ or fexpr~, if that
>>  > makes life easier.  It's just a little bit of math.
>>  >
>>  > Chuck
>>  >
>>  > On Sat, Mar 15, 2008 at 1:32 PM, marius schebella
>>  > <marius.schebella at gmail.com> wrote:
>>  >> hi,
>>  >>  is someone working on msd? I wonder why it is not possible to change the
>>  >>  mass of a mass dynamically with something like [setMass m1 1.5(
>>  >>  is this function not supported because it is not possible, or just
>>  >>  because it was not implemented yet.
>>  >>  marius.
>>  >>
>>  >>  _______________________________________________
>>  >>  PD-list at iem.at mailing list
>>  >>  UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
>>  >>
>>  >
>>
>>

-------------- next part --------------
A non-text attachment was scrubbed...
Name: generate.zip
Type: application/zip
Size: 2156 bytes
Desc: not available
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20080315/b934f9c0/attachment.zip>


More information about the Pd-list mailing list