int BEND1::run() { for (int i = 0; i < framesToRun(); i++) { if (--branch <= 0) { if (amptable) aamp = tablei(currentFrame(), amptable, amptabs) * amp; float freq = diff * tablei(currentFrame(), glissf, tags) + freq0; sset(SR, freq, tf0, tfN, strumq1); branch = reset; } float a = strum(d, strumq1); float b = dist(dgain*a); d = fbgain*delay(b, dq); float out[2]; out[0] = (cleanlevel*a + distlevel*b) * aamp; if (outputChannels() == 2) { /* split stereo files between the channels */ out[1] = (1.0 - spread) * out[0]; out[0] *= spread; } rtaddout(out); increment(); } return framesToRun(); }
int START::run() { for (int i = 0; i < framesToRun(); i++) { if (--branch <= 0) { if (amptable) aamp = tablei(currentFrame(), amptable, amptabs); branch = skip; } float out[2]; out[0] = strum(0.,strumq1) * aamp; if (outputChannels() == 2) { /* split stereo files between the channels */ out[1] = (1.0 - spread) * out[0]; out[0] *= spread; } rtaddout(out); increment(); } return framesToRun(); }
int VSTART1::run() { for (int i = 0; i < framesToRun(); i++) { if (--branch1 <= 0) { vsi = (( (rrand()+1.0)/2.0) * vsidiff) + vsibot; branch1 = (int)((float)vlen/vsi); } if (--branch2 <= 0) { if (amptable) aamp = tablei(currentFrame(), amptable, amptabs) * amp; float vamp = tablei(currentFrame(), eloc, tab) * vdepth; float freqch = oscili(vamp,vsi,vloc,vlen,&vphase); sset(SR, freq+freqch, tf0, tfN, strumq1); branch2 = reset; vphase += (float)branch2 * vsi; while (vphase >= (float) vlen) vphase -= (float) vlen; } float a = strum(d, strumq1); float b = dist(dgain*a); d = fbgain*delay(b, dq); float out[2]; out[0] = (cleanlevel*a + distlevel*b) * aamp; if (outputChannels() == 2) { /* split stereo files between the channels */ out[1] = (1.0 - spread) * out[0]; out[0] *= spread; } rtaddout(out); increment(); } return framesToRun(); }
int main( void ) { mInit(); mUSBInit(); //mBusInit(); bQueue in_q; bQueue out_q; bQueueInit( &in_q ); bQueueInit( &out_q ); usbIface usb; usbIfaceInit( &usb, &in_q, &out_q ); // Set up midi parser midiParser parser; midiParserInit( &parser, &in_q ); midiMsg msg; picker_setup(); stepper_setup(); set_timer5 (60000,30000,1200); setMode( STEP_HALF ); setSpeedLimits( 65, 200 ); set_speed(m_speed_min); setAccelerationLimit(200); int test=0; // uint16_t pos[]={0,-180,0,-360,0,-540,0,-720,-900,0}; // uint16_t dur[]={1000,1000,1000,1000}; uint16_t pos=0; /* //set_speed(m_speed_min); int i=0; update(0); // TIM_Cmd(TIM5, DISABLE); accStop(); setPosition(0); */ int Sflag=0; //strum_delay(1); while(1) { // test = update(pos); // if(test==1){ // if(Sflag==1){ // strum(); // Sflag=0; // } // } update(pos); usbIfaceReadBytes(&usb); if(midiParserHasMsg(&parser,&msg)){ mGreenTOGGLE; usbIfacePrintf(&usb, "status %02x\n",msg.status); usbIfacePrintf(&usb, "channel %02x\n",msg.channel); usbIfacePrintf(&usb, "data[0] %02x\n",msg.data[0]); usbIfacePrintf(&usb, "data[1] %02x\n\n",msg.data[1]); if(msg.channel == INSTRUMENT_CHANNEL || msg.channel == BOTH_CHANNEL) { if(msg.status==NOTE_ON){ strum(); Sflag=1; switch(msg.data[0]){ case 40: pos = E2; break; case 41: pos = F2; break; case 42: pos = FS2; break; case 43: pos = G2; break; case 44: pos = GS2; break; case 45: pos = A2; break; case 46: pos = AS2; break; case 47: pos = B2; break; case 48: pos = C3; break; case 49: pos = CS3; break; case 50: pos = D3; break; case 51: pos = DS3; break; case 52: pos = E3; break; case 53: pos = F3; break; case 54: pos = FS3; break; case 55: pos = G3; break; case 56: pos = GS3; break; case 57: pos = A3; break; case 58: pos = AS3; break; case 59: pos = B3; break; case 60: pos = C4; break; default: break; /* case 57: pos=A3; break; case 59: pos=B3; break; case 60: pos=C4; break; case 62: pos=D4; break; case 64: pos=E4; break; pos=F4; break; case 67: pos=G4; break; case 69: pos=A4; break; case 71: pos=B4; break; case 72: pos=C5; break; default: break; */ } } } } usbIfaceWriteBytes(&usb); } }