Beats-per-minute Meter

December 16th, 2011
ideas, music, tech
In general I have a decent sense of how fast to play a tune; I can usually hear if we're going to slow or too fast, and I can look at the dancers to support my intuitions, seeing if they're scrambling. But sometimes, especially on jigs, my sense fails me and I'm left wondering whether we're going too fast. This is hard because "too fast" can be just 3% more than "just right".

To help me out, I want to write software where I can tell it a target BPM and it will let me know non-intrusively where we are relative to it. I think the easiest way to do this is with color [1]: blue if we're below min, red if we're above max, green at target [2]. Between these colors we can have smooth variation.

This needs to have as input the audio signal, either through a board feed (especially if we're also recording) or through the built in mic (which should be plenty good for beat detection). It needs to disable the screensaver. And it needs to write to a giant window. Ideally this would just run in a web browser as javascript, but for that I think I'm waiting on navigator.getUserMedia(), which appears to currently exist only in opera. (If you want, you can check your browser.) So this leaves me with flash, a java applet, or a standalone program. [3]

General fully automated beat detection is a hard problem, but there are two things that make it easier in this case. One is that it only needs to work in the 90-130 range for a nearly constant tempo. The normal problem of "is this 100bpm or 200?" doesn't apply. I'm also not trying to say exactly where the beats are, just how often, so consistent syncopation isn't a problem either. There are some libraries; whether I end up using one probably depends on whether I'm in a browser and needing to use javascript.

Any chance this already exists? [4]


[1] The important thing to me is that this be something that requires minimal mental energy during the performance. Having a colored screen does that. Giant BPM numbers might work too, I'm not sure.

[2] I think the right values are min = 112, max = 122 and target = 118. You could make target adjustable, but I think I'd rather just mentally aim for a blueish color when we were intentionally playing slow and reddish when intentionally playing fast. The goal is for max and min to be set at the bounds of the danceable range.

[3] You could also make some sort of standalone box, like a tuner or metronome. Possibly with a spiffy analogue needle. One advantage of a box is that you could sell them. You'd probably sell it as a "better metronome". Hmm, sales pitch: "Why make the musician adapt to the device? Just as we've replaced tuning forks with tuners that can tell what note you're trying to play and help you adjust to where you want to be, the bpm-o-matic lets you know how fast you're playing without any work on your part. Throw that old metronome away and buy a bpm-o-matic today!"

[4] You could just say: 'learn to use a metronome'. I don't like metronomes; they feel too rigid. The standard way of using one involves playing the downbeats when the metronome says to. This doesn't really combine well with having a group of people play where only one of them is paying attention to it. You could learn to tell whether you are getting ahead or behind of an arbitrary metronome beat, but that sounds hard, confusing, and attention demanding.

Referenced in:

Comment via: google plus, facebook, r/WeAreTheMusicMakers

Recent posts on blogs I like:

Jealousy In Polyamory Isn't A Big Problem And I'm Tired Of Being Gaslit By Big Self-Help

The nuance is in the post, guys

via Thing of Things July 18, 2024

Trust as a bottleneck to growing teams quickly

non-trust is reasonable • trust lets collaboration scale • symptoms of trust deficit • how to proactively build trust

via benkuhn.net July 13, 2024

Coaching kids as they learn to climb

Helping kids learn to climb things that are at the edge of their ability The post Coaching kids as they learn to climb appeared first on Otherwise.

via Otherwise July 10, 2024

more     (via openring)