Music 3SI: Introduction to Audio/Multimedia App. Programming Course Overview
Week #1 - 4/7/2006 CCRMA, Department of Music Stanford University
4/7/06, Music 3SI, CCRMA, Stanford 1 2
Music 3SI Staff
• Programming • Instructor: Woon Seung Yeo (officially: course leader) • Audio / multimedia ! [email protected] • Introductory course ! http://ccrma.stanford.edu/~woony • SI: Student-Initiated course • Office hours: TBD (or by appointment) ! P/NC only, 1 or 2 units • Faculty sponsor: Prof. Jonathan Berger
4/7/06, Music 3SI, CCRMA, Stanford 4/7/06, Music 3SI, CCRMA, Stanford 3 4
Why? CCRMA/Music Courses
• From my personal experience: • 220c ! not familiar with C/C++ (I hate pointers!) • 120 / 250a: Pd extern, OSC ! want/need to develop my own audio app. ! don’t really know how/where to begin • 424: VST ! need some “jumpstart”! • 420: Stk • A “service” course for CCRMA • 220a / 320 / 421 / 422 ! homework / projects for many CCRMA courses
4/7/06, Music 3SI, CCRMA, Stanford 4/7/06, Music 3SI, CCRMA, Stanford 5 6 For Whom? Samples (1)
• Rated E for everyone (hopefully...) • Especially... ! “Hello World” C/C++ programmers #include
4/7/06, Music 3SI, CCRMA, Stanford 4/7/06, Music 3SI, CCRMA, Stanford 7 8
Samples (2) Samples (3)
#include
int main () #include
return 0; }
4/7/06, Music 3SI, CCRMA, Stanford 4/7/06, Music 3SI, CCRMA, Stanford 9 10
Samples (4) Samples (5)
#include
void increase (void* data, int size) int main() { { switch (size) // Set the global sample rate before creating class instances. { Stk::setSampleRate( 44100.0 ); case sizeof(char) : (*((char*)data))++; break; case sizeof(int) : (*((int*)data))++; break; WaveLoop input; } FileWvOut output; } input.openFile( "rawwaves/sinewave.raw", true ); int main () output.openFile( "hellosine.wav", 1, FileWrite::FILE_WAV, Stk::STK_SINT16 ); { char a = 'x'; input.setFrequency( 440.0 ); int b = 1602; increase (&a,sizeof(a)); for ( int i=0; i<40000; i++ ) increase (&b,sizeof(b)); output.tick( input.tick() ); cout << a << ", " << b << endl; return 0; return 0; } }
4/7/06, Music 3SI, CCRMA, Stanford 4/7/06, Music 3SI, CCRMA, Stanford 11 12 OS & Computer Topics
• Mac OS X / Linux • C / C++ basics • CCRMA machines • Audio / sound ! Linux boxes • Audio plug-ins ! Mac minis ! obtain CCRMA account TODAY! • GUI programming • Your own computer • Visual / multimedia • No support for Windows • Network ! can be used, though...
4/7/06, Music 3SI, CCRMA, Stanford 4/7/06, Music 3SI, CCRMA, Stanford 13 14
Week 1: Introduction
• Today! • Course overview Schedule • Demos
4/7/06, Music 3SI, CCRMA, Stanford 4/7/06, Music 3SI, CCRMA, Stanford 15 16
Week 2: Audio Prog. (1) Week 3: Audio Prog. (2)
• C/C++ review • Stk instrument / effect classes • Overview of audio APIs • Audio effect / DSP basics ! Stk (StkX) / RtAudio • Fast Fourier Transform ! PortAudio, ALSA, OpenAL, CoreAudio ! FFTW • Audio programming basics ! AltiVec • Assignment #1
4/7/06, Music 3SI, CCRMA, Stanford 4/7/06, Music 3SI, CCRMA, Stanford 17 18 Week 4: Plug-ins Week 5: GUI (1)
• Audio plug-in technologies • Guest lecturer from Apple ! VST • Cocoa API ! LADSPA, Audio Unit • GUI design: Interface Builder • VST SDK ! Stk and Cocoa • Pd (& Max/MSP) externals ! flext • Assignment #2
4/7/06, Music 3SI, CCRMA, Stanford 4/7/06, Music 3SI, CCRMA, Stanford 19 20
Week 6: GUI (2) Week 7: Visuals
• Cocoa review • GUI review ! Stk and Cocoa • Image processing basics • Qt API • Core Image (Core Graphics) • Qt Designer • OpenGL with Cocoa / Qt • The GIMP (and plug-ins) • Final project proposal
4/7/06, Music 3SI, CCRMA, Stanford 4/7/06, Music 3SI, CCRMA, Stanford 21 22
Week 8: Multimedia Week 9: Network & etc.
• Review of audio/visual programming • Audio streaming ! InetWvIn / InetWvOut classes (Stk) • Possible mappings ! sonification / visualization • Open Sound Control (OSC) • Examples • Project help session ! SonART ! R.S.V.P. ! iTunes plug-ins
4/7/06, Music 3SI, CCRMA, Stanford 4/7/06, Music 3SI, CCRMA, Stanford 23 24 Week 10: Presentation
• 6/9/2006 (tentative) Assignments, Project, & Grading
4/7/06, Music 3SI, CCRMA, Stanford 4/7/06, Music 3SI, CCRMA, Stanford 25 26
Assignments / Project Grading / Credit
• Assignment #1 • P/NC only ! command-line audio application ! no letter grade ! no incomplete • Assignment #2 ! GUI-based audio app., VST plug-in, or Pd extern • 1 or 2 units • F.P.: anything about audio/MM, including • Music grad students: BE CAREFUL! ! audio processing application / plug-in / extern • Auditors are always welcome! ! sonification / visualization program ! audio streaming / sound control over network
4/7/06, Music 3SI, CCRMA, Stanford 4/7/06, Music 3SI, CCRMA, Stanford 27 28
CCRMA/Music Courses
• 220c • 120 / 250a: Pd extern, OSC Related Courses • 424: VST • 420: Stk • 220a / 320 / 421 / 422
4/7/06, Music 3SI, CCRMA, Stanford 4/7/06, Music 3SI, CCRMA, Stanford 29 30 CS
• CS106b • CS107 • CS193e Course Website
4/7/06, Music 3SI, CCRMA, Stanford 4/7/06, Music 3SI, CCRMA, Stanford 31 32
Course Website
• http://ccrma.stanford.edu/courses/3SI/ • Stay tuned to announcements • Weekly schedule & readings Examples • Links: lots of interesting stuffs • Templates / examples
4/7/06, Music 3SI, CCRMA, Stanford 4/7/06, Music 3SI, CCRMA, Stanford 33 34
Examples Finally...
• Command-line audio applications • Survey • GUI-based audio applications • CCRMA account application form • VST plug-in (compressor) • Image / graphics applications • Sonification / visualization • Network (OSC)
4/7/06, Music 3SI, CCRMA, Stanford 4/7/06, Music 3SI, CCRMA, Stanford 35 36