From adacb33bf4eadcd49a744177bf3f059e7b2f2f52 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Mon, 22 Feb 2010 21:24:34 +0000 Subject: Merge with upstream r2. git-svn-id: http://svn.drobilla.net/lad/trunk/mda-lv2@2471 a436a847-0d15-0410-975c-d299462d15a1 --- src/mdaEPiano.cpp | 77 +++++++++++++++++++++++++++---------------------------- 1 file changed, 38 insertions(+), 39 deletions(-) (limited to 'src/mdaEPiano.cpp') diff --git a/src/mdaEPiano.cpp b/src/mdaEPiano.cpp index 61ffcb5..fbff1d5 100644 --- a/src/mdaEPiano.cpp +++ b/src/mdaEPiano.cpp @@ -19,15 +19,15 @@ mdaEPiano::mdaEPiano(audioMasterCallback audioMaster) : AudioEffectX(audioMaster if(programs) { //fill patches... - long i=0; + LvzInt32 i=0; fillpatch(i++, "Default", 0.500f, 0.500f, 0.500f, 0.500f, 0.500f, 0.650f, 0.250f, 0.500f, 0.50f, 0.500f, 0.146f, 0.000f); fillpatch(i++, "Bright", 0.500f, 0.500f, 1.000f, 0.800f, 0.500f, 0.650f, 0.250f, 0.500f, 0.50f, 0.500f, 0.146f, 0.500f); fillpatch(i++, "Mellow", 0.500f, 0.500f, 0.000f, 0.000f, 0.500f, 0.650f, 0.250f, 0.500f, 0.50f, 0.500f, 0.246f, 0.000f); fillpatch(i++, "Autopan", 0.500f, 0.500f, 0.500f, 0.500f, 0.250f, 0.650f, 0.250f, 0.500f, 0.50f, 0.500f, 0.246f, 0.000f); fillpatch(i++, "Tremolo", 0.500f, 0.500f, 0.500f, 0.500f, 0.750f, 0.650f, 0.250f, 0.500f, 0.50f, 0.500f, 0.246f, 0.000f); - fillpatch(i++, " ", 0.500f, 0.500f, 0.500f, 0.500f, 0.500f, 0.650f, 0.250f, 0.500f, 0.50f, 0.500f, 0.146f, 0.000f); - fillpatch(i++, " ", 0.500f, 0.500f, 0.500f, 0.500f, 0.500f, 0.650f, 0.250f, 0.500f, 0.50f, 0.500f, 0.146f, 0.000f); - fillpatch(i++, " ", 0.500f, 0.500f, 0.500f, 0.500f, 0.500f, 0.650f, 0.250f, 0.500f, 0.50f, 0.500f, 0.146f, 0.000f); + fillpatch(i++, "(default)", 0.500f, 0.500f, 0.500f, 0.500f, 0.500f, 0.650f, 0.250f, 0.500f, 0.50f, 0.500f, 0.146f, 0.000f); + fillpatch(i++, "(default)", 0.500f, 0.500f, 0.500f, 0.500f, 0.500f, 0.650f, 0.250f, 0.500f, 0.50f, 0.500f, 0.146f, 0.000f); + fillpatch(i++, "(default)", 0.500f, 0.500f, 0.500f, 0.500f, 0.500f, 0.650f, 0.250f, 0.500f, 0.50f, 0.500f, 0.146f, 0.000f); setProgram(0); } @@ -91,10 +91,10 @@ mdaEPiano::mdaEPiano(audioMasterCallback audioMaster) : AudioEffectX(audioMaster kgrp[32].pos = 414487; kgrp[32].end = 422408; kgrp[32].loop = 2169; //extra xfade looping... - for(long k=0; k<28; k++) + for(LvzInt32 k=0; k<28; k++) { - long p0 = kgrp[k].end; - long p1 = kgrp[k].end - kgrp[k].loop; + LvzInt32 p0 = kgrp[k].end; + LvzInt32 p1 = kgrp[k].end - kgrp[k].loop; float xf = 1.0f; float dxf = -0.02f; @@ -109,7 +109,7 @@ mdaEPiano::mdaEPiano(audioMasterCallback audioMaster) : AudioEffectX(audioMaster } //initialise... - for(long v=0; v 0.5f) tfrq = 14000.0f; else tfrq = 5000.0f; //treble freq @@ -144,7 +145,7 @@ void mdaEPiano::update() //parameter change if(param[6] < 0.25f) velsens -= 0.75f - 3.0f * param[6]; width = 0.03f * param[7]; - poly = 1 + (long)(31.9f * param[8]); + poly = 1 + (LvzInt32)(31.9f * param[8]); fine = param[9] - 0.5f; random = 0.077f * param[10] * param[10]; stretch = 0.0f; //0.000434f * (param[11] - 0.5f); parameter re-used for overdrive! @@ -156,7 +157,7 @@ void mdaEPiano::resume() { Fs = getSampleRate(); iFs = 1.0f / Fs; - dlfo = 6.283f * iFs * (float)exp(6.22f * param[5] - 2.61f); //lfo rate + dlfo = 6.283f * iFs * (float)exp(6.22f * programs[curProgram].param[5] - 2.61f); //lfo rate DECLARE_LVZ_DEPRECATED (wantEvents) (); } @@ -170,19 +171,14 @@ mdaEPiano::~mdaEPiano () //destroy any buffers... void mdaEPiano::setProgram(LvzInt32 program) { - long i; - - mdaEPianoProgram *p = &programs[program]; curProgram = program; - for(i=0; iparam[i]; - update(); + update(); } void mdaEPiano::setParameter(LvzInt32 index, float value) { - mdaEPianoProgram *p = &programs[curProgram]; - param[index] = p->param[index] = value; + programs[curProgram].param[index] = value; update(); //if(editor) editor->postUpdate(); ///For GUI @@ -191,7 +187,7 @@ void mdaEPiano::setParameter(LvzInt32 index, float value) } -void mdaEPiano::fillpatch(long p, const char *name, float p0, float p1, float p2, float p3, float p4, +void mdaEPiano::fillpatch(LvzInt32 p, char *name, float p0, float p1, float p2, float p3, float p4, float p5, float p6, float p7, float p8, float p9, float p10,float p11) { strcpy(programs[p].name, name); @@ -204,7 +200,7 @@ void mdaEPiano::fillpatch(long p, const char *name, float p0, float p1, float p2 } -float mdaEPiano::getParameter(LvzInt32 index) { return param[index]; } +float mdaEPiano::getParameter(LvzInt32 index) { return programs[curProgram].param[index]; } void mdaEPiano::setProgramName(char *name) { strcpy(programs[curProgram].name, name); } void mdaEPiano::getProgramName(char *name) { strcpy(name, programs[curProgram].name); } void mdaEPiano::setBlockSize(LvzInt32 blockSize) { AudioEffectX::setBlockSize(blockSize); } @@ -229,7 +225,7 @@ bool mdaEPiano::getOutputProperties(LvzInt32 index, LvzPinProperties* properties bool mdaEPiano::getProgramNameIndexed(LvzInt32 category, LvzInt32 index, char* text) { - if(index 0.5f) + if(activevoices == 0 && programs[curProgram].param[4] > 0.5f) { lfo0 = -0.7071f; lfo1 = 0.7071f; } //reset LFO phase - good idea? - long note = notes[event++]; - long vel = notes[event++]; + LvzInt32 note = notes[event++]; + LvzInt32 vel = notes[event++]; noteOn(note, vel); } } @@ -402,9 +399,9 @@ void mdaEPiano::processReplacing(float **inputs, float **outputs, LvzInt32 sampl { float* out0 = outputs[0]; float* out1 = outputs[1]; - long event=0, frame=0, frames, v; + LvzInt32 event=0, frame=0, frames, v; float x, l, r, od=overdrive; - long i; + LvzInt32 i; while(frame 0.5f) + if(activevoices == 0 && programs[curProgram].param[4] > 0.5f) { lfo0 = -0.7071f; lfo1 = 0.7071f; } //reset LFO phase - good idea? - long note = notes[event++]; - long vel = notes[event++]; + LvzInt32 note = notes[event++]; + LvzInt32 vel = notes[event++]; noteOn(note, vel); } } @@ -471,10 +468,11 @@ void mdaEPiano::processReplacing(float **inputs, float **outputs, LvzInt32 sampl } -void mdaEPiano::noteOn(long note, long velocity) +void mdaEPiano::noteOn(LvzInt32 note, LvzInt32 velocity) { + float * param = programs[curProgram].param; float l=99.0f; - long v, vl=0, k, s; + LvzInt32 v, vl=0, k, s; if(velocity > 0) { @@ -497,13 +495,13 @@ void mdaEPiano::noteOn(long note, long velocity) if(note > 60) l += stretch * (float)k; //stretch s = size; - if(velocity > 40) s += (long)(sizevel * (float)(velocity - 40)); + if(velocity > 40) s += (LvzInt32)(sizevel * (float)(velocity - 40)); k = 0; while(note > (kgrp[k].high + s)) k += 3; //find keygroup l += (float)(note - kgrp[k].root); //pitch l = 32000.0f * iFs * (float)exp(0.05776226505 * l); - voice[vl].delta = (long)(65536.0f * l); + voice[vl].delta = (LvzInt32)(65536.0f * l); voice[vl].frac = 0; if(velocity > 48) k++; //mid velocity sample @@ -547,9 +545,10 @@ void mdaEPiano::noteOn(long note, long velocity) LvzInt32 mdaEPiano::processEvents(LvzEvents* ev) { - long npos=0; + float * param = programs[curProgram].param; + LvzInt32 npos=0; - for (long i=0; inumEvents; i++) + for (LvzInt32 i=0; inumEvents; i++) { if((ev->events[i])->type != kLvzMidiType) continue; LvzMidiEvent* event = (LvzMidiEvent*)ev->events[i]; @@ -600,7 +599,7 @@ LvzInt32 mdaEPiano::processEvents(LvzEvents* ev) default: //all notes off if(midiData[1]>0x7A) { - for(long v=0; v