Difference between revisions of "PLOrk spring2011"

From CSWiki
Jump to: navigation, search
(Tentative precept schedule)
(Tentative precept schedule)
 
(38 intermediate revisions by the same user not shown)
Line 29: Line 29:
 
* April 23rd: dress rehearsal and performance in Taplin Auditorium
 
* April 23rd: dress rehearsal and performance in Taplin Auditorium
 
* April 29th: dress rehearsal and performance at 92nd St. Y Tribeca, NYC
 
* April 29th: dress rehearsal and performance at 92nd St. Y Tribeca, NYC
* Sometime Mid-May: final project presentations/open house
+
* Sometime Mid-May, probably during finals period: final project presentations (public event)
  
 
== Resources ==
 
== Resources ==
Line 38: Line 38:
 
== COS/MUS 314 Info ==
 
== COS/MUS 314 Info ==
 
=== office hours ===
 
=== office hours ===
*Dan I. will be in Princeton on Wednesday and Thursdays. Office hours will be before/after class by request/appointment.
+
*Dan I. (diglesia AT princeton )will be in Princeton on Wednesday and Thursdays. Office hours will be before/after class by request/appointment.
*Jeff:
+
*Jeff: (josnyder AT princeton )
*Michael:
+
*Michael: (mearly AT princeton
  
 
=== Tentative precept schedule ===
 
=== Tentative precept schedule ===
 
(Much of this syllabus & assignments is inspired by Rebecca Fiebrink's 2010 syllabus)
 
(Much of this syllabus & assignments is inspired by Rebecca Fiebrink's 2010 syllabus)
  
* 2/2: Becoming PLOrk-worthy, Intro to the Universe and more
+
* 2/2: Becoming PLOrk-worthy, Intro to the ChucK Universe  
 
** Introductions, Syllabus, Schedule, email list, wiki, setting up PLOrk rep
 
** Introductions, Syllabus, Schedule, email list, wiki, setting up PLOrk rep
 
** Brief history of electronic music / tech / PLOrk
 
** Brief history of electronic music / tech / PLOrk
Line 59: Line 59:
 
*** the Std.mtof special function
 
*** the Std.mtof special function
 
*** controlling time in ChucK
 
*** controlling time in ChucK
** See all [ Example code] from today
+
** Example code from today
 +
***[http://music.columbia.edu/~daniglesia/plork2011/class1code/HelloOsc.ck HelloOsc.ck] (monophonic)
 +
***[http://music.columbia.edu/~daniglesia/plork2011/class1code/HelloOsc_sporked.ck HelloOsc_sporked.ck] (sporked)
 
** Assignment 1 assigned, due 2/8/10
 
** Assignment 1 assigned, due 2/8/10
 +
** Rehearsal: [http://music.columbia.edu/~daniglesia/plork2011/coag.ck coag.ck]
 
* 2/9: Further ChucK and synthesis fundamentals
 
* 2/9: Further ChucK and synthesis fundamentals
 
** Review concepts from 2/2
 
** Review concepts from 2/2
** Intro to sound synthesis techniques
+
** Intro to historical sound synthesis techniques
** intro to Synthesis Toolkit (STK) UGens
+
** Implementation/visualization in other softwares/hardware
 +
** making it dynamic with LFOs
 
** Boolean logic
 
** Boolean logic
 
*** ==, >=, <=, <, >, &&, ||, !=, ! operators
 
*** ==, >=, <=, <, >, &&, ||, !=, ! operators
 
**** see [http://chuck.cs.princeton.edu/doc/language/oper.html this page]
 
**** see [http://chuck.cs.princeton.edu/doc/language/oper.html this page]
*** true/false representations as 1/0
 
 
** if and else statements
 
** if and else statements
** while loops
+
** while loops, a little more with time
** Misc. ChucK: ++ and --, the Std.rand() functions for random number generation, coding style conventions
+
** See [Example code from today:
** See [ Example code] from today
+
***[http://music.columbia.edu/~daniglesia/plork2011/class2code/HelloOsc_drums.ck HelloOsc_drums.ck]
* 2/16: Intermediate ChucK
+
***[http://music.columbia.edu/~daniglesia/plork2011/class2code/MiniSynth1.ck MiniSynth1.ck]
** Arrays
+
***[http://music.columbia.edu/~daniglesia/plork2011/class2code/MiniSynth2.ck MiniSynth2.ck] )
*** the @=> assignment operator for arrays and objects
+
* 2/16 Objects and Events - real time control
** For-loops with arrays
+
** object oriented programming, functions/variables/subclassing
** Intro to functions (void type)
+
** events generated by devices: HID (mouse, keyboard, etc)
** Concurrency using spork~
+
** MIDI events
** More on harmonic series: vibrating strings; perception of pitch and timbre
+
** tying together in ChucK
** [http://www.cs.princeton.edu/~fiebrink/314/2010/week3/ Example code] from today
+
** Example Code:
** Handouts
+
*** [http://music.columbia.edu/~daniglesia/plork2011/class3code/class3_code1.ck class3_code1.ck ] (mouse)
*** [http://www.cs.princeton.edu/~fiebrink/314/functions101.pdf Handout on functions and concurrency]
+
*** [http://music.columbia.edu/~daniglesia/plork2011/class3code/class3_code2tether.ck class3_code2tether.ck ]  
*** [http://www.cs.princeton.edu/~fiebrink/314/2009/chuck_arrays.pdf Handout on arrays]
+
*** [http://music.columbia.edu/~daniglesia/plork2011/class3code/class3_midi.ck class3_midi.ck ] (midi)
*** [http://www.cs.princeton.edu/~fiebrink/314/2009/chuck_loops.pdf Handout on for- and while-loops]
+
* 2/23 Polyphony, real-time audio input, time-based effects
* 2/23: More object-oriented programming and concurrency
+
** build polyphonic synth, do the bookkeeping
** SndBuf objects
+
** microphone input
** Writing your own functions
+
** time-based delay effects
** Understanding and using user-defined classes
+
*** delay, with feedback (echo)
** More on sporking
+
*** variable delay time (record scratch speed effect, flanger, chorus)
*** vibrato
+
*** tiny delay time (comb filter)
** FM synthesis
+
** pitch shifting, equal temperament function
** More on harmonics and perception
+
** example code:
** Example code from today
+
*** [http://music.columbia.edu/~daniglesia/plork2011/class4code/class4poly.ck polyphonic synth!]
** See also
+
*** [http://music.columbia.edu/~daniglesia/plork2011/class4code/class4delay.ck delay] (with LFO on delay amount)
*** On-the-fly coding examples: [http://chuck.cs.princeton.edu/doc/examples/ http://chuck.cs.princeton.edu/doc/examples/] (look for "otf")
+
*** [http://music.columbia.edu/~daniglesia/plork2011/class4code/class4combfilter.ck comb filter]
*** FM synthesis example: [http://chuck.cs.princeton.edu/doc/examples/basic/fm.ck http://chuck.cs.princeton.edu/doc/examples/basic/fm.ck]
+
*** [http://music.columbia.edu/~daniglesia/plork2011/class4code/class4pitchshift.ck polyphonic pitch shifter!]
* 3/2: Events and interaction
+
*3/2 Lots of fun
** NIMEs (new interfaces for musical expression)
+
**panning
** HID devices and [http://smelt.cs.princeton.edu SMELT]
+
**Signals feeding/controlling signals
*** Chuck's event model
+
**AM/FM synthesis
** Intro to supervised learning
+
**Shred references
*** Intro to the algorithms
+
**Live sampling & playback with LiSa
*** Supervised learning & the mapping problem
+
**class code
*** The wekinator learning model
+
***[http://music.columbia.edu/~daniglesia/plork2011/class5code/class5_pan.ck pan]
*** Using the wekinator with feature extractors & synthesizers
+
***[http://music.columbia.edu/~daniglesia/plork2011/class5code/class5_sync.ck sync]
** Using the [http://wekinator.cs.princeton.edu/ Wekinator] with HID devices and synthesis classes
+
***[http://music.columbia.edu/~daniglesia/plork2011/class5code/class5_FM.ck FM]
* 3/9
+
***[http://music.columbia.edu/~daniglesia/plork2011/class5code/class5_lisatest.ck basic lisa]
** review of lots of stuff
+
***[http://music.columbia.edu/~daniglesia/plork2011/class5code/class5_keyshred.ck shred references]
 +
* 3/9 MIDTERM PERFORMANCES!
 
* 3/16: SPRING BREAK!
 
* 3/16: SPRING BREAK!
* 3/23: MIDTERM PERFORMANCES!
+
*3/23 object orientation and more
* 3/30: Frequency domain, plus lots of other useful things
+
**operations on Time and Duration, modding time to sync timing across shreds
** Time/frequency representation of sound
+
**gradual volume ramp over time with concurrent shred, user reference to shred to exit existing ramp
*** FFT and STFT
+
**creating your own objects
*** See FFT handout [http://www.cs.princeton.edu/~fiebrink/314/2010/week8/FFT_handout_2010.pdf here]
+
***instances, inheritance, static variables/methods, fake "constructor" code
*** Using audacity and SPEAR for spectral analysis
+
***using pointers to hold a reference to an objects
*** Analysis-resynthesis practice
+
***randomly choose an stk instrument with "StkInstrument superclass = subclasses can be referred to with a pointer from a superclass
** Advanced coding practices / ChucK tips
+
***reconnect object circuit in instance variable, with un-chuck and reference to new UGen to chuck to
*** blackhole object
+
**create your own "fake" UGen by running a loop every sample and feeding a Step object
*** scope, loops, and (no) garbage collection
+
***digital clipping distortion
** Chuck's unit analyzer infrastructure
+
***quantization distortion (bringing down sampling rate and/or bit depth)
*** See [http://chuck.cs.princeton.edu/uana/ Chuck UAna reference]
+
**class code
*** Perry's FFT/IFFT examples: [http://www.cs.princeton.edu/~prc/314/FFT/ http://www.cs.princeton.edu/~prc/314/FFT/] from 2009
+
***[http://music.columbia.edu/~daniglesia/plork2011/class6code/class6_gradual.ck fadeToVol ramp]
* 4/6 Machine listening and audio analysis
+
***[http://music.columbia.edu/~daniglesia/plork2011/class6code/class6_objects.ck MyMelodyMaker object (Just ModalBar)]
** Audio analysis techniques
+
***[http://music.columbia.edu/~daniglesia/plork2011/class6code/class6_objects2.ck MyMelodyMaker part 2 with variable STK instrument]
*** FFT continued
+
***[http://music.columbia.edu/~daniglesia/plork2011/class6code/class6_customgen.ck "fake" clipping distortion UGen via sample loop]
*** Features, timbre, and perception
+
***[http://music.columbia.edu/~daniglesia/plork2011/class6code/degrade.ck "fake" UGen: sample rate and bit depth degradation]
*** UAnae and other audio feature extraction tools (see [http://chuck.cs.princeton.edu/doc/program/uana.html http://chuck.cs.princeton.edu/doc/program/uana.html])
+
*3/29 ANALYSIS
** Supervised learning algorithms
+
**classical parameters: pitch, volume, duration, timbre
** [http://www.cs.princeton.edu/~fiebrink/314/2010/week9/ Code examples from today (cross-synthesis)]
+
**psychoacoustics and recording technology shows us that all of them are more complex than a simple one-dimensional measurement
*** Also see Perry's FFT examples from 2009 at [http://www.cs.princeton.edu/~prc/314/FFT/ http://www.cs.princeton.edu/~prc/314/FFT/] (includes SinOsc pitch tracker)
+
**psychoacoustics of virtual pitch, loudness curves, timbral envelope
* 4/14: More interactive coding techniques
+
**time domain and frequency domain approaches to analyzing signals
** MIDI, Events, LiSa introduction, coding strategies
+
**time domain approach to volume (and by extension, duration) tracking with keeping average of last N samples
** [http://music.princeton.edu/~dan/plork/poly_midi.zip coding examples from class]
+
**FFTs are fun with lots of math: N samples turns to N/2 pairs of cartesian coordinates describing a phasor rotating in a complex plane
** also, [http://wiki.cs.princeton.edu/index.php/LiSa_examples LiSa examples]
+
**UAna objects for analysis in Chuck: FFT, Centroid, SpectralRMS, etc.
** and [http://music.princeton.edu/~dan/LiSa/LiSa_tutorial.html LiSa tutorial]
+
**upchuck(), UAnaBlob, blob.fval(i)
** and [http://chuck.cs.princeton.edu/doc/program/ugen_full.html#LiSa LiSa basic documentation]
+
**class code
* 4/21
+
***[http://music.columbia.edu/~daniglesia/plork2011/class7code/class7_volumetracking.ck time domain volume tracking]
** More on filters
+
***[http://music.columbia.edu/~daniglesia/plork2011/class7code/class7_volumetrackingduration.ck time domain volume tracking, with threshold for duration]
** OSC
+
***[http://music.columbia.edu/~daniglesia/plork2011/class7code/class7_fft.ck FFT bin values]
*** See basic OSC examples: [http://chuck.cs.princeton.edu/doc/examples/osc/s.ck sender] and [http://chuck.cs.princeton.edu/doc/examples/osc/r.ck receiver]
+
***[http://music.columbia.edu/~daniglesia/plork2011/class7code/class7_fftcentroid.ck FFT=^Centroid]
*** Rebecca's [http://www.cs.princeton.edu/~fiebrink/314/2009/osc_handout.pdf OSC handout]
+
*4/6 Networking
** Examples from class: [http://www.cs.princeton.edu/~fiebrink/314/2010/week11/ here]
+
**MIDI, OSC
* 4/28: What's left?
+
**custom addressing and values
 +
**network routing, multicasting vs direct connect, ports
 +
**code
 +
***[http://music.columbia.edu/~daniglesia/plork2011/class8code/class8notes_multiclient.ck multicasting client] (use with either chuck multicast server OR max multicast UI server)
 +
***[http://music.columbia.edu/~daniglesia/plork2011/class8code/class8notes_directclient.ck direct connect client] (use with chuck direct server AND max direct UI )
 +
***[http://music.columbia.edu/~daniglesia/plork2011/class8code/class8notes_multiserver.ck multicasting server]
 +
***[http://music.columbia.edu/~daniglesia/plork2011/class8code/class8notes_directserver.ck direct client]  
 +
***[http://music.columbia.edu/~daniglesia/plork2011/class8code/class8notes_paramcontrol_multi.maxpat max multicast UI server]
 +
***[http://music.columbia.edu/~daniglesia/plork2011/class8code/class8notes_paramcontrol_direct.maxpat max direct UI]
 +
*4/13 User Interfaces and Video with Max
 +
**code(if you click on them, they will show up as text in browser...you can actually copy and paste it into a max patch, or download the .maxpat file and open in max)
 +
***[http://music.columbia.edu/~daniglesia/plork2011/class9code/class9_max1.maxpat user interface doodads]  
 +
***[http://music.columbia.edu/~daniglesia/plork2011/class9code/class9_playback.maxpat basic video playback, plus fun effects]  
 +
***[http://music.columbia.edu/~daniglesia/plork2011/class9code/class9_maxvidsynth.maxpat video synth: epilepsy maker]  
 +
***[http://music.columbia.edu/~daniglesia/plork2011/class9code/class9_openGL.maxpat messy openGL patch, see tutorials for better intro]
 +
 
 +
=== Assignments ===
 +
Please submit Assignments in Blackboard unless the instructions say otherwise.
 +
 
 +
* Assignment 1: due 2/8/10
 +
** [http://music.columbia.edu/~daniglesia/plork2011/assig1.pdf download]
 +
** Frere Jacques skeleton is [http://music.columbia.edu/~daniglesia/plork2011/frere_skeleton1.ck here]
 +
* Assignment 2: due 2/15/10
 +
** [http://music.columbia.edu/~daniglesia/plork2011/assig2.pdf download]
 +
* Assignment 3: due 2/23/10
 +
** [http://music.columbia.edu/~daniglesia/plork2011/assig3.pdf download]
 +
* Assignment 4 - MIDTERM: due 3/8 (to be presented in class 3/9)
 +
** [http://music.columbia.edu/~daniglesia/plork2011/assig4midterm.pdf download]
 +
* Assignment 5 -  due 3/29
 +
** [http://music.columbia.edu/~daniglesia/plork2011/assig5.pdf download]
 +
* Assignment 6 -  due 4/05
 +
** [http://music.columbia.edu/~daniglesia/plork2011/assig6.pdf download]
 +
* Assignment 7 -  due 4/19
 +
** [http://music.columbia.edu/~daniglesia/plork2011/assig7.pdf download]

Latest revision as of 19:33, 16 April 2011

General Information

Welcome to COS/MUS 314 for Spring 2011. You will be assimilated into PLOrk, resistance is futile.

In addition to YOU, the following are involved in teaching these courses:

  • Daniel Iglesia, Visiting Lecturer/ Visiting Director of PLOrk
  • Jeffrey Snyder, Technical Director, Princeton Computer Music Studios, Associate Director of PLOrk
  • Michael Early, graduate student and TA, Assistant Director of PLOrk

Other Important People whose names will come up

  • Perry Cook and Dan Trueman, professors and PLOrk founders
  • Ge Wang, PLOrk founder, creator of ChucK, now leads rival Stanford LOrk
  • Rebecca Fiebrink, CS professor and PLOrk expert

Laptop Configuration

All PLOrk members must configure their laptops (Macbooks) as described here

The current version of the PLOrk Repository, broken down into subfolders that can be downloaded individually, can be found here

Schedule

Classes

Precepts WILL be held the first week of class!!

  • Precepts on Wednesdays from 7:30-9:20pm, Woolworth 102
  • Thursday rehearsal from 1:30-4:20pm, McAlpin and other rooms in Woolworth, when we break into smaller groups.

Important Dates

  • Class begins: February 2
  • Spring break: Week of March 14
  • Week of March 21st: informal midterm project presentations, location TBD
  • April 23rd: dress rehearsal and performance in Taplin Auditorium
  • April 29th: dress rehearsal and performance at 92nd St. Y Tribeca, NYC
  • Sometime Mid-May, probably during finals period: final project presentations (public event)

Resources

  • PLOrk Reader; lots and lots of reading relevant to PLOrk and this seminar in general. please add as you see fit, and ask us for the password for protected papers if you can't guess it.
  • Be sure you're on the PLOrk314-316 mailing list.
  • See the extensive list of resources at the Fall 2007 Wiki for starters.

COS/MUS 314 Info

office hours

  • Dan I. (diglesia AT princeton )will be in Princeton on Wednesday and Thursdays. Office hours will be before/after class by request/appointment.
  • Jeff: (josnyder AT princeton )
  • Michael: (mearly AT princeton

Tentative precept schedule

(Much of this syllabus & assignments is inspired by Rebecca Fiebrink's 2010 syllabus)

  • 2/2: Becoming PLOrk-worthy, Intro to the ChucK Universe
    • Introductions, Syllabus, Schedule, email list, wiki, setting up PLOrk rep
    • Brief history of electronic music / tech / PLOrk
    • Brief intro to sound: waves, frequency, consonance & dissonance, paritials, noise (more in psychoacoustics lecture)
    • Brief intro to digital audio: sampling and analog/digital conversion
    • Intro to UNIX structure, commands, scripts
    • Brief intro to miniAudicle & ChucK!
    • Coding in ChucK 101
      • See Rebecca's handout on ChucK basics
      • patches, unit generators, and the dac
      • primitive types (int, float) and numerical constants
      • calling functions of UGens
      • the Std.mtof special function
      • controlling time in ChucK
    • Example code from today
    • Assignment 1 assigned, due 2/8/10
    • Rehearsal: coag.ck
  • 2/9: Further ChucK and synthesis fundamentals
    • Review concepts from 2/2
    • Intro to historical sound synthesis techniques
    • Implementation/visualization in other softwares/hardware
    • making it dynamic with LFOs
    • Boolean logic
      • ==, >=, <=, <, >, &&, ||, !=, ! operators
    • if and else statements
    • while loops, a little more with time
    • See [Example code from today:
  • 2/16 Objects and Events - real time control
  • 2/23 Polyphony, real-time audio input, time-based effects
    • build polyphonic synth, do the bookkeeping
    • microphone input
    • time-based delay effects
      • delay, with feedback (echo)
      • variable delay time (record scratch speed effect, flanger, chorus)
      • tiny delay time (comb filter)
    • pitch shifting, equal temperament function
    • example code:
  • 3/2 Lots of fun
  • 3/9 MIDTERM PERFORMANCES!
  • 3/16: SPRING BREAK!
  • 3/23 object orientation and more
  • 3/29 ANALYSIS
    • classical parameters: pitch, volume, duration, timbre
    • psychoacoustics and recording technology shows us that all of them are more complex than a simple one-dimensional measurement
    • psychoacoustics of virtual pitch, loudness curves, timbral envelope
    • time domain and frequency domain approaches to analyzing signals
    • time domain approach to volume (and by extension, duration) tracking with keeping average of last N samples
    • FFTs are fun with lots of math: N samples turns to N/2 pairs of cartesian coordinates describing a phasor rotating in a complex plane
    • UAna objects for analysis in Chuck: FFT, Centroid, SpectralRMS, etc.
    • upchuck(), UAnaBlob, blob.fval(i)
    • class code
  • 4/6 Networking
  • 4/13 User Interfaces and Video with Max

Assignments

Please submit Assignments in Blackboard unless the instructions say otherwise.

  • Assignment 1: due 2/8/10
  • Assignment 2: due 2/15/10
  • Assignment 3: due 2/23/10
  • Assignment 4 - MIDTERM: due 3/8 (to be presented in class 3/9)
  • Assignment 5 - due 3/29
  • Assignment 6 - due 4/05
  • Assignment 7 - due 4/19