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

From CCRMA Wiki
Jump to: navigation, search
(Specification (part 0 of 3): Reading)
(Specification (part 1 of 3): Naming + Compilation)
Line 15: Line 15:
 
=== Specification (part 1 of 3): Naming + Compilation ===
 
=== Specification (part 1 of 3): Naming + Compilation ===
 
* choose a name for your program
 
* choose a name for your program
* get a framework compiling on your system (keep in mind the final deliverable must be compilable/runnable on the CCRMA machines)
+
* get a framework compiling on your system; might wish to start from the [http://ccrma.stanford.edu/courses/256a-fall-2014/code/hw2/VisualSine VisualSine] example from lecture (time domain waveform rendering)
* might wish to start from the [http://ccrma.stanford.edu/courses/256a-fall-2014/code/hw2/VisualSine VisualSine] example from lecture (time domain waveform rendering)
+
 
* use the chuck_fft.* files [http://ccrma.stanford.edu/courses/256a-fall-2014/code/hw2/FFT found here] '''NOTE: this library ONLY works with single-precision floating point numbers (e.g., float)'''
 
* use the chuck_fft.* files [http://ccrma.stanford.edu/courses/256a-fall-2014/code/hw2/FFT found here] '''NOTE: this library ONLY works with single-precision floating point numbers (e.g., float)'''
 
  
 
=== Specification (part 2 of 3): Visualizing the spectrum ===
 
=== Specification (part 2 of 3): Visualizing the spectrum ===

Revision as of 11:39, 2 October 2017

Homework #2: Sound Peeking

Due date: Sunday 2017.10.15 11:59:59pm.


Waves-bw.jpg

In this assignment, you are to visualize sound in real-time, using OpenGL for the graphics programming, and integrated ChucK as a sound source. Your program will visualize: 1) live microphone input and 2) a designed sound narrative written in ChucK!

Specification (part 0 of 3): Reading

Specification (part 1 of 3): Naming + Compilation

  • choose a name for your program
  • get a framework compiling on your system; might wish to start from the VisualSine example from lecture (time domain waveform rendering)
  • use the chuck_fft.* files found here NOTE: this library ONLY works with single-precision floating point numbers (e.g., float)

Specification (part 2 of 3): Visualizing the spectrum

  • implement short time fourier transform, and visualize the spectrum over time
  • considerations:
    • windowing (rectangular, hann, hamming)
    • window size
    • FFT size
    • hop size (for now, hop size can equal window size)
  • implement either a waterfall plot (like sndpeek) or a real-time scrolling spectrogram
  • write a simple ChucK program to test the microphone input!


Specification (part 3 of 3): An Audio-Visual Narrative

  • create a ChucK program to run inside your visualizer
    • use a combination of microphone and sound synthesis
    • think about different "sections" or "movements", and how to transition between them
    • (optional): can use keyboard input
  • aesthetic goal:
    • polish not important!
    • technical fanciness not important!
    • make the viewer/listener feel something: important!!


Note

  • have fun with it!!!
  • PRINT OUT USAGE/KEYS TO CONTROLLING YOUR VISUALIZATION ON THE CONSOLE EVERY TIME YOUR VISUALIZER STARTS! (see sndpeek)
  • 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

Deliverables

turn in all files via coursework, with concise online documentation + readme

  • 0) source code to the project (*.h, *.cpp, *.c makefile, etc.)
  • 1) screenshots of your visualizer!
  • 2) online page for your project (should be viewable at http://ccrma.stanford.edu/~YOURID/256a/hw2/). It should include:
    • links to your files of various kinds
    • instructions on building the project (for example, anyone in the class should be able to download
    • a short README text section that:
      • conveys your ideas/comments in constructing each program
      • describes any difficulties you encountered in the process
      • lists any collaborators
  • 3) upload to coursework, under a new folder hw2