256a-fall-2014/hw3
From CCRMA Wiki
Homework #3: AudioVisual Musical Instrument
- part A (research + on-paper design) due: 2014.10.20, in-class Monday (be prepared to present)
- part B (implementation) due: 2014.10.28 11:59:59pm, Tuesday.
- part C (demo/mini-performance)) due: 2014.10.29, in-class Wednesday
Almost inevitably at some point in one's music software design journey, you'll be asked/tempted to make a step sequencer. In this assignment, we are going to get that off our chest/out of our system, and make a crazy, real-time, audio-visual step sequencer!
Specification (part 0 of 3): Naming + Compilation
- choose a name for your program
- get a framework compiling on your system (does not need to compile on CCRMA machines)
- might wish to use the provided mcd-api library to help with various things!
Specification (part 1 of 3): Design + Specification (NO CODE)
- do some research on various kinds of sequencers! (cite your findings!)
- DESIGN a step sequencer interface, paying attention (as always) to visual and interactive aesthetics!
- first, do this NOT in code, but on paper
- the step sequencer can look like anything you can imagine, as long as it:
- real-time input/playback of sequence
- support 4 or more parallel layers/instruments
- animated to clearly show sequence, the "now" location, and the activation of elements in the sequence
- makes sounds in real-time, potentially using 1) you own synthesis AND/OR 2) soundfonts via fluidsynth (see MCD-api's y-fluidsynth wrapper, will need to install fluidsynth) AND/OR 3) soundfile you load (via libsndfile) AND/OR 4) ???
- can save/load sequences to file (design your own simple file format to store)
- DESIGN consideration: how does it look?
- DESIGN consideration: will leave it up to you to design how to chose the sounds for each track
- DESIGN consideration: how to display the sequence effectively, how long of a sequence do you want to support?
- DESIGN consideration: how to control tempo? other audio effects?
Specification (part 2 of 3): Implementation! (CODE!)
- Implement a working prototype of your design (re-designing as necessary)
- real-time audio
- real-time graphics + interaction
- basic save/load functionality!
Specification (part 3 of 3): Musical Statement!
- using your sequencer, create a short musical statement;
- either make a video of you performing it, and/or a short recording (mp3)!
- present your step sequencer and music instrument in class!
Note
- as always, have fun with it!!! make it P.S.!!!
- comment your code!
- choose your own coding conventions - but be consistent
- you are welcome to work together, but you must do/turn in your own work (you'll likely get more out of it this way)
Deliverables
turn in all files by creating a new CCRMA webpage: http://ccrma.stanford.edu/~YOURID/256a/hw3/
- 0) source code to the project (*.h, *.cpp, *.c makefile, etc.)
- 1) screenshots of your step sequencer in action
- 2) design sketches (scan them in if necessary)
- 3) your musical statement!
- 4) instructions on building the project (for example, anyone in the class should be able to download
- 5) instructions in using your step sequencer
email URL to imdone256 and ge!