Difference between revisions of "256a-fall-2014/hw3"

From CCRMA Wiki
Jump to: navigation, search
 
(17 intermediate revisions by the same user not shown)
Line 1: Line 1:
= Homework #3: AudioVisual Musical Instrument =
+
= Homework #3: AudioVisual Music Sequencer Thing =
  
* part A (research + on-paper design) due: 2014.10.20, in-class Monday (be prepared to present)
+
<div style="text-align: left;">[[Image:Sequencer-thing.jpg]]</div>
* 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!
+
'''NOTE from Ge: this image is here mostly for its colors, PLEASE DON'T MAKE IT LOOK LIKE THIS (NECESSARILY)!'''
  
=== (Part 1 of 3): Research + Preliminary Design + Specs ===
 
*
 
  
 +
* part A (research + on-paper design) due: 2014.10.20, in-class Monday (be prepared to present)
 +
* part B (implementation) due: 2014.10.30 11:59:59pm, Thursday.
 +
* part C (demo/mini-performance)) due: 2014.11.03, in-class Wednesday
  
=== Specification (part 0 of 3): Naming + Compilation ===
+
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 like thing!
* 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 [http://ccrma.stanford.edu/~ge/software/mcd-api/ 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 [http://www.mega-nerd.com/libsndfile/ 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?
 
  
 +
=== (Part 1 of 3): Research + Preliminary Design + Specs ===
 +
* '''due in-class Monday (10/20)'''
 +
* do research on music sequencers!
 +
* compile a list of useful references on various types of step sequencers / designs (articles, papers, images, etc.)
 +
* sketch your own preliminary design of a real-time audio-visual step sequencer!
 +
* what features to include?
 +
** what does it look like?  linear?  circular?  spherical?  mobius?!?
 +
** sequencing of pitch? dynamics (loundness)?  envelopes (attack/decay/sustain/release)?
 +
** how many parallel tracks / layers / or different types of sound?  (e.g., track 1 synth, track 2 drum etc)
 +
** how input the sequence (in real-time)?
 +
** how does it sound?  will it use synthesis?  load audio samples?  soundfonts?  MIDI?
 +
** can you save/load sequences?  what file format?  should we have a common Music256a/476a format?!
 +
** how to control/depict tempo?
 +
* sketch as much as detail as possible, even if you don't end up implementing them!
 +
* be ready to hand in design on paper (or send me, imdone256@gmail.com, digital scans if you have them) and be ready to present on Monday!  (scans of these design sketches can go onto your website for this project!)
  
=== 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!
 
  
 +
===(Part 2 of 3): Implementation ===
 +
* '''due 2014.10.30 11:59:59pm, Thursday'''
 +
* decide on a design + set of features for an real-time audio-visual step sequencer; the design decisions should account for the questions raised in part 1 above!
 +
* implement a working prototype of your step sequencer
 +
* welcome (but don't have) to use:
 +
** [http://ccrma.stanford.edu/~ge/software/mcd-api/ MCD-API]
 +
** [http://www.mega-nerd.com/libsndfile/ libsndfile] for audio file loading (will need to install library)
 +
** [http://ccrma.stanford.edu/software/stk/ STK] (synthesis toolkit)
 +
* potential things to sequence:
 +
** pitch
 +
** dynamics
 +
** different timbre's / instruments
 +
** envelopes
 +
* "hints"
 +
** think of user/interaction design **and** software/system design
 +
** create an audio engine, as well as a graphics engine; how do they interact?
 +
* create a webpage for your audiovisual sequencer, which must contain:
 +
** one or more screenshot(s)
 +
** your initial design sketches + research, motivate and articulate how you made your design decisions
 +
** system design: how is your software architected?  recommend a class diagram!
 +
** downloading the code
 +
** (for part 3: stuff from part 3 below)
  
=== Specification (part 3 of 3): Musical Statement! ===
+
 
 +
===(Part 3 of 3): Musical Statement + In-Class Presentation===
 +
* '''due: 2014.11.03, in-class Monday'''
 
* using your sequencer, create a short musical statement;
 
* using your sequencer, create a short musical statement;
 
* either make a video of you performing it, and/or a short recording (mp3)!
 
* either make a video of you performing it, and/or a short recording (mp3)!
 
* present your step sequencer and music instrument in class!
 
* present your step sequencer and music instrument in class!
 +
  
 
=== Note ===
 
=== Note ===
Line 49: Line 66:
 
* choose your own coding conventions - but '''be consistent'''
 
* 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)
 
* 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 ===
 
=== Deliverables ===

Latest revision as of 17:35, 14 October 2015

Homework #3: AudioVisual Music Sequencer Thing

Sequencer-thing.jpg

NOTE from Ge: this image is here mostly for its colors, PLEASE DON'T MAKE IT LOOK LIKE THIS (NECESSARILY)!


  • part A (research + on-paper design) due: 2014.10.20, in-class Monday (be prepared to present)
  • part B (implementation) due: 2014.10.30 11:59:59pm, Thursday.
  • part C (demo/mini-performance)) due: 2014.11.03, 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 like thing!


(Part 1 of 3): Research + Preliminary Design + Specs

  • due in-class Monday (10/20)
  • do research on music sequencers!
  • compile a list of useful references on various types of step sequencers / designs (articles, papers, images, etc.)
  • sketch your own preliminary design of a real-time audio-visual step sequencer!
  • what features to include?
    • what does it look like? linear? circular? spherical? mobius?!?
    • sequencing of pitch? dynamics (loundness)? envelopes (attack/decay/sustain/release)?
    • how many parallel tracks / layers / or different types of sound? (e.g., track 1 synth, track 2 drum etc)
    • how input the sequence (in real-time)?
    • how does it sound? will it use synthesis? load audio samples? soundfonts? MIDI?
    • can you save/load sequences? what file format? should we have a common Music256a/476a format?!
    • how to control/depict tempo?
  • sketch as much as detail as possible, even if you don't end up implementing them!
  • be ready to hand in design on paper (or send me, imdone256@gmail.com, digital scans if you have them) and be ready to present on Monday! (scans of these design sketches can go onto your website for this project!)


(Part 2 of 3): Implementation

  • due 2014.10.30 11:59:59pm, Thursday
  • decide on a design + set of features for an real-time audio-visual step sequencer; the design decisions should account for the questions raised in part 1 above!
  • implement a working prototype of your step sequencer
  • welcome (but don't have) to use:
  • potential things to sequence:
    • pitch
    • dynamics
    • different timbre's / instruments
    • envelopes
  • "hints"
    • think of user/interaction design **and** software/system design
    • create an audio engine, as well as a graphics engine; how do they interact?
  • create a webpage for your audiovisual sequencer, which must contain:
    • one or more screenshot(s)
    • your initial design sketches + research, motivate and articulate how you made your design decisions
    • system design: how is your software architected? recommend a class diagram!
    • downloading the code
    • (for part 3: stuff from part 3 below)


(Part 3 of 3): Musical Statement + In-Class Presentation

  • due: 2014.11.03, in-class Monday
  • 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!