// // Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> // Creation Date: Mon Jul 17 14:40:30 PDT 2000 // Last Modified: Mon Jul 17 14:40:33 PDT 2000 // Filename: ...sig/examples/all/drumstick.cpp // Syntax: C++; stickImprov 2.3 // // Description: This is a template which you fill with algorithms // in the following functions to create a stickImprov program. // #include "stickImprov.h" // includes the default Win95/Linux console // interface for the stickImprov environment Voice voice1; Voice voice2; Voice voice3; int instrument = 0; /*----------------- beginning of improvization algorithms ---------------*/ #define DRUM_CHANNEL 9 /* General MIDI channel 10 for percussion */ /*--------------------- maintenance algorithms --------------------------*/ ////////////////////////////// // // description -- this function is called by the improv interface // whenever a capital "D" is pressed on the computer keyboard. // Put a description of the program and how to use it here. // void description(void) { cout << " DRUMSTICK -- Craig Stuart Sapp <craig@ccrma.stanford.edu>, 17 July 2000\n"; cout << endl; } ////////////////////////////// // // initialization -- this function is called by the improv // interface once at the start of the program. Put items // here which need to be initialized at the beginning of // the program. // void initialization(void) { voice1.setChannel(0); voice1.pc(instrument); voice2.setChannel(1); voice2.pc(42); voice3.setChannel(DRUM_CHANNEL); } ////////////////////////////// // // finishup -- this function is called by the improv interface // whenever the program is exited. Put items here which // need to be taken care of when the program is finished. // void finishup(void) { } /*-------------------- main loop algorithms -----------------------------*/ ////////////////////////////// // // mainloopalgorithms -- this function is called by the improv interface // continuously while the program is running. The global variable t_time // which stores the current time is set just before this function is // called and remains constant while in this functions. // void mainloopalgorithms(void) { } /*-------------------- triggered algorithms -----------------------------*/ /////////////////////////////// // // keyboardchar -- this function is called by the improv interface // whenever a key is pressed on the computer keyboard. // Put commands here which will be executed when a key is // pressed on the computer keyboard. // void keyboardchar(int key) { switch (key) { case '[': instrument++; if (instrument > 127) { instrument = 127; } cout << "Instrument: " << instrument << endl; voice1.pc(instrument); break; case ']': instrument--; if (instrument < 0) { instrument = 0; } cout << "Instrument: " << instrument << endl; voice1.pc(instrument); break; } } /////////////////////////////// // // stickresponse -- this function is called whenever a complete set // of stick positoin/pressure values have been received. // void stickresponse(void) { } /////////////////////////////// // // fsr 1 triggers -- fsr1ontrig will be called when the FSR is // pressed, and fsr1offtrig will be called when the FSR is // released. // void fsr1ontrig(void) { int notenumber = stick.s1ps(0, 24); int velocity = stick.s1fs(30, 127); voice1.play(48 + notenumber, velocity); } void fsr1offtrig(void) { voice1.off(); } /////////////////////////////// // // fsr 2 triggers -- fsr2ontrig will be called when the FSR is // pressed, and fsr2offtrig will be called when the FSR is // released. // void fsr2ontrig(void) { int notenumber = stick.s2ps(0, 24); int velocity = stick.s2fs(30, 127); voice2.play(36 + notenumber, velocity); } void fsr2offtrig(void) { voice2.off(); } /////////////////////////////// // // fsr 3 triggers -- fsr3ontrig will be called when the FSR is // pressed, and fsr3offtrig will be called when the FSR is // released. // void fsr3ontrig(void) { int notenumber = stick.s3ps(0, 24); int velocity = stick.s3fs(30, 127); voice3.play(72 + notenumber, velocity); } void fsr3offtrig(void) { voice3.off(); } /*------------------ end improvization algorithms -----------------------*/ // md5sum: 92be13ad6d6aa67e84eaf20087a3d6c5 drumstick.cpp [20050403]