#ifndef TICK_DATA_H_ #define TICK_DATA_H_ #include "Stk.h" #include "Messager.h" #include "SKINI.msg" #include "VoicerEnv.h" #include "FlexEnv.h" #include "Oscillators.h" class Tick_Data { public: struct Panner { StkFloat panL; StkFloat panR; }; FlexEnv env[]; VoicerEnv voicer; Oscillators *osci[]; Oscillators *osc2[]; int counter; bool done; Messager messager; Skini::Message message; Panner pan; int channels; bool haveMessage; int voices; Tick_Data(); virtual ~Tick_Data(); void processMessage( Tick_Data *data ); }; #endif /*TICK_DATA_H_*/ #include "Tick_Data.h" Tick_Data::Tick_Data() { voices = 8; channels = 2; counter = 0; done = false; haveMessage = false; for ( int i=0; imessage.floatValues[0]; register StkFloat value2 = data->message.floatValues[1]; switch( data->message.type ) { case __SK_Exit_: data->done = true; return; case __SK_NoteOn_: if (value2 == 0.0 ) { // velocity is zero ... really a NoteOff data->voicer.noteOff( value1, 64.0, 0 ); data->voicer.noteOff( value1, 64.0, 1); } else { // a NoteOn data->voicer.noteOn( value1, value2, 0 ); data->voicer.noteOn( value1, value2, 1 ); } break; case __SK_NoteOff_: data->voicer.noteOff( value1, value2, 0 ); data->voicer.noteOff( value1, value2, 1 ); break; case __SK_ControlChange_: data->voicer.controlChange( (int) value1, value2 ); break; //case __SK_AfterTouch_: //data->voicer.controlChange( 128, value1 ); case __SK_PitchChange_: data->voicer.setFrequency( value1 ); break; case __SK_PitchBend_: data->voicer.pitchBend( value1 ); } // end of switch data->haveMessage = false; return; }