For my Malmö Music Hack Day hack I built an app called Dogstep. Dogstep takes any song and re-renders it such that a pack of dogs harmonizes along with the song. It was a lot of fun to build and I was rather pleased with the results. You can try the app out yourself: Dogstep.
I got to try a few new things on this hack. First, off I needed some good dog sounds. I found all I needed and more at Freesound.org. What a great resource that is! I then needed to process the barks (trim them, pitch shift them, volume-equalize ). For this I used Audacity. It was way easier to use than garageband and it has all the audio filters that I needed (including the awesome Paul’s stretch we can make any howl sound like a banshee from hell).
To create realistic and varying barking, I created a barking state machine, where each state in the machine represents the barking activity for a bar in the song and each state has a set of transitions to other states in the machine governed by a probability that that transition will be taken. When a song is playing, I use the state machine to pick the state for the currently playing bar and emit the barking audio at the right times within the bar. Here’s a visualization of the barking state machine:
In addition to these barks, I look for the loudest parts in the songs and add a bunch of extra howling at these peak moments. Finally, I use the Stylophone play-along algorithm to have one of the dogs try to sing along with the melody.
Creating this state machine was really fun. There’s still a few bits that I want to do – such as having separate state machines for different parts of the song – i.e. a state machine when the song is very quiet vs. one when the song is loud and energetic. A hack is never really done.
The source for the hack is on github.
#1 by Brian on November 4, 2013 - 8:24 am
Barking state machine? More like a…barkov chain.
#2 by Paul on November 6, 2013 - 1:48 pm
hah-wish I thought of that.
#3 by Alex on November 5, 2013 - 10:58 pm
Very cool idea. One question: Do the bark pitches of each state change slightly to match the key of the current song (or something like that)? Or are the states exactly the same across the different songs?
#4 by Paul on November 6, 2013 - 1:47 pm
The pitches don’t change from song to song.