Skip to main content

Introducing Noisevote, or "A Democratic Rock Concert"

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 )

Comments

Popular posts from this blog

Using a Raspberry Pi as a MIDI USB/5-pin bridge

In my constant... need... to get everything music instrument related to communicate with each other, I wanted to look into ways to get some of my keyboards/synths with only MIDI over USB to talk to devices with regular good old-fashioned 5-pin MIDI ports from the eighties. Cables! First I had a quick look at off the shelf solutions. The most interesting one being the Kenton MIDI USB Host – providing MIDI host functionality for USB devices as well as regular MIDI in and out in a small box. Unfortunately it is rather expensive (~125 €) and a reliable online source warned me that it was not entirely stable in collaboration with my OP-1, so I started thinking of more... home-grown solutions. I decided to try to use my old Raspberry Pi and see if that would serve as a USB host with a borrowed MIDI USB adapter. (Thanks Simon.) A cheaper, and, as an added boon, a nerdier solution. Step 1: Get the USB MIDI device up and running This was the easy part. The device I have been lent ...

Fix your rapid blinking Marantz SR-6004 using nothing but 3 fingers - and a thumb

A couple of years ago my (most of the time excellent) Maranz SR6004 acted up. It did't want to turn itself on. Properly. Just stood there and blinked rapidly. Its little red light that is. At me. The solution was so simple that I didn't bother to write it down as I was sure to remember it. Alas, no. Some weeks ago it did it again. (Can it be the heat?) Just stood there blinking rapidly at me. The manual just said - as it said last time around - that it was time to return the unit to it's maker. Or similar. Some googling led me to this page:  http://www.allquests.com/question/4056803/Marantz-XXX4-Series-Failure-Issues.html  The technical term for what I had experienced seems to be "The Pop of Death". Aïe. But!, humongous letters said: YOU CAN SOMETIMES RESET THE UNIT BY PRESSING SURR MODE, CLEAR AND EXIT SIMULTANEOUSLY And so I did. And so it was fixed. And all was well. (And now I have written it down for the next time.)

Add overall lesson timing to video listings on Coursera

Marché de La Rochelle HDR  Probably about two years ago - when taking Andrew Ng's excellent "Machine Learning" MOOC, Johannes sent me a piece of JavaScript that populated the video lists with overall time per lesson just by pasting it into the URL-thingy in Chrome. Magic. Today when I sat down to start the course on "General Game Playing" that I have signed up for, but, alas, not (yet) found much time for, I thought of that piece of code and wondered if I, with my new knowledge of JavaScript, could whip up something like that. (Also I couldn't find Johannes' original one.) I quickly hacked together something this afternoon over a flat white in a hipster cafe here in Lyon. And lo and behold it worked. Then I extended the functionality to also show minutes and seconds of unwatched video - as well as total overall counters for the entire course. Now each lesson heading reads "Lesson N - Name [time remaining/total time]" instead of just ...