aboutsummaryrefslogtreecommitdiffstats
path: root/src/mdaLoudness.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2010-02-22 21:24:34 +0000
committerDavid Robillard <d@drobilla.net>2010-02-22 21:24:34 +0000
commitadacb33bf4eadcd49a744177bf3f059e7b2f2f52 (patch)
tree922620c99fdc348529002d1a000ec0e8f94f3041 /src/mdaLoudness.cpp
parent4514036c46168f4bbc693649989d53bdffe6137b (diff)
downloadmda.lv2-adacb33bf4eadcd49a744177bf3f059e7b2f2f52.tar.gz
mda.lv2-adacb33bf4eadcd49a744177bf3f059e7b2f2f52.tar.bz2
mda.lv2-adacb33bf4eadcd49a744177bf3f059e7b2f2f52.zip
Merge with upstream r2.
git-svn-id: http://svn.drobilla.net/lad/trunk/mda-lv2@2471 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/mdaLoudness.cpp')
-rw-r--r--src/mdaLoudness.cpp39
1 files changed, 22 insertions, 17 deletions
diff --git a/src/mdaLoudness.cpp b/src/mdaLoudness.cpp
index 1b490fe..4ec1eba 100644
--- a/src/mdaLoudness.cpp
+++ b/src/mdaLoudness.cpp
@@ -12,7 +12,7 @@
#include <stdio.h>
#include <float.h>
#include <math.h>
-
+
AudioEffect *createEffectInstance(audioMasterCallback audioMaster)
{
return new mdaLoudness(audioMaster);
@@ -54,17 +54,18 @@ mdaLoudness::mdaLoudness(audioMasterCallback audioMaster): AudioEffectX(audioMas
DECLARE_LVZ_DEPRECATED(canMono) ();
canProcessReplacing();
- programs = new mdaLoudnessProgram[numPrograms];
+ programs = new mdaLoudnessProgram[NPROGS];
setProgram(0);
- suspend();
+ suspend();
}
void mdaLoudness::resume() ///update internal parameters...
{
+ float * param = programs[curProgram].param;
float f, tmp;
- long i;
+ LvzInt32 i;
tmp = param[0] + param[0] - 1.0f;
igain = 60.0f * tmp * tmp;
@@ -75,7 +76,7 @@ void mdaLoudness::resume() ///update internal parameters...
if(tmp<0.0f) ogain *= -1.0f;
f = 0.1f * igain + 6.0f; //coefficient index + fractional part
- i = (long)f;
+ i = (LvzInt32)f;
f -= (float)i;
tmp = loudness[i][0]; A0 = tmp + f * (loudness[i + 1][0] - tmp);
@@ -112,29 +113,33 @@ void mdaLoudness::suspend() ///clear any buffers...
mdaLoudness::~mdaLoudness() ///destroy any buffers...
{
- if(programs) delete[] programs;
+ if(programs) delete[] programs;
}
void mdaLoudness::setProgram(LvzInt32 program)
{
- int i=0;
-
- mdaLoudnessProgram *p = &programs[program];
- curProgram = program;
- setProgramName(p->name);
- for(i=0; i<NPARAMS; i++) param[i] = p->param[i];
+ curProgram = program;
resume();
}
void mdaLoudness::setParameter(LvzInt32 index, float value)
{
- programs[curProgram].param[index] = param[index] = value; //bug was here!
+ programs[curProgram].param[index] = value; //bug was here!
resume();
}
-float mdaLoudness::getParameter(LvzInt32 index) { return param[index]; }
-void mdaLoudness::setProgramName(char *name) { strcpy(programName, name); }
-void mdaLoudness::getProgramName(char *name) { strcpy(name, programName); }
+float mdaLoudness::getParameter(LvzInt32 index) { return programs[curProgram].param[index]; }
+void mdaLoudness::setProgramName(char *name) { strcpy(programs[curProgram].name, name); }
+void mdaLoudness::getProgramName(char *name) { strcpy(name, programs[curProgram].name); }
+bool mdaLoudness::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if ((unsigned int)index < NPROGS)
+ {
+ strcpy(name, programs[index].name);
+ return true;
+ }
+ return false;
+}
void mdaLoudness::getParameterName(LvzInt32 index, char *label)
@@ -155,7 +160,7 @@ void mdaLoudness::getParameterDisplay(LvzInt32 index, char *text)
switch(index)
{
case 0: sprintf(string, "%.1f", igain); break;
- case 2: if(param[index]>0.5f) strcpy (string, "ON");
+ case 2: if(programs[curProgram].param[index]>0.5f) strcpy (string, "ON");
else strcpy (string, "OFF"); break;
default: sprintf(string, "%.1f", ogain); break;
}