The main theme of this app is collaboration of various forms. For one I wanted to create instruments that could help you play. That would coach you along. In this sense, the app is a collaborator with you, making suggestions which you can heed or ignore. The other aspect was that of collaboration with other people. By providing mechanisms to upload music at various stages of creation and download the same, this became a vehichle for creating new music with others who hold the app in their hands.
There are two main ideas to the Wreck Chorder, adding a sound, and modifying it (wreck it!). There are 5 tracks, and for each track you can add sound by either playing an instrument or recording audio. After that, a rhythm can be imposed upon the sound by doing an overdub and tapping a new rhythm. Once you're happy, move onto another instrument and keep creating. At any point a track, a bass line, a chord progression a crazy rhythm can be uploaded for sharing. Further, if you're feeling stuck or need some inspiration the download page brings in new ideas to build on or play with.
The Wreck Chorder is based on a couple different touch screen instruments which have been created with the iphone/ipod form factor in mind. The first and centerpiece is the chordal instrument which is a grid of hexagons. I spent way too much time trying to come up with something that made sense to me from a layout. The main thing I wanted was some logical flow and that from a given chord, you have all the diatonic chords immediantly available so you can slide into any chord. The voicing also changes such that all the voices remain in order, that is, if you go from a I chord to a IV chord the bass doesn't move, the 3 and 5 each move up so the 3 becomes the root of your IV chord in first inversion. blah, blah, blah, irrelevant but it sounds cool since the notes all slide into each other. When you're playing any given chord, some of the other chords will be hilighted to indicate more likely next chords, these are only suggestions but help guide through some very basic music theory chord progressions.
Check out my HW3 page to see how the chords were arranged.
Next, there are two monophonic instruments which are layed out the same but in different octaves (and colors!). These are reactive to the chordal instrument track. So if you record a chord progression on a loop when you go to the bass or lead tracks the 3 notes of the triad being played by the chord track will be highlited and will change along with the chord progression. This allows you to try and follow along if you need some help as to where to slide to. The layout for these instruments is a grid of squares. Horizontally each square is the next step in a major scale, vertically is seperated by thirds so chord tones are never far away but you can slide through a bunch of passing tones if you want too. (screen shots to come)
Finally there are two audio tracks. These were probably the easiest to add but I found the most fun. Recording audio by itself is cool and all but where it got really fun was the rhythm that can be imposed on it. After recording a track you can go back and change the rhythm of how it was recorded by hitting the Dub button and then tapping out a new rhythm on the device. Currently this is all quantized to 16th notes and makes for some really cool stuttering effects.
Last but not least I got some basic networking functioning. You can up/download several different chunk sizes.
Sound - This will up/download either the notes recorded for a synth track or the audio track recorded for an audio track
Rhythm - just the rhythm articulation
Track - This up/downloads both the sound and rhythm together as a bundle
Set - This allows you to pass around all 5 tracks at a time.
The concept is that you can put pieces or all of a track together and throw it up there for the world to see, then they can use chunks of it if they like it in their own work or remix yours and add their own tracks to it. If your working on a track and need some crazy lead line, throw it up and ask the world to provide one. If you got some crazy raps in your head for the world, lay 'em down and see who can lay down the right bass line to go with it.
Here you can download the source code as is and give it a try for yourself. The networking component uses a Django server. To use the server you'll need to go into SoundShareClient.m and update the IP address to the machine running the server.
Django (server side)