 particleLifetime = 1.0
 brightness = 1.0
 spinRate = 1.0
+noteSustain = 1.6
+wobbleAmount = 24.0
 origin = [0, 0, 0]
 
 # Physics
-numTimesteps = 20
-gain = 0.005
+numPhysicsTimesteps = 20
+frameDelay = 5
+timestepSize = 0.010
+gain = 0.1
 
 previousNow = 0
 spinAngle = 0

            y += wobbleAmp * Math.sin lfoAngle

        # Update velocity; use the XZ plane
        p.velocity[0] += (x + origin[0] - p.point[0]) * gain
        p.velocity[2] += (y + origin[2] - p.point[2]) * gain

        # Fixed timestep physics
        for i in [1 .. numTimesteps]
            p.point[0] += p.velocity[0]
            p.point[1] += p.velocity[1]
            p.point[2] += p.velocity[2]

        p.life -= timeStep / particleLifetime

    # Filter out dead particles
    particles = particles.filter (p) -> p.life > 0

    # Render particles to the LEDs
    client.mapParticles particles, model

setInterval draw, frameDelay
