Pages

Sunday, December 8, 2019

Rum Pum Pum

[Title from a favorite book of my childhood.]

I've been thinking about all the great things I'll soon be doing in Michigan again, and I was reminded of something that's been on my list for a while. One of the classes offered at the gym Marika and I went to was Cardio Drumming. The "drums" used in these classes are yoga balls sitting on large plastic buckets, and I often wondered about how the vibrations from the drumsticks travel through the spherical balls.

This is an example of the wave equation, which applies to many systems where neighboring points (in this case, parts of the rubber surface) interact with each other. If we just consider a cross-section of the ball, we can use the 1-dimensional version of the equation:

What this says is that the rate of change of the height of the wave in time is related to how much the height is changing in space. I decided to implement a version of this in Python, but then I realized it would make a great HTML5 doodad!

The controls below let you change the properties of the ball and how you interact with it. Stiffness controls how much of each point's amplitude gets transferred to its neighbors (the c^2 above). Using 0 or 1 can cause some bad (but interesting) things to happen. Strike amplitude is how hard you hit the top of the drum every time you press Strike. Again, setting it too high may cause issues. The bucket provides a wall that the vibrations can bounce off of. If you suddenly increase the bucket size, you can trap waves inside. Damping makes the waves die off over time. Due to a bug somewhere, you have to press Reset when you first load this page, but things should work ok after that. Have fun!


Canvas not supported; please update your browser.

Stiffness

Strike Amplitude

Bucket Size

Damping

No comments:

Post a Comment