All pastes #467399 Raw Edit

Someone

public cpp v1 · immutable
·published 2007-05-02 14:24 UTC
rendered paste body
void VstPlugin::processReplacing(float** inputs, float** outputs, VstInt32 sampleFrames){	float* output = outputs[0];	int i = sampleFrames;	unsigned int timeToProcess;	unsigned int timeStamp = this->timeStamp;	bufferInit(output, 0.0f, sampleFrames);		Event* e = this->eventQueue;	while(i) {		if((this->eventQueue == NULL) || (e->time >= (this->timeStamp + i))) {			goto processRemainder;		}		timeToProcess = e->time - this->timeStamp;		this->timeStamp += timeToProcess;		i -= timeToProcess;		processVoices(output, timeToProcess);		switch(e->type) {		case kNoteOnEvent:			NoteOnEvent* ee = (NoteOnEvent*) e;			// TODO: do something other than crash when no more voices			Voice* v = this->freeVoices;			this->freeVoices = v->next;			v->next = this->usedVoices;			this->usedVoices = v;			v->noteOn(ee->midiNote, ee->velocity);			this->noteVoiceMap[ee->midiNote] = v;			break;		case kNoteOffEvent:			NoteOffEvent* ee = (NoteOffEvent*) e;			Voice* v = this->noteVoiceMap[ee->midiNote];			v->noteOff();			break;		default:			break;		}				this->eventQueue = e->next;		e->next = this->freeEvents;		this->freeEvents = e;		e = this->eventQueue;	}processRemainder:	processVoices(output, i);	bufferScale(outputs[0], 0.5, sampleFrames);}