ticks1 = {{0, "0"}, {-π/
              2, "-π/2"}, {-π, "-π"}};
ticks2 = {0, 2, 4, 6, 8, 10};

ω[
        t_] := ω1 + (ω2 - ω1) (t/tmax)

ω0 = 1;
γ =  .1;
A[ω_] := ω((0^2)/(ω(0^2) + I ω γ - (ω^2)));
ω1 = 1/4;
ω2 = 2;
tmax = 20 2 π;
dt = tmax/600;
x0 = -12;
n = 10;
s = 2;
d = 8;
((2 π)/(ω2 dt)) // N

$TextStyle = {FontFamily -> Times, FontSize -> 16};

\(\(anim = 
        Table[
xf = 
            Re[\ E\^\(I\ ω[t]\ t\)]; 
x = 
            x0 + Re[A[ω[
                      t]]\ E\^\(I\ ω[t]\ t\)]; 
α = \(x - xf\)\/\(2\ n\ π\); 
plate = 
            Graphics3D[
              Polygon[{{\(-d\)/2, \(-d\)/2, xf}, {\(-d\)/2, d/2, xf}, {d/2, 
                    d/2, xf}, {d/2, \(-d\)/2, 
                    xf}}]]; 
mass = 
            Graphics3D[
              Cuboid[{\(-s\)/2, \(-s\)/2, x}, {s/2, s/2, 
                  x - s}]]; 
spring = 
            ParametricPlot3D[{Sin[θ], Cos[θ], 
                xf + α\ θ}, {θ, 0, 2\ n\ π}, 
              PlotPoints -> 100, Ticks -> None, 
              DisplayFunction -> Identity]; 
g = 
            Show[plate, mass, spring, 
              PlotRange -> {6 {\(-1\), 1}, 
                  6 {\(-1\), 1}, {\(-24\), 1.01}}, Boxed -> False, 
              Axes -> False, 
              ViewPoint -> {1.555, \ \(-2.870\), \ \(-0.893\)}, 
              DisplayFunction -> Identity]; 
p1 = 
            Plot[\ Abs[A[ω]], {ω, 0, ω2}, 
              PlotRange -> {0, 10.5}, 
              PlotStyle -> {Thickness[ .01], 
                  RGBColor[0.53, \ 0.10, \ 0.82]}, 
              Epilog -> {Disk[{ω[t], 
                      Abs[A[ω[t]]]}, { .045,  .3}]}, 
              FrameLabel -> {"", "amplitude"}, 
              FrameTicks -> {None, ticks2, None, None}, 
              Frame -> True, 
              DisplayFunction -> Identity]; 
p2 = 
            Plot[\ Arg[A[ω]], {ω, 0, ω2}, 
              Epilog -> {Disk[{ω[t], 
                      Arg[A[ω[t]]]}, { .04,  .15}]}, 
              FrameTicks -> {Automatic, ticks1, None, None}, 
              PlotRange -> { .15, \(-π\) -  .15}, 
              PlotStyle -> {Dashing[{ .03,  .02}], Thickness[ .01], 
                  RGBColor[0.53, \ 0.10, \ 0.82]}, Frame -> True, 
              FrameLabel -> {"ω", "phase"}, 
              AspectRatio ->  .43, 
              DisplayFunction -> Identity]; 
Show[
            Graphics[Rectangle[{0, 0}, {1, 1}, g]], 
            Graphics[Rectangle[{1,  .5}, {2, 1}, p1]], 
            Graphics[Rectangle[{ .94, 0}, {2,  .5}, p2]], 
            ImageSize -> {288, 178} 2, 
            DisplayFunction -> $DisplayFunction]
, {t, 
            0, tmax, dt}];\)\)

Export["spring.gif", anim, "GIF", 
        ConversionOptions -> {"AnimationDisplayTime" -> 
              0.1, "Loop" -> True}];