SongMonster


Music 256a Final Project




Author : Maisy Wieman

Download : [ Source code ]

Tested on Windows 8



   


Motivation

    Music is fun! My initial inspiration came from my small cousins: I wanted to create something that was cute and happy enough for a kid to enjoy, but that also integrated sound in a design-oriented way. I wanted to sneakily insert Fourier Transforms and filters and frequency content, but still have something that appeals to kids. And thus, Song Monster was born.


So what does it do?

    Song Monster allows users to create their own world of sound, with little singing Tri-Guys who store your voice and play it back to you in different forms: among other things, you can sound like a chipmunk or a robot. But be careful, the ruler of the land, the Song Monster, likes to keep his music interesting, so if you don't keep changing your sounds, he'll gobble up all of your Tri-Guys!


Features

1. Change your voice

   Change the color of the Tri-Guys to change your voice to robot, or musical tones, or stretch or shrink them to make your voice higher or lower.

2. Make a Song!

    Train up to 5 Tri-Guys to repeat your input, and make your own song

3. Avoid the Song Monster!

    Keep the music changing--if you stick with one song for too long you'll face the dreaded Song Monster!

4. Multi-Channel Audio Output

    Tri-Guys Sound different from different angles


Getting Started

To start, press the "r" button to record your voice. From there, you have several options:
KeyAction
Left ClickOpen up a drop-down menu to choose which Tri-Guy to change
Left Arrow KeyShrink the Selected Tri-Guy to produce a chipmunk voice
Right Arrow KeyStretch the Tri-Guy to make your voice low
"0"Make your voice sound normal
"1"Make your voice sound like computer noises
"2"Make your voice sound like a robot
"p"Play/Pause
"d"Get rid of a Tri-Guy :(
"r"Record a new sound and create a new Tri-Guy
"w"Go into full-screen mode
"q"Quit



System Architecture

    Song Monster uses the RtAudio and chuck_fft libraries to perform basic DSP tasks, such as downsampling, upsampling, and shifting the phase.
I use a "Morpher" class that performs the necessary fourier transforms/filters, draws the "Tri-Guys" and handles the audio in terms of recording and playing.
I use OpenGl for the Visuals, which runs on a different thread than the Audio components.


User Experience Design

(GUI sketch draft)