A little duo I'm part of these days, 1bisHill (What's with the name you ask? It is a long story...), was asked to play some songs at a gathering at my work the other day. (With a guest star from Brazil.) So, without thinking, I asked my partner in crime, and he said yes, so I said yes. And then I thought about things, and realised that we have lately drifted towards more and more... noise - less, what might be regarded as, ... music... Perhaps not compatible with playing at people at a party at work. So I got scared. And then I did what I always do when I get scared - tried to find a programmatic solution! This time I created a tiny web service where people could vote for more or less noise. Noisevote, if you want.

Pedals with  NSFW names like Big Muff and Swollen Pickle en masse.
Basically, server side, it is a really simple Ruby and Sinatra web service with a sqlite database to store votes (running on my Raspberry Pi at home). Client side it is Bootstrap and D3.js with AJAX calls to refresh the data. Instead of logins I just store unique random keys in people's sessions so that only the last vote of anyone is "active" at any time. Max. (I'm guessing this is not really incognito-mode safe, but we are not creating a super-democratic system here, and the pragmatic need to make something super-easy to use won. This time.) In this first, quick, and dirty version each vote lose influence over the overall vote in a linear fashion, and after one minute the vote is dead.

Behind us, on, in lack of a better word, the stage, we had a screen displaying the current results of the vote (along with a short and simple URL in large friendly letters for people to access the service) - in form of a gauge (going 'till 11, of course). Like so:
Beautiful D3
During the "concert" we could then adjust our way of playing (and what pedals we used) depending on where the gauge was pointing. And between songs we could adapt the play list accordingly. That's it. And, interestingly, people did vote. Some did, at least. During our 15 minutes or so of performance, we got 52 votes, from 29 unique voters.* Not bad, methinks.

Some possible, and potentially interesting, improvements:

  • A better attenuation function. (A linear taper off,  like it is now, is not particularly interesting.)
  • A visual setlist. (For example with a tree structure in the veins of good old Out Run - choose left for "easier", right for "harder", "left and then right" is the same as "right and then left". (I realise that this structure probably has a name I should know.))
  • Vote for other metrics could be fun to try as well. Faster/slower? Louder/quieter? (A friend suggested "more/less A minor", why not? :-))

*38 votes were for more noise, 14 for less noise.

(Thanks again to Mike Bostock for the D3.js library, and the code that the gauge is based on: http://bl.ocks.org/msqr/3202712 )