All pastes #432637 Raw Edit

Tick_Data Class

public cpp v1 · immutable
·published 2007-04-10 11:20 UTC
rendered paste body
#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; i<voices; i++ ) {			osci[i] = 0;	osc2[i] = 0;		}		try {        for ( int i=0; i<voices; i++ ) {      osci[i] = new Oscillators();      osc2[i] = new Oscillators();    }  	}  	catch (StkError &) {    //	goto cleanup;  	}  	  	for ( int i=0; i<voices; i++ ) {    voicer.addInstrument( osci[i], 0 );    voicer.addInstrument( osc2[i], 1);  	}	}Tick_Data::~Tick_Data(){		for ( int i=0; i<voices; i++ ) {				delete osci[i];		delete osc2[i];		}}void Tick_Data::processMessage( Tick_Data *data ){  register StkFloat value1 = data->message.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;}