Jump to content

256a-fall-2017/hw3: Difference between revisions

From CCRMA Wiki
Lja (talk | contribs)
initial version copied from 2015
 
Lja (talk | contribs)
Line 5: Line 5:
'''NOTE from Ge: this image is here mostly for its colors, PLEASE DON'T MAKE IT LOOK LIKE THIS (NECESSARILY)!'''
'''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 + something working) due: 2015.10.19, in-class Monday (be prepared to present)
timeline:
* part B (implementation) due: 2015.10.27 11:59:59pm, Tuesday.
* part A (research + on-paper design + something working) due: 2017.10.23, in-class Monday (be prepared to present)
* part C (demo/mini-performance)) due: 2015.10.28, in-class Wednesday
* part B (implementation) due: 2017.10.29 11:59:59pm, Sunday.
* part C (demo/mini-performance)) due: 2017.10.30, in-class Monday


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 software, driven by some type of step sequencer!
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 software, driven by some type of step sequencer!
Line 13: Line 14:


=== (Part 1 of 3): Research + Preliminary Design + Something Working ===
=== (Part 1 of 3): Research + Preliminary Design + Something Working ===
* '''due in-class Monday (10/19)'''
* '''due in-class Monday (10/23)'''
* do research on music sequencers!
* do research on music sequencers!
* compile a list of useful references on various types of step sequencers / designs (articles, papers, images, etc.)
* compile a list of useful references on various types of step sequencers / designs (articles, papers, images, etc.)
Line 22: Line 23:
** how many parallel tracks / layers / or different types of sound?  (e.g., track 1 synth, track 2 drum etc)
** 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 input the sequence (in real-time)?
** how does it sound?  will it use synthesis?  load audio samples? soundfonts?  MIDI?
** how does it sound?  will it use synthesis?  load audio samples?   MIDI?
** can you save/load sequences?  what file format?  should we have a common Music256a/476a format?!
** can you save/load sequences?  what file format?  should we have a common Music256a/476a format?!
** how to control/depict tempo?
** how to control/depict tempo?
* sketch as much as detail as possible, even if you don't end implementing them!
* sketch as much as detail as possible, even if you don't end implementing them!
* be ready to handy in design on paper and be ready to present on Monday!  (scans of these design sketches can go onto your website for this project!)
* hand in '''scans of your paper designs''' and be ready to present on Monday!  (scans of these design sketches can go onto your website for this project!)
* have something working in software, towards your core idea/aesthetics!
* '''have something working in software, towards your core idea/aesthetics!'''




===(Part 2 of 3): Implementation ===
===(Part 2 of 3): Implementation ===
* '''due 2015.10.27 11:59:59pm, Tuesday'''
* '''due 2017.10.29 11:59:59pm, Sunday'''
* 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!
* 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
* implement a working prototype of your step sequencer
* welcome (but don't have) to use:
* should use:
** [http://ccrma.stanford.edu/~ge/software/mcd-api/ MCD-API]
** unity
** [http://www.mega-nerd.com/libsndfile/ libsndfile] for audio file loading (will need to install library)
** chunity
** [http://ccrma.stanford.edu/software/stk/ STK] (synthesis toolkit)
* potential things to sequence:
* potential things to sequence:
** pitch
** pitch
** dynamics
** dynamics
** different timbre's / instruments
** different timbres / instruments
** envelopes
** envelopes
* '''requirements / high-level functional aesthetic goals'''
** must be graphical
** must be interactive
** must be musical
** timing should be tight (driven from audio/chuck, not from graphics callback)
** should be flexible in usability
** should support some narrative complexity
** should feel satisfying to use
* "hints"
* "hints"
** think of user/interaction design **and** software/system design
** think of user/interaction design **and** software/system design
** create an audio engine, as well as a graphics engine; how do they interact?
** create an audio engine, as well as a graphics engine; how do they interact?
** having a "grid" is optional!
* create a webpage for your audiovisual sequencer, which must contain:
* create a webpage for your audiovisual sequencer, which must contain:
** one or more screenshot(s)
** one or more screenshot(s)
** your musical statement (see below)
** your initial design sketches + research, motivate and articulate how you made your design decisions
** 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!
** system design: how is your software architected?  recommend a class diagram!
Line 55: Line 65:


===(Part 3 of 3): Musical Statement + In-Class Presentation===
===(Part 3 of 3): Musical Statement + In-Class Presentation===
* '''due: 2015.10.28, in-class Wednesday'''
* '''due: in-class Monday (10/30)'''
* 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!
* do a '''live''' presentation of your step sequencer in class!




=== Note ===
=== Note ===
* as always, have fun with it!!!  make it P.S.!!!  make it SATISFYING!!!
* as always, have fun with it!!!  P.S.!!!  make it SATISFYING!!!
* comment your code!
* comment your code!
* choose your own coding conventions - but '''be consistent'''
* choose your own coding conventions - but '''be consistent'''
Line 69: Line 79:


=== Deliverables ===
=== 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.)
* 0) source code to the project (*.h, *.cpp, *.c makefile, etc.)
Line 79: Line 87:
* 5) instructions in using your step sequencer
* 5) instructions in using your step sequencer


submit to coursework!
submit to canvas!
 
if you have a CCRMA account, additionally turn in all files by creating a new CCRMA webpage: http://ccrma.stanford.edu/~YOURID/256a/hw3/'''

Revision as of 23:03, 17 October 2017

Homework #3: AudioVisual Music Sequencer

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

timeline:

  • part A (research + on-paper design + something working) due: 2017.10.23, in-class Monday (be prepared to present)
  • part B (implementation) due: 2017.10.29 11:59:59pm, Sunday.
  • part C (demo/mini-performance)) due: 2017.10.30, in-class Monday

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 software, driven by some type of step sequencer!


(Part 1 of 3): Research + Preliminary Design + Something Working

  • due in-class Monday (10/23)
  • 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?!? a game? a galaxy??
    • 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? 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 implementing them!
  • hand in scans of your paper designs and be ready to present on Monday! (scans of these design sketches can go onto your website for this project!)
  • have something working in software, towards your core idea/aesthetics!


(Part 2 of 3): Implementation

  • due 2017.10.29 11:59:59pm, Sunday
  • 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
  • should use:
    • unity
    • chunity
  • potential things to sequence:
    • pitch
    • dynamics
    • different timbres / instruments
    • envelopes
  • requirements / high-level functional aesthetic goals
    • must be graphical
    • must be interactive
    • must be musical
    • timing should be tight (driven from audio/chuck, not from graphics callback)
    • should be flexible in usability
    • should support some narrative complexity
    • should feel satisfying to use
  • "hints"
    • think of user/interaction design **and** software/system design
    • create an audio engine, as well as a graphics engine; how do they interact?
    • having a "grid" is optional!
  • create a webpage for your audiovisual sequencer, which must contain:
    • one or more screenshot(s)
    • your musical statement (see below)
    • 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: in-class Monday (10/30)
  • using your sequencer, create a short musical statement;
  • either make a video of you performing it, and/or a short recording (mp3)!
  • do a live presentation of your step sequencer in class!


Note

  • as always, have fun with it!!! P.S.!!! make it SATISFYING!!!
  • 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

  • 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

submit to canvas!

if you have a CCRMA account, additionally turn in all files by creating a new CCRMA webpage: http://ccrma.stanford.edu/~YOURID/256a/hw3/