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

From CCRMA Wiki
Jump to: navigation, search
(initial version copied from 2015)
 
((Part 1 of 3): Research + Preliminary Design + Something Working)
 
(14 intermediate revisions by 2 users not shown)
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.25, in-class Wednesday (be prepared to present)
* part C (demo/mini-performance)) due: 2015.10.28, in-class Wednesday
+
* part B (implementation) due: 2017.10.31 11:59:59pm, Tuesday.
 +
* part C (demo/mini-performance)) due: 2017.11.1, 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 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 Wednesday (10/25) (also upload to Canvas)'''  
 
* 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!'''
 
+
** can start from [http://ccrma.stanford.edu/courses/256a-fall-2017/code/chunity_boilerplate.zip chunity boilerplate]
 +
** can look at [http://ccrma.stanford.edu/courses/256a-fall-2017/code/chunity_boilerplate_2.zip chunity boilerplate 2] for an example of:
 +
*** driving the timing of a repeating sound event from chuck
 +
*** having the time between sound events be variable and controlled from unity
 +
*** driving the animation corresponding to it from a value in chuck, NOT a value in unity
 +
*** (which is valuable because chuck's timing is tighter than unity's)
 +
** (EXPERIMENTAL, BEWARE OF BUGS) can use [http://ccrma.stanford.edu/courses/256a-fall-2017/code/ExperimentalChunityAssets.zip experimental chunity assets] if you want to use Set/Get external strings and register Unity callbacks to be called whenever external events are broadcast
  
 
===(Part 2 of 3): Implementation ===
 
===(Part 2 of 3): Implementation ===
* '''due 2015.10.27 11:59:59pm, Tuesday'''
+
* '''due 2017.10.31 11:59:59pm, Tuesday'''
 
* 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)
+
*** see [https://ccrma.stanford.edu/~lja/chunity/ chunity tutorials] (skip the "setup" step)
 +
*** may wish to refer to [https://docs.unity3d.com/Manual/ExecutionOrder.html Unity Execution Order]  
 +
*** may wish to refer to [https://docs.unity3d.com/Manual/CollidersOverview.html Unity Colliders Overview] for which colliders interact with which colliders  and how
 +
*** may wish to refer to [https://docs.unity3d.com/ScriptReference/Object.Instantiate.html Unity Object.Instantiate] for programmatically instantiating a prefab
 
* 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 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!
** downloading the code
+
** the code for download
** (for part 3: stuff from part 3 below)
+
** (your musical statement: stuff from part 3 below)
 
+
  
 
===(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 Wednesday (11/1)'''
 
* 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)!
+
* make a VIDEO of you performing it!
* 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 87:
  
 
=== Deliverables ===
 
=== Deliverables ===
 +
An HTML website containing:
  
'''turn in all files by creating a new CCRMA webpage: http://ccrma.stanford.edu/~YOURID/256a/hw3/'''
+
* 0) source code to the project (entire zipped Unity project folder)
 
+
* 0) source code to the project (*.h, *.cpp, *.c makefile, etc.)
+
 
* 1) screenshots of your step sequencer in action
 
* 1) screenshots of your step sequencer in action
 
* 2) design sketches (scan them in if necessary)
 
* 2) design sketches (scan them in if necessary)
 
* 3) your musical statement!
 
* 3) your musical statement!
* 4) instructions on building the project (for example, anyone in the class should be able to download
+
* 4) instructions on building the project (for example, anyone in the class should be able to download)
* 5) instructions in using your step sequencer
+
* 5) instructions on using your step sequencer
 +
* 6) readme section describing:
 +
** any comments you want to share (difficulties and what you enjoyed) on using ChUnity
 +
** any comments you want to share (difficulties and what you enjoyed) on using Unity
 +
** any comments you want to share (difficulties and what you enjoyed) on using ChucK in general
 +
 
 +
submit the HTML website and all necessary files (code, images, videos, etc) to canvas!
  
submit to coursework!
+
if you have a CCRMA account, additionally turn in all files by creating a new CCRMA webpage: http://ccrma.stanford.edu/~YOURID/256a/hw3/'''

Latest revision as of 11:53, 30 October 2017

Homework #3: AudioVisual Music Sequencer

Sequencer-thing.jpg

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.25, in-class Wednesday (be prepared to present)
  • part B (implementation) due: 2017.10.31 11:59:59pm, Tuesday.
  • part C (demo/mini-performance)) due: 2017.11.1, 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 software, driven by some type of step sequencer!


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

  • due in-class Wednesday (10/25) (also upload to Canvas)
  • 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!
    • can start from chunity boilerplate
    • can look at chunity boilerplate 2 for an example of:
      • driving the timing of a repeating sound event from chuck
      • having the time between sound events be variable and controlled from unity
      • driving the animation corresponding to it from a value in chuck, NOT a value in unity
      • (which is valuable because chuck's timing is tighter than unity's)
    • (EXPERIMENTAL, BEWARE OF BUGS) can use experimental chunity assets if you want to use Set/Get external strings and register Unity callbacks to be called whenever external events are broadcast

(Part 2 of 3): Implementation

  • due 2017.10.31 11:59:59pm, Tuesday
  • 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:
  • 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 initial design sketches + research, motivate and articulate how you made your design decisions
    • system design: how is your software architected? recommend a class diagram!
    • the code for download
    • (your musical statement: stuff from part 3 below)

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

  • due: in-class Wednesday (11/1)
  • using your sequencer, create a short musical statement;
  • make a VIDEO of you performing it!
  • 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

An HTML website containing:

  • 0) source code to the project (entire zipped Unity project folder)
  • 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 on using your step sequencer
  • 6) readme section describing:
    • any comments you want to share (difficulties and what you enjoyed) on using ChUnity
    • any comments you want to share (difficulties and what you enjoyed) on using Unity
    • any comments you want to share (difficulties and what you enjoyed) on using ChucK in general

submit the HTML website and all necessary files (code, images, videos, etc) 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/