aboutsummaryrefslogtreecommitdiffstats
path: root/src/mdaVocoder.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/mdaVocoder.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/mdaVocoder.cpp')
-rw-r--r--src/mdaVocoder.cpp39
1 files changed, 24 insertions, 15 deletions
diff --git a/src/mdaVocoder.cpp b/src/mdaVocoder.cpp
index bf426b2..af9e8b0 100644
--- a/src/mdaVocoder.cpp
+++ b/src/mdaVocoder.cpp
@@ -38,7 +38,7 @@ mdaVocoder::mdaVocoder(audioMasterCallback audioMaster): AudioEffectX(audioMaste
//canMono();
canProcessReplacing();
- programs = new mdaVocoderProgram[numPrograms];
+ programs = new mdaVocoderProgram[NPROGS];
setProgram(0);
///differences from default program...
@@ -65,10 +65,11 @@ bool mdaVocoder::getEffectName(char* name) { strcpy(name, "Vocoder"); return
void mdaVocoder::resume() ///update internal parameters...
{
+ float * param = programs[curProgram].param;
double tpofs = 6.2831853/getSampleRate();
double rr, th, re;
float sh;
- long i;
+ LvzInt32 i;
swap = 1; if(param[0]>0.5f) swap = 0;
gain = (float)pow(10.0f, 2.0f * param[1] - 3.0f * param[5] - 2.0f);
@@ -146,7 +147,7 @@ void mdaVocoder::resume() ///update internal parameters...
void mdaVocoder::suspend() ///clear any buffers...
{
- long i, j;
+ LvzInt32 i, j;
for(i=0; i<nbnd; i++) for(j=3; j<12; j++) f[i][j] = 0.0f; //zero band filters and envelopes
kout = 0.0f;
@@ -162,21 +163,28 @@ mdaVocoder::~mdaVocoder() ///destroy any buffers...
void mdaVocoder::setProgram(LvzInt32 program)
{
- int i=0;
-
- mdaVocoderProgram *p = &programs[program];
curProgram = program;
- setProgramName(p->name);
- for(i=0; i<NPARAMS; i++) param[i] = p->param[i];
resume();
}
-void mdaVocoder::setParameter(LvzInt32 index, float value) { param[index] = value; resume(); }
-float mdaVocoder::getParameter(LvzInt32 index) { return param[index]; }
-void mdaVocoder::setProgramName(char *name) { strcpy(programName, name); }
-void mdaVocoder::getProgramName(char *name) { strcpy(name, programName); }
-
+void mdaVocoder::setParameter(LvzInt32 index, float value)
+{
+ programs[curProgram].param[index] = value;
+ resume();
+}
+float mdaVocoder::getParameter(LvzInt32 index) { return programs[curProgram].param[index]; }
+void mdaVocoder::setProgramName(char *name) { strcpy(programs[curProgram].name, name); }
+void mdaVocoder::getProgramName(char *name) { strcpy(name, programs[curProgram].name); }
+bool mdaVocoder::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if ((unsigned int)index < NPROGS)
+ {
+ strcpy(name, programs[index].name);
+ return true;
+ }
+ return false;
+}
void mdaVocoder::getParameterName(LvzInt32 index, char *label)
{
@@ -197,6 +205,7 @@ void mdaVocoder::getParameterName(LvzInt32 index, char *label)
void mdaVocoder::getParameterDisplay(LvzInt32 index, char *text)
{
char string[16];
+ float * param = programs[curProgram].param;
switch(index)
{
@@ -235,7 +244,7 @@ void mdaVocoder::process(float **inputs, float **outputs, LvzInt32 sampleFrames)
float *out1 = outputs[0];
float *out2 = outputs[1];
float a, b, c, d, o=0.0f, aa, bb, oo=kout, g=gain, ht=thru, hh=high, tmp;
- long i, k=kval, sw=swap, nb=nbnd;
+ LvzInt32 i, k=kval, sw=swap, nb=nbnd;
--in1;
--in2;
@@ -313,7 +322,7 @@ void mdaVocoder::processReplacing(float **inputs, float **outputs, LvzInt32 samp
float *out1 = outputs[0];
float *out2 = outputs[1];
float a, b, o=0.0f, aa, bb, oo=kout, g=gain, ht=thru, hh=high, tmp;
- long i, k=kval, sw=swap, nb=nbnd;
+ LvzInt32 i, k=kval, sw=swap, nb=nbnd;
--in1;
--in2;