Lindy Hop is physics.

This plain truth becomes obvious when we think about the flow of energy in the dance, changes in angular and linear momentum, friction between the floor and your Aris Allens, the spring constant in the connection – the list goes on and on.

This truth is also well-known – googling for "Lindy Hop physics" returns countless blog posts and discussions on the subject, including the following great quote:

"Lindy is 50% Newtonian physics, 30% musicality and 20% magic"

Unfortunately, this quote gives a very incomplete picture of Lindy Hop kinematics. Certainly, the concepts of action/reaction, inertia, and conservation laws – all of which are closely tied to Newton's name – are quite relevant in Lindy Hop. Furthermore, it is sometimes useful to think of dancers as point particles, or perhaps spherical bodies in vacuum. Therein, however, lies the problem. Newton focused his theories on the behavior of mechanical particles. Even light, to him, was a stream of "corpuscles". But we now know that no theory of light can be complete without treating it as a wave.

Likewise, no theory of Lindy Hop can be complete without describing its wave properties. Thus, to understand this dance we must think of Lindy not just in terms of Newton's laws, but also in terms of frequencies and spectra.

This is a useful framework for two main reasons:

It allows us to use the terms "wave-particle duality" and "Lindy Hop" in the same sentence.

We can now harness signals processing to analyze the Lindy motion and see what cool things we can find.

The goal of this project is to develop tools that will allow anyone with a smartphone to analyze their dancing. Can we use DSP and machine learning to improve people's dancing? Can we classify various moves? Styles? Lead vs follow roes?

The setup

At present, I am working on collecting and synchronizing video, accelerometer, and gyroscope data from the dancers. Data collection is being performed using Android. The code is available on GitHub, and you can grab the apk directly from here (the page has both the QR code and a d/l link). Be warned, this software is in a pre-alpha stage, and requires Android 2.3 (Gingerbread).

Usage notes:

Hit start on the devices that are logging the data. [With the logging devices (and the video camera) in very close proximity, hit the Beep button on one of the phones. This will produce a 440 Hz tone that will be used to sync data traces.] Update: this is no longer recommended. A better way to timestamp acceleration and audio is to bump the phones together. However, it may not be necessary, as audio data can be aligned using cross-correlation (or perhaps dynamic time warping).

The screen stays on throughout logging. Apparently, collecting acceleration data in standby mode is non-trivial or impossible (I have not seen definitive answers about whether partial wake locks solve this).

Data collection will stop if home or power buttons get pressed during logging, so try to avoid that.

Beware that the two phones can record the audio at different sampling rates (Android bug?) Check by doing e.g. mplayer -identify -frames 0 foo.3gp If this happens, resample using sox.

Audio traces can be synced using cross-correlation in Matlab.

Data analysis notes: coming soon!

If you would like to write an iOS version of the DanceLab app, or if you'd like to help me improve my Android skills in exchange for dance lessons, please get in touch!

Current results

Did you ever wonder what the frequency spectrum of the Lindy Hop movement is? Check out the two videos we've made so far!

The latest video is at http://www.youtube.com/watch?v=2P2WZZvpogM – in HD and with gyroscope data! Lead's traces are blue, follow's traces are red. Top plot shows acceleration (magnitude) over the last 8 seconds of the dance. Middle plot (left): frequency spectrum of the 8-second acceleration window; middle plot (right): frequency spectrum of all the data up to this point in the dance. Bottom plot: angular velocity around the vertical axis (available for the follow only). Positive values correspond to counterclockwise rotation, negative values give clockwise rotation.

Here, the top trace gives the magnitude of acceleration as a function of time (s), the middle is the Fourier transform of the last 8 seconds of acceleration (what you see in the top trace), and the bottom trace is the transform of all the data accumulated up to that point. The horizontal scale on the frequency plots is beats per minute, and the big peak is at 161 bpm, the tempo of the song.