Lecture Slides
Total Page:16
File Type:pdf, Size:1020Kb
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 <stdio.h> ! musicians main() ! multimedia artists { ! printf("This is a C program\n"); ! CCRMA students } • Tutorials, demos, & templates ! width > depth 4/7/06, Music 3SI, CCRMA, Stanford 4/7/06, Music 3SI, CCRMA, Stanford 7 8 Samples (2) Samples (3) #include <iostream> using namespace std; int main () #include <iostream> { using namespace std; int a,b,c; int main () a=2; { b=7; ! cout << "Hello World!"; c = (a>b) ? a : b; ! return 0; } cout << c; return 0; } 4/7/06, Music 3SI, CCRMA, Stanford 4/7/06, Music 3SI, CCRMA, Stanford 9 10 Samples (4) Samples (5) #include <iostream> #include "WaveLoop.h" using namespace std; #include "FileWvOut.h" 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.