aboutsummaryrefslogtreecommitdiffstats
path: root/src/mdaEPiano.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2009-05-13 16:04:14 +0000
committerDavid Robillard <d@drobilla.net>2009-05-13 16:04:14 +0000
commite39cbfb9dcf0c00133945eab186072274b45358a (patch)
tree646d496e9bb964ead2ec493e976b01f4de115590 /src/mdaEPiano.cpp
parentc74440a8ae0169010167befafd80d44e23805f6b (diff)
downloadmda.lv2-e39cbfb9dcf0c00133945eab186072274b45358a.tar.gz
mda.lv2-e39cbfb9dcf0c00133945eab186072274b45358a.tar.bz2
mda.lv2-e39cbfb9dcf0c00133945eab186072274b45358a.zip
Strip trailing whitespace.
git-svn-id: http://svn.drobilla.net/lad/trunk/mda-lv2@1999 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/mdaEPiano.cpp')
-rw-r--r--src/mdaEPiano.cpp130
1 files changed, 65 insertions, 65 deletions
diff --git a/src/mdaEPiano.cpp b/src/mdaEPiano.cpp
index 55586f0..61ffcb5 100644
--- a/src/mdaEPiano.cpp
+++ b/src/mdaEPiano.cpp
@@ -30,12 +30,12 @@ mdaEPiano::mdaEPiano(audioMasterCallback audioMaster) : AudioEffectX(audioMaster
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);
setProgram(0);
}
-
+
setUniqueID("mdaEPiano");
if(audioMaster)
{
- setNumInputs(0);
+ setNumInputs(0);
setNumOutputs(NOUTS);
canProcessReplacing();
isSynth();
@@ -56,39 +56,39 @@ mdaEPiano::mdaEPiano(audioMasterCallback audioMaster) : AudioEffectX(audioMaster
kgrp[27].root = 91; kgrp[27].high = 93; //G5
kgrp[30].root = 96; kgrp[30].high =999; //C6
- kgrp[0].pos = 0; kgrp[0].end = 8476; kgrp[0].loop = 4400;
- kgrp[1].pos = 8477; kgrp[1].end = 16248; kgrp[1].loop = 4903;
- kgrp[2].pos = 16249; kgrp[2].end = 34565; kgrp[2].loop = 6398;
- kgrp[3].pos = 34566; kgrp[3].end = 41384; kgrp[3].loop = 3938;
- kgrp[4].pos = 41385; kgrp[4].end = 45760; kgrp[4].loop = 1633; //was 1636;
- kgrp[5].pos = 45761; kgrp[5].end = 65211; kgrp[5].loop = 5245;
- kgrp[6].pos = 65212; kgrp[6].end = 72897; kgrp[6].loop = 2937;
- kgrp[7].pos = 72898; kgrp[7].end = 78626; kgrp[7].loop = 2203; //was 2204;
- kgrp[8].pos = 78627; kgrp[8].end = 100387; kgrp[8].loop = 6368;
- kgrp[9].pos = 100388; kgrp[9].end = 116297; kgrp[9].loop = 10452;
- kgrp[10].pos = 116298; kgrp[10].end = 127661; kgrp[10].loop = 5217; //was 5220;
- kgrp[11].pos = 127662; kgrp[11].end = 144113; kgrp[11].loop = 3099;
- kgrp[12].pos = 144114; kgrp[12].end = 152863; kgrp[12].loop = 4284;
- kgrp[13].pos = 152864; kgrp[13].end = 173107; kgrp[13].loop = 3916;
- kgrp[14].pos = 173108; kgrp[14].end = 192734; kgrp[14].loop = 2937;
- kgrp[15].pos = 192735; kgrp[15].end = 204598; kgrp[15].loop = 4732;
- kgrp[16].pos = 204599; kgrp[16].end = 218995; kgrp[16].loop = 4733;
- kgrp[17].pos = 218996; kgrp[17].end = 233801; kgrp[17].loop = 2285;
- kgrp[18].pos = 233802; kgrp[18].end = 248011; kgrp[18].loop = 4098;
- kgrp[19].pos = 248012; kgrp[19].end = 265287; kgrp[19].loop = 4099;
- kgrp[20].pos = 265288; kgrp[20].end = 282255; kgrp[20].loop = 3609;
- kgrp[21].pos = 282256; kgrp[21].end = 293776; kgrp[21].loop = 2446;
- kgrp[22].pos = 293777; kgrp[22].end = 312566; kgrp[22].loop = 6278;
- kgrp[23].pos = 312567; kgrp[23].end = 330200; kgrp[23].loop = 2283;
- kgrp[24].pos = 330201; kgrp[24].end = 348889; kgrp[24].loop = 2689;
- kgrp[25].pos = 348890; kgrp[25].end = 365675; kgrp[25].loop = 4370;
- kgrp[26].pos = 365676; kgrp[26].end = 383661; kgrp[26].loop = 5225;
- kgrp[27].pos = 383662; kgrp[27].end = 393372; kgrp[27].loop = 2811;
+ kgrp[0].pos = 0; kgrp[0].end = 8476; kgrp[0].loop = 4400;
+ kgrp[1].pos = 8477; kgrp[1].end = 16248; kgrp[1].loop = 4903;
+ kgrp[2].pos = 16249; kgrp[2].end = 34565; kgrp[2].loop = 6398;
+ kgrp[3].pos = 34566; kgrp[3].end = 41384; kgrp[3].loop = 3938;
+ kgrp[4].pos = 41385; kgrp[4].end = 45760; kgrp[4].loop = 1633; //was 1636;
+ kgrp[5].pos = 45761; kgrp[5].end = 65211; kgrp[5].loop = 5245;
+ kgrp[6].pos = 65212; kgrp[6].end = 72897; kgrp[6].loop = 2937;
+ kgrp[7].pos = 72898; kgrp[7].end = 78626; kgrp[7].loop = 2203; //was 2204;
+ kgrp[8].pos = 78627; kgrp[8].end = 100387; kgrp[8].loop = 6368;
+ kgrp[9].pos = 100388; kgrp[9].end = 116297; kgrp[9].loop = 10452;
+ kgrp[10].pos = 116298; kgrp[10].end = 127661; kgrp[10].loop = 5217; //was 5220;
+ kgrp[11].pos = 127662; kgrp[11].end = 144113; kgrp[11].loop = 3099;
+ kgrp[12].pos = 144114; kgrp[12].end = 152863; kgrp[12].loop = 4284;
+ kgrp[13].pos = 152864; kgrp[13].end = 173107; kgrp[13].loop = 3916;
+ kgrp[14].pos = 173108; kgrp[14].end = 192734; kgrp[14].loop = 2937;
+ kgrp[15].pos = 192735; kgrp[15].end = 204598; kgrp[15].loop = 4732;
+ kgrp[16].pos = 204599; kgrp[16].end = 218995; kgrp[16].loop = 4733;
+ kgrp[17].pos = 218996; kgrp[17].end = 233801; kgrp[17].loop = 2285;
+ kgrp[18].pos = 233802; kgrp[18].end = 248011; kgrp[18].loop = 4098;
+ kgrp[19].pos = 248012; kgrp[19].end = 265287; kgrp[19].loop = 4099;
+ kgrp[20].pos = 265288; kgrp[20].end = 282255; kgrp[20].loop = 3609;
+ kgrp[21].pos = 282256; kgrp[21].end = 293776; kgrp[21].loop = 2446;
+ kgrp[22].pos = 293777; kgrp[22].end = 312566; kgrp[22].loop = 6278;
+ kgrp[23].pos = 312567; kgrp[23].end = 330200; kgrp[23].loop = 2283;
+ kgrp[24].pos = 330201; kgrp[24].end = 348889; kgrp[24].loop = 2689;
+ kgrp[25].pos = 348890; kgrp[25].end = 365675; kgrp[25].loop = 4370;
+ kgrp[26].pos = 365676; kgrp[26].end = 383661; kgrp[26].loop = 5225;
+ kgrp[27].pos = 383662; kgrp[27].end = 393372; kgrp[27].loop = 2811;
kgrp[28].pos = 383662; kgrp[28].end = 393372; kgrp[28].loop = 2811; //ghost
- kgrp[29].pos = 393373; kgrp[29].end = 406045; kgrp[29].loop = 4522;
- kgrp[30].pos = 406046; kgrp[30].end = 414486; kgrp[30].loop = 2306;
+ kgrp[29].pos = 393373; kgrp[29].end = 406045; kgrp[29].loop = 4522;
+ kgrp[30].pos = 406046; kgrp[30].end = 414486; kgrp[30].loop = 2306;
kgrp[31].pos = 406046; kgrp[31].end = 414486; kgrp[31].loop = 2306; //ghost
- kgrp[32].pos = 414487; kgrp[32].end = 422408; kgrp[32].loop = 2169;
+ kgrp[32].pos = 414487; kgrp[32].end = 422408; kgrp[32].loop = 2169;
//extra xfade looping...
for(long k=0; k<28; k++)
@@ -109,7 +109,7 @@ mdaEPiano::mdaEPiano(audioMasterCallback audioMaster) : AudioEffectX(audioMaster
}
//initialise...
- for(long v=0; v<NVOICES; v++)
+ for(long v=0; v<NVOICES; v++)
{
voice[v].env = 0.0f;
voice[v].dec = 0.99f; //all notes off
@@ -130,7 +130,7 @@ mdaEPiano::mdaEPiano(audioMasterCallback audioMaster) : AudioEffectX(audioMaster
void mdaEPiano::update() //parameter change
{
size = (long)(12.0f * param[2] - 6.0f);
-
+
treb = 4.0f * param[3] * param[3] - 1.0f; //treble gain
if(param[3] > 0.5f) tfrq = 14000.0f; else tfrq = 5000.0f; //treble freq
tfrq = 1.0f - (float)exp(-iFs * tfrq);
@@ -142,7 +142,7 @@ void mdaEPiano::update() //parameter change
velsens = 1.0f + param[6] + param[6];
if(param[6] < 0.25f) velsens -= 0.75f - 3.0f * param[6];
-
+
width = 0.03f * param[7];
poly = 1 + (long)(31.9f * param[8]);
fine = param[9] - 0.5f;
@@ -153,7 +153,7 @@ void mdaEPiano::update() //parameter change
void mdaEPiano::resume()
-{
+{
Fs = getSampleRate();
iFs = 1.0f / Fs;
dlfo = 6.283f * iFs * (float)exp(6.22f * param[5] - 2.61f); //lfo rate
@@ -264,11 +264,11 @@ void mdaEPiano::getParameterName(LvzInt32 index, char *label)
case 0: strcpy(label, "Envelope Decay"); break;
case 1: strcpy(label, "Envelope Release"); break;
case 2: strcpy(label, "Hardness"); break;
-
+
case 3: strcpy(label, "Treble Boost"); break;
case 4: strcpy(label, "Modulation"); break;
case 5: strcpy(label, "LFO Rate"); break;
-
+
case 6: strcpy(label, "Velocity Sense"); break;
case 7: strcpy(label, "Stereo Width"); break;
case 8: strcpy(label, "Polyphony"); break;
@@ -283,19 +283,19 @@ void mdaEPiano::getParameterName(LvzInt32 index, char *label)
void mdaEPiano::getParameterDisplay(LvzInt32 index, char *text)
{
char string[16];
-
+
switch(index)
{
case 2:
- case 3:
+ case 3:
case 9: sprintf(string, "%.0f", 100.0f * param[index] - 50.0f); break;
-
- case 4: if(param[index] > 0.5f)
+
+ case 4: if(param[index] > 0.5f)
sprintf(string, "Trem %.0f", 200.0f * param[index] - 100.0f);
else
sprintf(string, "Pan %.0f", 100.0f - 200.0f * param[index]); break;
- case 5: sprintf(string, "%.2f", (float)exp(6.22f * param[5] - 2.61f)); break; //LFO Hz
+ case 5: sprintf(string, "%.2f", (float)exp(6.22f * param[5] - 2.61f)); break; //LFO Hz
case 7: sprintf(string, "%.0f", 200.0f * param[index]); break;
case 8: sprintf(string, "%ld", poly); break;
case 10: sprintf(string, "%.1f", 50.0f * param[index] * param[index]); break;
@@ -313,7 +313,7 @@ void mdaEPiano::getParameterLabel(LvzInt32 index, char *label)
{
case 5: strcpy(label, "Hz"); break;
case 8: strcpy(label, "voices"); break;
- case 9:
+ case 9:
case 10: strcpy(label, "cents"); break;
default: strcpy(label, "%");
}
@@ -364,14 +364,14 @@ void mdaEPiano::process(float **inputs, float **outputs, LvzInt32 sampleFrames)
l += V->outl * x;
r += V->outr * x;
-
+
V++;
}
tl += tfrq * (l - tl); //treble boost
tr += tfrq * (r - tr);
r += treb * (r - tr);
l += treb * (l - tl);
-
+
lfo0 += dlfo * lfo1; //LFO for tremolo and autopan
lfo1 -= dlfo * lfo0;
l += l * lmod * lfo1;
@@ -383,7 +383,7 @@ void mdaEPiano::process(float **inputs, float **outputs, LvzInt32 sampleFrames)
if(frame<sampleFrames)
{
- if(activevoices == 0 && param[4] > 0.5f)
+ if(activevoices == 0 && param[4] > 0.5f)
{ lfo0 = -0.7071f; lfo1 = 0.7071f; } //reset LFO phase - good idea?
long note = notes[event++];
long vel = notes[event++];
@@ -392,7 +392,7 @@ void mdaEPiano::process(float **inputs, float **outputs, LvzInt32 sampleFrames)
}
if(fabs(tl)<1.0e-10) tl = 0.0f; //anti-denormal
if(fabs(tr)<1.0e-10) tr = 0.0f;
-
+
for(v=0; v<activevoices; v++) if(voice[v].env < SILENCE) voice[v] = voice[--activevoices];
notes[0] = EVENTS_DONE; //mark events buffer as done
}
@@ -427,7 +427,7 @@ void mdaEPiano::processReplacing(float **inputs, float **outputs, LvzInt32 sampl
//i = waves[V->pos];
//i = (i << 7) + (V->frac >> 9) * (waves[V->pos + 1] - i) + 0x40400000; //not working on intel mac !?!
//x = V->env * (*(float *)&i - 3.0f); //fast int->float
- //x = V->env * (float)i / 32768.0f;
+ //x = V->env * (float)i / 32768.0f;
i = waves[V->pos] + ((V->frac * (waves[V->pos + 1] - waves[V->pos])) >> 16);
x = V->env * (float)i / 32768.0f;
@@ -437,14 +437,14 @@ void mdaEPiano::processReplacing(float **inputs, float **outputs, LvzInt32 sampl
l += V->outl * x;
r += V->outr * x;
-
+
V++;
}
tl += tfrq * (l - tl); //treble boost
tr += tfrq * (r - tr);
r += treb * (r - tr);
l += treb * (l - tl);
-
+
lfo0 += dlfo * lfo1; //LFO for tremolo and autopan
lfo1 -= dlfo * lfo0;
l += l * lmod * lfo1;
@@ -456,7 +456,7 @@ void mdaEPiano::processReplacing(float **inputs, float **outputs, LvzInt32 sampl
if(frame<sampleFrames)
{
- if(activevoices == 0 && param[4] > 0.5f)
+ if(activevoices == 0 && param[4] > 0.5f)
{ lfo0 = -0.7071f; lfo1 = 0.7071f; } //reset LFO phase - good idea?
long note = notes[event++];
long vel = notes[event++];
@@ -465,7 +465,7 @@ void mdaEPiano::processReplacing(float **inputs, float **outputs, LvzInt32 sampl
}
if(fabs(tl)<1.0e-10) tl = 0.0f; //anti-denormal
if(fabs(tr)<1.0e-10) tr = 0.0f;
-
+
for(v=0; v<activevoices; v++) if(voice[v].env < SILENCE) voice[v] = voice[--activevoices];
notes[0] = EVENTS_DONE; //mark events buffer as done
}
@@ -475,8 +475,8 @@ void mdaEPiano::noteOn(long note, long velocity)
{
float l=99.0f;
long v, vl=0, k, s;
-
- if(velocity > 0)
+
+ if(velocity > 0)
{
if(activevoices < poly) //add a note
{
@@ -497,7 +497,7 @@ 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 += (long)(sizevel * (float)(velocity - 40));
k = 0;
while(note > (kgrp[k].high + s)) k += 3; //find keygroup
@@ -513,7 +513,7 @@ void mdaEPiano::noteOn(long note, long velocity)
voice[vl].loop = kgrp[k].loop;
voice[vl].env = (3.0f + 2.0f * velsens) * (float)pow(0.0078f * velocity, velsens); //velocity
-
+
if(note > 60) voice[vl].env *= (float)exp(0.01f * (float)(60 - note)); //new! high notes quieter
l = 50.0f + param[4] * param[4] * muff + muffvel * (float)(velocity - 64); //muffle
@@ -548,13 +548,13 @@ void mdaEPiano::noteOn(long note, long velocity)
LvzInt32 mdaEPiano::processEvents(LvzEvents* ev)
{
long npos=0;
-
+
for (long i=0; i<ev->numEvents; i++)
{
if((ev->events[i])->type != kLvzMidiType) continue;
LvzMidiEvent* event = (LvzMidiEvent*)ev->events[i];
char* midiData = event->midiData;
-
+
switch(midiData[0] & 0xf0) //status byte (all channels)
{
case 0x80: //note off
@@ -581,11 +581,11 @@ LvzInt32 mdaEPiano::processEvents(LvzEvents* ev)
}
break;
-
+
case 0x07: //volume
volume = 0.00002f * (float)(midiData[2] * midiData[2]);
break;
-
+
case 0x40: //sustain pedal
case 0x42: //sustenuto pedal
sustain = midiData[2] & 0x40;
@@ -598,8 +598,8 @@ LvzInt32 mdaEPiano::processEvents(LvzEvents* ev)
break;
default: //all notes off
- if(midiData[1]>0x7A)
- {
+ if(midiData[1]>0x7A)
+ {
for(long v=0; v<NVOICES; v++) voice[v].dec=0.99f;
sustain = 0;
muff = 160.0f;
@@ -611,7 +611,7 @@ LvzInt32 mdaEPiano::processEvents(LvzEvents* ev)
case 0xC0: //program change
if(midiData[1]<NPROGS) setProgram(midiData[1]);
break;
-
+
default: break;
}