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.