Maraoke is a dumb/excellent live event which is exactly the same as a normal karaoke night, with the same songs, except when you sing the songs it turns out that Coolio’s Gangsta’s Paradise is now about Sonic The Hedgehog for some reason?
This is exactly as stupid as it sounds but people seem to enjoy it – there are now over 500 songs in the roster (many of which are submitted by attendees) and the event has traveled all over the world to baffle/entertain/anger crowds.
I’ve gone from attendee to songwriter to helping run events to accidentally writing a new karaoke software system – most months I can be found behind a computer at the regular event we do at Loading bar in Dalston, with my biggest enemy, this pile of little cards:
I have grown to despise this pile of cards.
The way a Maraoke night works is that people who want to sing write their name and the song on a little card, give it to me and I put it at the back of the pile. Sometimes it will go further forward than the back if it’s a good song and everyone else has been picking rubbish songs.
Then someone will ask if Song X has already been taken and I’ll have to look through the pile one by one because I can’t remember and I’ll say ‘Yes, you can sing Song X!’ only for it to turn out that the reason no-one else has picked it is that we don’t have Song X, or that we do have Song X and someone has picked it but two of the cards have got stuck together. Then the first person will come back and asked to change their song only I can’t find the card because it fell out when I was looking for Song X and now I’ve dropped all the cards and I can’t remember which order anything was in and which card did I just hand to the host to announce next anyway and please stop putting your drinks next to the computer equipment.
If only there was a better way!
The software that powers the night does have a queuing system, but it’s so primitive that it’s rarely used to do anything more than queue up the song that’s immediately next. Plus the whole screen is a big mess of arbitrarily jammed in stuff that seemed like a good idea at the time, and could probably do with an overhaul. Also why is it any of the colour that it is?
First things first, let’s take the sign-up process ‘online’ – people can still pass me a card, but I’ll immediately enter the details on to the system. Probably on my phone so I don’t have to hunch over my laptop like some kind of computer pervert. Since the system is all web browser-based anyway this is just a matter of adding a new page to the Rails app that powers it.
Not only can I queue the song up, but I can automatically check whether it’s already on the queue and get them to pick something else if it has. I’ve also stuck in autocompletion for the song entry using JQueryUI to speed up selecting which song they’re after.
What if I am sick of waiting for all these losers to sing their songs and want to go straight to the top of the queue? A bit of SortableJS adds lets me drag my song up and drop it at the top of the list.
Uh oh, but what happens if I’ve got the queue open on my phone, and also on the laptop that’s actually playing back the songs?
Luckily Ruby on Rails, which makes all of this work, comes with a way for different windows to talk to each other called Action Cable. Literally every tutorial I’ve ever found about this is about making a chatroom app but Maraoke uses it to let the behind the scenes bit tell the ‘laser display board’ (just another browser window that happens to be being displayed by a projector) to start playing the music and displaying the karaoke lyrics, and for the display to feed back information to the control screen.
So to make this new stuff work I just make use of the fact that every window can chat away to every other window, and, e.g. send out a message to all the open windows to refresh the queue when there’s a change.
There’s still one thing missing: with the old card-based system, I’d pass a card up to the host, Ste, to let him know what’s coming next. To replace that I knocked up a page for him to load on his phone that should automatically show what’s at the top of the queue. I even popped in a Veto button should he suddenly remember that the next song contains a joke insulting the mother of Ian Moneybags, who has just turned up and is about to buy Maraoke for A MILLION POUNDS.
And if he doesn’t even want to announce the next singer himself, the system can now do it on the credit screen which displays at the close of each song.
By the time I’d finished hooking all this up it was more or less time to get to a train to Dalston for the February Maraoke, where we did a live ‘alpha test’.
It worked! I kept all the cards in a pile as a backup but was pretty quickly confident enough in it that I entered a few requests in directly without making people fill out a card at all.
This was a massive improvement, making it much easier to do stuff like prioritise people who haven’t sung before and deprioritise scoundrels who have snuck two songs into the queue at once. Apart from anything else it reduces the amount of time spent trying to interpret the disgraceful handwriting of today’s youth, bring back National Service and Parker pens I say.
But it was NOT PERFECT:
- Having several more windows open (the queue on two computers plus my phone plus the host screen plus the main display) than usual demonstrated an extremely stupid bug which causes the system to try and load all the data about a song into every open window when you hit play, regardless of whether it’s a window that’s going to play a song. This was causing a massive delay until I figured it out and shut down some of the windows.
- Once you’ve started reordering the queue it’s easy to lose track of how long a song has been sat there – while we exercise some judgement about when to play certain songs we don’t want to make someone wait all night, so I’ve added in a strip of colour that fades from green to red over the course of an hour to indicate that someone in the room is getting sad that their song is taking so long.
- The host screen worked fine, but didn’t update while Ste’s phone was locked, which he solved by propping it up next to the stage. This actually worked quite well so we’re probably going to buy a very cheap tablet and use that. Maybe I’ll add a ‘MORE VODKA’ button and a bit where I can get him to request that the owner of a green Ford Mondeo contact the venue staff etc.
- We usually end up with more songs in the queue than we can fit into the night – it would be useful to tell the system when we’re finishing so it can automatically display the cut off point in the queue based on how long each song is. And then close sign-ups and decide which solid gold Maraoke classic is going to end the night.
- We’re killing the NEXT SINGER display on the main screen after each song, and not just because a bug meant it repeatedly insisted that the next song was Bring Me To Life by Evanescence – even when it worked correctly it just seemed slightly less exciting than the small ‘reveal’ that happens each time the next singer is announced by the host.
But basically, a successful test. Maybe at some point we will do away with the cards altogether and SAVE THE PLANET, maybe writing things on little cards is part of the INDEFINABLE MAGIC of Maraoke, who knows?
Maraoke happens every month at Loading Bar in Dalston in London – the next one is on March 13th. Or it happens LITERALLY ANYWHERE IN THE WORLD you would like, if you want to pay us to do that – see the website for details.
I am always looking for more dumb ways to use my haphazardly acquired technical knowledge to make weird creative stuff happen: e dot jefferson at gmail dot com if you’d like to talk about that!