aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/mdaAmbience.cpp30
-rw-r--r--src/mdaAmbience.h3
-rw-r--r--src/mdaBandisto.cpp10
-rw-r--r--src/mdaBandisto.h1
-rw-r--r--src/mdaBeatBox.cpp56
-rw-r--r--src/mdaBeatBox.h9
-rw-r--r--src/mdaCombo.cpp26
-rw-r--r--src/mdaCombo.h3
-rw-r--r--src/mdaDX10.cpp50
-rw-r--r--src/mdaDX10.h15
-rw-r--r--src/mdaDegrade.cpp28
-rw-r--r--src/mdaDegrade.h1
-rw-r--r--src/mdaDelay.cpp32
-rw-r--r--src/mdaDelay.h3
-rw-r--r--src/mdaDetune.cpp51
-rw-r--r--src/mdaDetune.h9
-rw-r--r--src/mdaDither.cpp42
-rw-r--r--src/mdaDither.h3
-rw-r--r--src/mdaDubDelay.cpp32
-rw-r--r--src/mdaDubDelay.h3
-rw-r--r--src/mdaDynamics.cpp34
-rw-r--r--src/mdaDynamics.h1
-rw-r--r--src/mdaEPiano.cpp77
-rw-r--r--src/mdaEPiano.h39
-rw-r--r--src/mdaImage.cpp22
-rw-r--r--src/mdaImage.h1
-rw-r--r--src/mdaJX10.cpp61
-rw-r--r--src/mdaJX10.h17
-rw-r--r--src/mdaLeslie.cpp192
-rw-r--r--src/mdaLeslie.h24
-rw-r--r--src/mdaLimiter.cpp22
-rw-r--r--src/mdaLimiter.h1
-rw-r--r--src/mdaLooplex.cpp130
-rw-r--r--src/mdaLooplex.h9
-rw-r--r--src/mdaLoudness.cpp39
-rw-r--r--src/mdaLoudness.h7
-rw-r--r--src/mdaMultiBand.cpp42
-rw-r--r--src/mdaMultiBand.h1
-rw-r--r--src/mdaOverdrive.cpp26
-rw-r--r--src/mdaOverdrive.h1
-rw-r--r--src/mdaPiano.cpp68
-rw-r--r--src/mdaPiano.h36
-rw-r--r--src/mdaRezFilter.cpp26
-rw-r--r--src/mdaRezFilter.h1
-rw-r--r--src/mdaRingMod.cpp18
-rw-r--r--src/mdaRingMod.h1
-rw-r--r--src/mdaRoundPan.cpp16
-rw-r--r--src/mdaRoundPan.h3
-rw-r--r--src/mdaShepard.cpp20
-rw-r--r--src/mdaShepard.h3
-rw-r--r--src/mdaSpecMeter.cpp54
-rw-r--r--src/mdaSpecMeter.h17
-rw-r--r--src/mdaSpecMeterGUI.cpp147
-rw-r--r--src/mdaSpecMeterGUI.h87
-rw-r--r--src/mdaSplitter.cpp36
-rw-r--r--src/mdaSplitter.h7
-rw-r--r--src/mdaStereo.cpp20
-rw-r--r--src/mdaStereo.h3
-rw-r--r--src/mdaSubSynth.cpp18
-rw-r--r--src/mdaSubSynth.h1
-rw-r--r--src/mdaTalkBox.cpp36
-rw-r--r--src/mdaTalkBox.h6
-rw-r--r--src/mdaTestTone.cpp126
-rw-r--r--src/mdaTestTone.h3
-rw-r--r--src/mdaThruZero.cpp30
-rw-r--r--src/mdaThruZero.h7
-rw-r--r--src/mdaTracker.cpp34
-rw-r--r--src/mdaTracker.h3
-rw-r--r--src/mdaTransient.cpp24
-rw-r--r--src/mdaTransient.h1
-rw-r--r--src/mdaVocInput.cpp45
-rw-r--r--src/mdaVocInput.h9
-rw-r--r--src/mdaVocoder.cpp39
-rw-r--r--src/mdaVocoder.h11
74 files changed, 1194 insertions, 915 deletions
diff --git a/src/mdaAmbience.cpp b/src/mdaAmbience.cpp
index 5794046..dbb50c6 100644
--- a/src/mdaAmbience.cpp
+++ b/src/mdaAmbience.cpp
@@ -92,6 +92,16 @@ void mdaAmbience::getProgramName(char *name)
strcpy(name, programName);
}
+bool mdaAmbience::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if (index == 0)
+ {
+ strcpy(name, programName);
+ return true;
+ }
+ return false;
+}
+
float mdaAmbience::getParameter(LvzInt32 index)
{
float v=0;
@@ -150,14 +160,14 @@ void mdaAmbience::process(float **inputs, float **outputs, LvzInt32 sampleFrames
float *out2 = outputs[1];
float a, b, c, d, r;
float t, f=fil, fb=fbak, dmp=damp, y=dry, w=wet;
- long p=pos, d1, d2, d3, d4;
+ LvzInt32 p=pos, d1, d2, d3, d4;
if(rdy==0) suspend();
- d1 = (p + (long)(107 * size)) & 1023;
- d2 = (p + (long)(142 * size)) & 1023;
- d3 = (p + (long)(277 * size)) & 1023;
- d4 = (p + (long)(379 * size)) & 1023;
+ d1 = (p + (LvzInt32)(107 * size)) & 1023;
+ d2 = (p + (LvzInt32)(142 * size)) & 1023;
+ d3 = (p + (LvzInt32)(277 * size)) & 1023;
+ d4 = (p + (LvzInt32)(379 * size)) & 1023;
--in1;
--in2;
@@ -218,14 +228,14 @@ void mdaAmbience::processReplacing(float **inputs, float **outputs, LvzInt32 sam
float *out2 = outputs[1];
float a, b, r;
float t, f=fil, fb=fbak, dmp=damp, y=dry, w=wet;
- long p=pos, d1, d2, d3, d4;
+ LvzInt32 p=pos, d1, d2, d3, d4;
if(rdy==0) suspend();
- d1 = (p + (long)(107 * size)) & 1023;
- d2 = (p + (long)(142 * size)) & 1023;
- d3 = (p + (long)(277 * size)) & 1023;
- d4 = (p + (long)(379 * size)) & 1023;
+ d1 = (p + (LvzInt32)(107 * size)) & 1023;
+ d2 = (p + (LvzInt32)(142 * size)) & 1023;
+ d3 = (p + (LvzInt32)(277 * size)) & 1023;
+ d4 = (p + (LvzInt32)(379 * size)) & 1023;
--in1;
--in2;
diff --git a/src/mdaAmbience.h b/src/mdaAmbience.h
index 97d2fe5..3ac309d 100644
--- a/src/mdaAmbience.h
+++ b/src/mdaAmbience.h
@@ -13,6 +13,7 @@ public:
virtual void processReplacing(float **inputs, float **outputs, LvzInt32 sampleFrames);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
@@ -34,7 +35,7 @@ protected:
float *buf1, *buf2, *buf3, *buf4;
float fil, fbak, damp, wet, dry, size;
- long pos, den, rdy;
+ LvzInt32 pos, den, rdy;
char programName[32];
};
diff --git a/src/mdaBandisto.cpp b/src/mdaBandisto.cpp
index c4e4cee..87a1f92 100644
--- a/src/mdaBandisto.cpp
+++ b/src/mdaBandisto.cpp
@@ -82,6 +82,16 @@ void mdaBandisto::getProgramName(char *name)
strcpy(name, programName);
}
+bool mdaBandisto::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if (index == 0)
+ {
+ strcpy(name, programName);
+ return true;
+ }
+ return false;
+}
+
void mdaBandisto::setParameter(LvzInt32 index, float value)
{
switch(index)
diff --git a/src/mdaBandisto.h b/src/mdaBandisto.h
index f988ec5..c2cb1aa 100644
--- a/src/mdaBandisto.h
+++ b/src/mdaBandisto.h
@@ -13,6 +13,7 @@ public:
virtual void processReplacing(float **inputs, float **outputs, LvzInt32 sampleFrames);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
diff --git a/src/mdaBeatBox.cpp b/src/mdaBeatBox.cpp
index 69ac090..94b02aa 100644
--- a/src/mdaBeatBox.cpp
+++ b/src/mdaBeatBox.cpp
@@ -42,11 +42,11 @@ mdaBeatBox::mdaBeatBox(audioMasterCallback audioMaster) : AudioEffectX(audioMast
//calcs here
hthr = (float)pow(10.f, 2.f * fParam1 - 2.f);
- hdel = (long)((0.04 + 0.20 * fParam2) * getSampleRate());
+ hdel = (LvzInt32)((0.04 + 0.20 * fParam2) * getSampleRate());
sthr = (float)(40.0 * pow(10.f, 2.f * fParam7 - 2.f));
- sdel = (long)(0.12 * getSampleRate());
+ sdel = (LvzInt32)(0.12 * getSampleRate());
kthr = (float)(220.0 * pow(10.f, 2.f * fParam4 - 2.f));
- kdel = (long)(0.10 * getSampleRate());
+ kdel = (LvzInt32)(0.10 * getSampleRate());
hlev = (float)(0.0001f + fParam3 * fParam3 * 4.f);
klev = (float)(0.0001f + fParam6 * fParam6 * 4.f);
@@ -83,6 +83,16 @@ void mdaBeatBox::getProgramName(char *name)
strcpy(name, programName);
}
+bool mdaBeatBox::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if (index == 0)
+ {
+ strcpy(name, programName);
+ return true;
+ }
+ return false;
+}
+
void mdaBeatBox::setParameter(LvzInt32 index, float value)
{
switch(index)
@@ -102,7 +112,7 @@ void mdaBeatBox::setParameter(LvzInt32 index, float value)
}
//calcs here
hthr = (float)pow(10.f, 2.f * fParam1 - 2.f);
- hdel = (long)((0.04 + 0.20 * fParam2) * getSampleRate());
+ hdel = (LvzInt32)((0.04 + 0.20 * fParam2) * getSampleRate());
sthr = (float)(40.0 * pow(10.f, 2.f * fParam7 - 2.f));
kthr = (float)(220.0 * pow(10.f, 2.f * fParam4 - 2.f));
@@ -121,10 +131,10 @@ void mdaBeatBox::setParameter(LvzInt32 index, float value)
ksf1 = (float)cos(3.1415927 * kww); //p
ksf2 = (float)sin(3.1415927 * kww); //q
- if(wwx != ww) sfx = (long)(2 * getSampleRate());
- if(kwwx != kww) ksfx = (long)(2 * getSampleRate());
+ if(wwx != ww) sfx = (LvzInt32)(2 * getSampleRate());
+ if(kwwx != kww) ksfx = (LvzInt32)(2 * getSampleRate());
- rec = (long)(4.9 * fParam11);
+ rec = (LvzInt32)(4.9 * fParam11);
if ((rec!=recx) && (recpos>0)) //finish sample
{
switch(rec)
@@ -154,7 +164,7 @@ void mdaBeatBox::suspend()
void mdaBeatBox::synth()
{
- long t;
+ LvzInt32 t;
float e=0.00012f, de, o, o1=0.f, o2=0.f, p=0.2f, dp;
memset(hbuf, 0, hbuflen * sizeof(float)); //generate hi-hat
@@ -229,7 +239,7 @@ void mdaBeatBox::getParameterName(LvzInt32 index, char *label)
}
#include <stdio.h>
-void long2string(long value, char *string) { sprintf(string, "%ld", value); }
+void int2strng(LvzInt32 value, char *string) { sprintf(string, "%d", value); }
void float2strng(float value, char *string) { sprintf(string, "%.2f", value); }
void mdaBeatBox::getParameterDisplay(LvzInt32 index, char *text)
@@ -237,16 +247,16 @@ void mdaBeatBox::getParameterDisplay(LvzInt32 index, char *text)
switch(index)
{
case 0: float2strng((float)(40.0*fParam1 - 40.0),text); break;
- case 1: long2string((long)(1000.f * hdel / getSampleRate()),text); break;
- case 2: long2string((long)(20.f * log10(hlev)),text); break;
+ case 1: int2strng((LvzInt32)(1000.f * hdel / getSampleRate()),text); break;
+ case 2: int2strng((LvzInt32)(20.f * log10(hlev)),text); break;
case 3: float2strng((float)(40.0*fParam4 - 40.0),text); break;
- case 4: long2string((long)(0.5 * kww * getSampleRate()), text); break;
- case 5: long2string((long)(20.f * log10(klev)),text); break;
+ case 4: int2strng((LvzInt32)(0.5 * kww * getSampleRate()), text); break;
+ case 5: int2strng((LvzInt32)(20.f * log10(klev)),text); break;
case 6: float2strng((float)(40.0*fParam7 - 40.0),text); break;
- case 7: long2string((long)(0.5 * ww * getSampleRate()), text); break;
- case 8: long2string((long)(20.f * log10(slev)),text); break;
- case 9: long2string((long)(100.f * fParam10),text); break;
- case 11: long2string((long)(20.f * log10(fParam12)),text); break;
+ case 7: int2strng((LvzInt32)(0.5 * ww * getSampleRate()), text); break;
+ case 8: int2strng((LvzInt32)(20.f * log10(slev)),text); break;
+ case 9: int2strng((LvzInt32)(100.f * fParam10),text); break;
+ case 11: int2strng((LvzInt32)(20.f * log10(fParam12)),text); break;
case 10: switch(rec)
{ case 0: strcpy(text, "-"); break;
@@ -286,13 +296,13 @@ void mdaBeatBox::process(float **inputs, float **outputs, LvzInt32 sampleFrames)
float *out1 = outputs[0];
float *out2 = outputs[1];
float a, b, c, d, e, o, hf=hfil, ht=hthr, mx3=0.f, mx1=mix;
- long hp=hbufpos, hl=hbuflen-2, hd=hdel;
+ LvzInt32 hp=hbufpos, hl=hbuflen-2, hd=hdel;
float kt=kthr;
- long kp=kbufpos, kl=kbuflen-2, kd=kdel;
+ LvzInt32 kp=kbufpos, kl=kbuflen-2, kd=kdel;
float st=sthr, s, f1=sb1, f2=sb2, b1=sf1, b2=sf2, b3=sf3;
float k, kf1=ksb1, kf2=ksb2, kb1=ksf1, kb2=ksf2;
float hlv=hlev, klv=klev, slv=slev;
- long sp=sbufpos, sl=sbuflen-2, sd=sdel;
+ LvzInt32 sp=sbufpos, sl=sbuflen-2, sd=sdel;
float ya=dyna, yr=dynr, ye=dyne, ym=dynm, mx4;
if(sfx>0) { mx3=0.08f; slv=0.f; klv=0.f; hlv=0.f; mx1=0.f; sfx-=sampleFrames;} //key listen (snare)
@@ -381,13 +391,13 @@ void mdaBeatBox::processReplacing(float **inputs, float **outputs, LvzInt32 samp
float *out1 = outputs[0];
float *out2 = outputs[1];
float a, b, e, o, hf=hfil, ht=hthr, mx3=0.f, mx1=mix;
- long hp=hbufpos, hl=hbuflen-2, hd=hdel;
+ LvzInt32 hp=hbufpos, hl=hbuflen-2, hd=hdel;
float kt=kthr;
- long kp=kbufpos, kl=kbuflen-2, kd=kdel;
+ LvzInt32 kp=kbufpos, kl=kbuflen-2, kd=kdel;
float st=sthr, s, f1=sb1, f2=sb2, b1=sf1, b2=sf2, b3=sf3;
float k, kf1=ksb1, kf2=ksb2, kb1=ksf1, kb2=ksf2;
float hlv=hlev, klv=klev, slv=slev;
- long sp=sbufpos, sl=sbuflen-2, sd=sdel;
+ LvzInt32 sp=sbufpos, sl=sbuflen-2, sd=sdel;
float ya=dyna, yr=dynr, ye=dyne, ym=dynm, mx4;
if(sfx>0) { mx3=0.08f; slv=0.f; klv=0.f; hlv=0.f; mx1=0.f; sfx-=sampleFrames;} //key listen (snare)
diff --git a/src/mdaBeatBox.h b/src/mdaBeatBox.h
index 7e48731..07b5fa4 100644
--- a/src/mdaBeatBox.h
+++ b/src/mdaBeatBox.h
@@ -13,6 +13,7 @@ public:
virtual void processReplacing(float **inputs, float **outputs, LvzInt32 sampleFrames);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
@@ -48,10 +49,10 @@ protected:
float *hbuf;
float *kbuf;
float *sbuf, *sbuf2;
- long hbuflen, hbufpos, hdel;
- long sbuflen, sbufpos, sdel, sfx;
- long kbuflen, kbufpos, kdel, ksfx;
- long rec, recx, recpos;
+ LvzInt32 hbuflen, hbufpos, hdel;
+ LvzInt32 sbuflen, sbufpos, sdel, sfx;
+ LvzInt32 kbuflen, kbufpos, kdel, ksfx;
+ LvzInt32 rec, recx, recpos;
char programName[32];
};
diff --git a/src/mdaCombo.cpp b/src/mdaCombo.cpp
index b23c9b9..da49c19 100644
--- a/src/mdaCombo.cpp
+++ b/src/mdaCombo.cpp
@@ -162,6 +162,16 @@ void mdaCombo::getProgramName(char *name)
strcpy(name, programName);
}
+bool mdaCombo::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if (index == 0)
+ {
+ strcpy(name, programName);
+ return true;
+ }
+ return false;
+}
+
float mdaCombo::getParameter(LvzInt32 index)
{
float v=0;
@@ -194,7 +204,7 @@ void mdaCombo::getParameterName(LvzInt32 index, char *label)
}
#include <stdio.h>
-void long2string(long value, char *string) { sprintf(string, "%ld", value); }
+void int2strng(LvzInt32 value, char *string) { sprintf(string, "%d", value); }
void float2strng(float value, char *string) { sprintf(string, "%.2f", value); }
void mdaCombo::getParameterDisplay(LvzInt32 index, char *text)
@@ -213,13 +223,13 @@ void mdaCombo::getParameterDisplay(LvzInt32 index, char *text)
case 6: strcpy(text, "4x12 >"); break;
} break;
- case 1: long2string((long)(200 * fParam2 - 100), text); break;
- case 2: long2string((long)(200 * fParam3 - 100), text); break;
- case 3: long2string((long)(40 * fParam4 - 20), text); break;
+ case 1: int2strng((LvzInt32)(200 * fParam2 - 100), text); break;
+ case 2: int2strng((LvzInt32)(200 * fParam3 - 100), text); break;
+ case 3: int2strng((LvzInt32)(40 * fParam4 - 20), text); break;
case 4: if(fParam5>0.5) strcpy(text, "STEREO");
else strcpy(text, "MONO"); break;
- case 5: long2string((long)(100 * fParam6), text); break;
- case 6: long2string((long)(100 * fParam7), text); break;
+ case 5: int2strng((LvzInt32)(100 * fParam6), text); break;
+ case 6: int2strng((LvzInt32)(100 * fParam7), text); break;
}
}
@@ -251,7 +261,7 @@ void mdaCombo::process(float **inputs, float **outputs, LvzInt32 sampleFrames)
float f1=ff1, f2=ff2, f3=ff3, f4=ff4, f5=ff5;
float a2, b2, f6=ff6, f7=ff7, f8=ff8, f9=ff9, f10=ff10;
float h0=hh0, h1=hh1;
- long d1=del1, d2=del2, bp = bufpos;
+ LvzInt32 d1=del1, d2=del2, bp = bufpos;
trm = trim * i * i * i * i;
@@ -376,7 +386,7 @@ void mdaCombo::processReplacing(float **inputs, float **outputs, LvzInt32 sample
float f1=ff1, f2=ff2, f3=ff3, f4=ff4, f5=ff5;
float a2, b2, f6=ff6, f7=ff7, f8=ff8, f9=ff9, f10=ff10;
float hf=hhf, hq=hhq, h0=hh0, h1=hh1;
- long d1=del1, d2=del2, bp = bufpos;
+ LvzInt32 d1=del1, d2=del2, bp = bufpos;
trm = trim * i * i * i * i;
diff --git a/src/mdaCombo.h b/src/mdaCombo.h
index 1909a3d..833f105 100644
--- a/src/mdaCombo.h
+++ b/src/mdaCombo.h
@@ -13,6 +13,7 @@ public:
virtual void processReplacing(float **inputs, float **outputs, LvzInt32 sampleFrames);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
@@ -41,7 +42,7 @@ protected:
float hhf, hhq, hh0, hh1; //hpf
float *buffer, *buffe2;
- long size, bufpos, del1, del2;
+ LvzInt32 size, bufpos, del1, del2;
int mode, ster;
char programName[32];
diff --git a/src/mdaDX10.cpp b/src/mdaDX10.cpp
index 8a0d60f..2e911c4 100644
--- a/src/mdaDX10.cpp
+++ b/src/mdaDX10.cpp
@@ -18,7 +18,7 @@ AudioEffect *createEffectInstance(audioMasterCallback audioMaster)
mdaDX10::mdaDX10(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, NPROGS, NPARAMS)
{
- long i=0;
+ LvzInt32 i=0;
Fs = 44100.0f;
programs = new mdaDX10Program[NPROGS];
@@ -93,6 +93,7 @@ mdaDX10::mdaDX10(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, NP
void mdaDX10::update() //parameter change //if multitimbral would have to move all this...
{
float ifs = 1.0f / Fs;
+ float * param = programs[curProgram].param;
tune = (float)(8.175798915644 * ifs * pow(2.0, floor(param[11] * 6.9) - 2.0));
@@ -101,7 +102,7 @@ void mdaDX10::update() //parameter change //if multitimbral would have to move
if(param[4]<0.5f)
ratf = 0.2f * param[4] * param[4];
else
- switch((long)(8.9f * param[4]))
+ switch((LvzInt32)(8.9f * param[4]))
{
case 4: ratf = 0.25f; break;
case 5: ratf = 0.33333333f; break;
@@ -154,24 +155,19 @@ mdaDX10::~mdaDX10 () //destroy any buffers...
void mdaDX10::setProgram(LvzInt32 program)
{
- long i;
-
- mdaDX10Program *p = &programs[program];
curProgram = program;
- for(i=0; i<NPARAMS; i++) param[i] = p->param[i];
- update();
+ update();
}
void mdaDX10::setParameter(LvzInt32 index, float value)
{
- mdaDX10Program *p = &programs[curProgram];
- param[index] = p->param[index] = value;
+ programs[curProgram].param[index] = value;
update();
}
-void mdaDX10::fillpatch(long p, const char *name,
+void mdaDX10::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,
float p12, float p13, float p14, float p15)
@@ -188,7 +184,7 @@ void mdaDX10::fillpatch(long p, const char *name,
}
-float mdaDX10::getParameter(LvzInt32 index) { return param[index]; }
+float mdaDX10::getParameter(LvzInt32 index) { return programs[curProgram].param[index]; }
void mdaDX10::setProgramName(char *name) { strcpy(programs[curProgram].name, name); }
void mdaDX10::getProgramName(char *name) { strcpy(name, programs[curProgram].name); }
void mdaDX10::setBlockSize(LvzInt32 blockSize) { AudioEffectX::setBlockSize(blockSize); }
@@ -212,7 +208,7 @@ bool mdaDX10::getOutputProperties(LvzInt32 index, LvzPinProperties* properties)
bool mdaDX10::getProgramNameIndexed(LvzInt32 category, LvzInt32 index, char* text)
{
- if(index<NPROGS)
+ if ((unsigned int)index < NPROGS)
{
strcpy(text, programs[index].name);
return true;
@@ -267,12 +263,13 @@ void mdaDX10::getParameterName(LvzInt32 index, char *label)
void mdaDX10::getParameterDisplay(LvzInt32 index, char *text)
{
char string[16];
+ float * param = programs[curProgram].param;
switch(index)
{
case 3: sprintf(string, "%.0f", rati); break;
case 4: sprintf(string, "%.3f", ratf); break;
- case 11: sprintf(string, "%ld", (long)(param[index] * 6.9f) - 3); break;
+ case 11: sprintf(string, "%d", (LvzInt32)(param[index] * 6.9f) - 3); break;
case 12: sprintf(string, "%.0f", 200.0f * param[index] - 100.0f); break;
case 15: sprintf(string, "%.2f", 25.0f * param[index] * param[index]); break;
default: sprintf(string, "%.0f", 100.0f * param[index]);
@@ -300,9 +297,9 @@ void mdaDX10::process(float **inputs, float **outputs, LvzInt32 sampleFrames)
{
float* out1 = outputs[0];
float* out2 = outputs[1];
- long event=0, frame=0, frames, v;
+ LvzInt32 event=0, frame=0, frames, v;
float o, x, e, mw=MW, w=rich, m=modmix;
- long k=K;
+ LvzInt32 k=K;
if(activevoices>0 || notes[event]<sampleFrames) //detect & bypass completely empty blocks
{
@@ -353,8 +350,8 @@ void mdaDX10::process(float **inputs, float **outputs, LvzInt32 sampleFrames)
if(frame<sampleFrames) //next note on/off
{
- long note = notes[event++];
- long vel = notes[event++];
+ LvzInt32 note = notes[event++];
+ LvzInt32 vel = notes[event++];
noteOn(note, vel);
}
}
@@ -380,9 +377,9 @@ void mdaDX10::processReplacing(float **inputs, float **outputs, LvzInt32 sampleF
{
float* out1 = outputs[0];
float* out2 = outputs[1];
- long event=0, frame=0, frames, v;
+ LvzInt32 event=0, frame=0, frames, v;
float o, x, e, mw=MW, w=rich, m=modmix;
- long k=K;
+ LvzInt32 k=K;
if(activevoices>0 || notes[event]<sampleFrames) //detect & bypass completely empty blocks
{
@@ -437,8 +434,8 @@ void mdaDX10::processReplacing(float **inputs, float **outputs, LvzInt32 sampleF
if(frame<sampleFrames) //next note on/off
{
- long note = notes[event++];
- long vel = notes[event++];
+ LvzInt32 note = notes[event++];
+ LvzInt32 vel = notes[event++];
noteOn(note, vel);
}
}
@@ -467,10 +464,11 @@ void mdaDX10::processReplacing(float **inputs, float **outputs, LvzInt32 sampleF
}
-void mdaDX10::noteOn(long note, long velocity)
+void mdaDX10::noteOn(LvzInt32 note, LvzInt32 velocity)
{
+ float * param = programs[curProgram].param;
float l = 1.0f;
- long v, vl=0;
+ LvzInt32 v, vl=0;
if(velocity>0)
{
@@ -520,9 +518,9 @@ void mdaDX10::noteOn(long note, long velocity)
LvzInt32 mdaDX10::processEvents(LvzEvents* ev)
{
- long npos=0;
+ LvzInt32 npos=0;
- for (long i=0; i<ev->numEvents; i++)
+ for (LvzInt32 i=0; i<ev->numEvents; i++)
{
if((ev->events[i])->type != kLvzMidiType) continue;
LvzMidiEvent* event = (LvzMidiEvent*)ev->events[i];
@@ -566,7 +564,7 @@ LvzInt32 mdaDX10::processEvents(LvzEvents* ev)
default: //all notes off
if(midiData[1]>0x7A)
{
- for(long v=0; v<NVOICES; v++) voice[v].cdec=0.99f;
+ for(LvzInt32 v=0; v<NVOICES; v++) voice[v].cdec=0.99f;
sustain = 0;
}
break;
diff --git a/src/mdaDX10.h b/src/mdaDX10.h
index 1041e31..2de75a3 100644
--- a/src/mdaDX10.h
+++ b/src/mdaDX10.h
@@ -16,10 +16,6 @@
class mdaDX10Program
{
friend class mdaDX10;
-public:
- mdaDX10Program() {}
- ~mdaDX10Program() {}
-
private:
float param[NPARAMS];
char name[24];
@@ -40,7 +36,7 @@ struct VOICE //voice state
float cenv; //smoothed env
float catt; //smoothing
float cdec; //carrier envelope decay
- long note; //remember what note triggered this
+ LvzInt32 note; //remember what note triggered this
};
@@ -79,24 +75,23 @@ public:
private:
void update(); //my parameter update
- void noteOn(long note, long velocity);
- void fillpatch(long p, const char *name,
+ void noteOn(LvzInt32 note, LvzInt32 velocity);
+ void 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,
float p12, float p13, float p14, float p15);
- float param[NPARAMS];
mdaDX10Program* programs;
float Fs;
#define EVENTBUFFER 120
#define EVENTS_DONE 99999999
- long notes[EVENTBUFFER + 8]; //list of delta|note|velocity for current block
+ LvzInt32 notes[EVENTBUFFER + 8]; //list of delta|note|velocity for current block
///global internal variables
VOICE voice[NVOICES];
#define SUSTAIN 128
- long sustain, activevoices, K;
+ LvzInt32 sustain, activevoices, K;
float tune, rati, ratf, ratio; //modulator ratio
float catt, cdec, crel; //carrier envelope
diff --git a/src/mdaDegrade.cpp b/src/mdaDegrade.cpp
index c6f2806..fdf276d 100644
--- a/src/mdaDegrade.cpp
+++ b/src/mdaDegrade.cpp
@@ -24,8 +24,8 @@ mdaDegrade::mdaDegrade(audioMasterCallback audioMaster) : AudioEffectX(audioMast
DECLARE_LVZ_DEPRECATED(canMono) ();
canProcessReplacing();
strcpy(programName, "Degrade");
-
- buf0 = buf1 = buf2 = buf3 = buf4 = buf5 = buf6 = buf7 = buf8 = buf9 = 0.0f;
+
+ buf0 = buf1 = buf2 = buf3 = buf4 = buf5 = buf6 = buf7 = buf8 = buf9 = 0.0f;
setParameter(5, 0.5f);
}
@@ -94,6 +94,16 @@ void mdaDegrade::getProgramName(char *name)
strcpy(name, programName);
}
+bool mdaDegrade::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if (index == 0)
+ {
+ strcpy(name, programName);
+ return true;
+ }
+ return false;
+}
+
float mdaDegrade::getParameter(LvzInt32 index)
{
float v=0;
@@ -124,18 +134,18 @@ void mdaDegrade::getParameterName(LvzInt32 index, char *label)
}
#include <stdio.h>
-void long2string(long value, char *string) { sprintf(string, "%ld", value); }
+void int2strng(LvzInt32 value, char *string) { sprintf(string, "%d", value); }
void mdaDegrade::getParameterDisplay(LvzInt32 index, char *text)
{
switch(index)
{
- case 0: long2string((long)(-30.0 * (1.0 - fParam1)), text); break;
- case 1: long2string((long)(4.0 + 12.0 * fParam2), text); break;
- case 2: long2string((long)(getSampleRate()/tn), text); break;
- case 3: long2string((long)pow(10.0f, 2.30104f + 2.f*fParam4), text); break;
- case 4: long2string((long)(200.0 * fabs(fParam5 - 0.5)), text); break;
- case 5: long2string((long)(40.0 * fParam6 - 20.0), text); break;
+ case 0: int2strng((LvzInt32)(-30.0 * (1.0 - fParam1)), text); break;
+ case 1: int2strng((LvzInt32)(4.0 + 12.0 * fParam2), text); break;
+ case 2: int2strng((LvzInt32)(getSampleRate()/tn), text); break;
+ case 3: int2strng((LvzInt32)pow(10.0f, 2.30104f + 2.f*fParam4), text); break;
+ case 4: int2strng((LvzInt32)(200.0 * fabs(fParam5 - 0.5)), text); break;
+ case 5: int2strng((LvzInt32)(40.0 * fParam6 - 20.0), text); break;
}
}
diff --git a/src/mdaDegrade.h b/src/mdaDegrade.h
index c91e135..b9fba94 100644
--- a/src/mdaDegrade.h
+++ b/src/mdaDegrade.h
@@ -13,6 +13,7 @@ public:
virtual void processReplacing(float **inputs, float **outputs, LvzInt32 sampleFrames);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
diff --git a/src/mdaDelay.cpp b/src/mdaDelay.cpp
index 6780679..233251e 100644
--- a/src/mdaDelay.cpp
+++ b/src/mdaDelay.cpp
@@ -52,7 +52,7 @@ void mdaDelay::setParameter(LvzInt32 index, float value)
case 5: fParam5 = value; break;
}
//calcs here
- ldel = (long)(size * fParam0 * fParam0);
+ ldel = (LvzInt32)(size * fParam0 * fParam0);
if(ldel<4) ldel=4;
switch(int(fParam1 * 17.9f)) //fixed left/right ratios
@@ -68,7 +68,7 @@ void mdaDelay::setParameter(LvzInt32 index, float value)
case 9: tmp = 2.0000f; break;
default: tmp = 4.0f * fParam1; break; //variable ratio
}
- rdel = (long)(size * fParam0 * fParam0 * tmp);
+ rdel = (LvzInt32)(size * fParam0 * fParam0 * tmp);
if(rdel>size) rdel=size;
if(rdel<4) rdel=4;
@@ -115,6 +115,16 @@ void mdaDelay::getProgramName(char *name)
strcpy(name, programName);
}
+bool mdaDelay::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if (index == 0)
+ {
+ strcpy(name, programName);
+ return true;
+ }
+ return false;
+}
+
float mdaDelay::getParameter(LvzInt32 index)
{
float v=0;
@@ -145,18 +155,18 @@ void mdaDelay::getParameterName(LvzInt32 index, char *label)
}
#include <stdio.h>
-void long2string(long value, char *string) { sprintf(string, "%ld", value); }
+void int2strng(LvzInt32 value, char *string) { sprintf(string, "%d", value); }
void mdaDelay::getParameterDisplay(LvzInt32 index, char *text)
{
switch(index)
{
- case 0: long2string((long)(ldel * 1000.0f / getSampleRate()), text); break;
- case 1: long2string((long)(100 * rdel / ldel), text); break;
- case 2: long2string((long)(99 * fParam2), text); break;
- case 3: long2string((long)(200 * fParam3 - 100), text); break;
- case 4: long2string((long)(100 * fParam4), text); break;
- case 5: long2string((long)(20 * log10(2.0 * fParam5)), text); break;
+ case 0: int2strng((LvzInt32)(ldel * 1000.0f / getSampleRate()), text); break;
+ case 1: int2strng((LvzInt32)(100 * rdel / ldel), text); break;
+ case 2: int2strng((LvzInt32)(99 * fParam2), text); break;
+ case 3: int2strng((LvzInt32)(200 * fParam3 - 100), text); break;
+ case 4: int2strng((LvzInt32)(100 * fParam4), text); break;
+ case 5: int2strng((LvzInt32)(20 * log10(2.0 * fParam5)), text); break;
}
}
@@ -182,7 +192,7 @@ void mdaDelay::process(float **inputs, float **outputs, LvzInt32 sampleFrames)
float *out2 = outputs[1];
float a, b, c, d, ol, or_, w=wet, y=dry, fb=fbk;
float lx=lmix, hx=hmix, f=fil, f0=fil0, tmp;
- long i=ipos, l, r, s=size;
+ LvzInt32 i=ipos, l, r, s=size;
l = (i + ldel) % (s + 1);
r = (i + rdel) % (s + 1);
@@ -224,7 +234,7 @@ void mdaDelay::processReplacing(float **inputs, float **outputs, LvzInt32 sample
float *out2 = outputs[1];
float a, b, ol, or_, w=wet, y=dry, fb=fbk;
float lx=lmix, hx=hmix, f=fil, f0=fil0, tmp;
- long i=ipos, l, r, s=size;
+ LvzInt32 i=ipos, l, r, s=size;
l = (i + ldel) % (s + 1);
r = (i + rdel) % (s + 1);
diff --git a/src/mdaDelay.h b/src/mdaDelay.h
index 6682a58..3ce1a61 100644
--- a/src/mdaDelay.h
+++ b/src/mdaDelay.h
@@ -13,6 +13,7 @@ public:
virtual void processReplacing(float **inputs, float **outputs, LvzInt32 sampleFrames);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
@@ -35,7 +36,7 @@ protected:
float fParam6;
float *buffer; //delay
- long size, ipos, ldel, rdel; //delay max time, pointer, left time, right time
+ LvzInt32 size, ipos, ldel, rdel; //delay max time, pointer, left time, right time
float wet, dry, fbk; //wet & dry mix
float lmix, hmix, fil, fil0; //low & high mix, crossover filter coeff & buffer
diff --git a/src/mdaDetune.cpp b/src/mdaDetune.cpp
index 43b6bec..5518d74 100644
--- a/src/mdaDetune.cpp
+++ b/src/mdaDetune.cpp
@@ -30,6 +30,7 @@ bool mdaDetune::getVendorString(char* text) { strcpy(text, "mda"); return true
bool mdaDetune::getEffectName(char* name) { strcpy(name, "Detune"); return true; }
mdaDetune::mdaDetune(audioMasterCallback audioMaster): AudioEffectX(audioMaster, NPROGS, NPARAMS)
+, programs(0), buf(0), win(0)
{
setNumInputs(2);
setNumOutputs(2);
@@ -42,7 +43,7 @@ mdaDetune::mdaDetune(audioMasterCallback audioMaster): AudioEffectX(audioMaster,
win = new float[BUFMAX];
buflen=0;
- programs = new mdaDetuneProgram[numPrograms];
+ programs = new mdaDetuneProgram[NPROGS];
setProgram(0);
///differences from default program...
@@ -59,7 +60,7 @@ mdaDetune::mdaDetune(audioMasterCallback audioMaster): AudioEffectX(audioMaster,
void mdaDetune::resume() ///update internal parameters...
{
- long tmp;
+ float * param = programs[curProgram].param;
semi = 3.0f * param[0] * param[0] * param[0];
dpos2 = (float)pow(1.0594631f, semi);
@@ -69,14 +70,14 @@ void mdaDetune::resume() ///update internal parameters...
dry = wet - wet * param[1] * param[1];
wet = (wet + wet - wet * param[1]) * param[1];
- tmp = 1 << (8 + (long)(4.9f * param[3]));
+ LvzInt32 tmp = 1 << (8 + (LvzInt32)(4.9f * param[3]));
if(tmp!=buflen) //recalculate crossfade window
{
buflen = tmp;
bufres = 1000.0f * (float)buflen / getSampleRate();
- long i; //hanning half-overlap-and-add
+ LvzInt32 i; //hanning half-overlap-and-add
double p=0.0, dp=6.28318530718/buflen;
for(i=0;i<buflen;i++) { win[i] = (float)(0.5 - 0.5 * cos(p)); p+=dp; }
}
@@ -100,26 +101,30 @@ mdaDetune::~mdaDetune() ///destroy any buffers...
void mdaDetune::setProgram(LvzInt32 program)
{
- int i=0;
-
- mdaDetuneProgram *p = &programs[program];
curProgram = program;
- setProgramName(p->name);
- for(i=0; i<NPARAMS; i++) param[i] = p->param[i];
resume();
}
void mdaDetune::setParameter(LvzInt32 index, float value)
{
- programs[curProgram].param[index] = param[index] = value; //bug was here!
+ programs[curProgram].param[index] = value;
resume();
}
-float mdaDetune::getParameter(LvzInt32 index) { return param[index]; }
-void mdaDetune::setProgramName(char *name) { strcpy(programName, name); }
-void mdaDetune::getProgramName(char *name) { strcpy(name, programName); }
+float mdaDetune::getParameter(LvzInt32 index) { return programs[curProgram].param[index]; }
+void mdaDetune::setProgramName(char *name) { strcpy(programs[curProgram].name, name); }
+void mdaDetune::getProgramName(char *name) { strcpy(name, programs[curProgram].name); }
+bool mdaDetune::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if ((unsigned int)index < NPROGS)
+ {
+ strcpy(name, programs[index].name);
+ return true;
+ }
+ return false;
+}
void mdaDetune::getParameterName(LvzInt32 index, char *label)
@@ -140,8 +145,8 @@ void mdaDetune::getParameterDisplay(LvzInt32 index, char *text)
switch(index)
{
- case 1: sprintf(string, "%.0f", 99.0f * param[index]); break;
- case 2: sprintf(string, "%.1f", 40.0f * param[index] - 20.0f); break;
+ case 1: sprintf(string, "%.0f", 99.0f * programs[curProgram].param[index]); break;
+ case 2: sprintf(string, "%.1f", 40.0f * programs[curProgram].param[index] - 20.0f); break;
case 3: sprintf(string, "%.1f", bufres); break;
default: sprintf(string, "%.1f", 100.0f * semi);
}
@@ -171,8 +176,8 @@ void mdaDetune::process(float **inputs, float **outputs, LvzInt32 sampleFrames)
float a, b, c, d;
float x, w=wet, y=dry, p1=pos1, p1f, d1=dpos1;
float p2=pos2, d2=dpos2;
- long p0=pos0, p1i, p2i;
- long l=buflen-1, lh=buflen>>1;
+ LvzInt32 p0=pos0, p1i, p2i;
+ LvzInt32 l=buflen-1, lh=buflen>>1;
float lf = (float)buflen;
--in1;
@@ -194,7 +199,7 @@ void mdaDetune::process(float **inputs, float **outputs, LvzInt32 sampleFrames)
p1 -= d1;
if(p1<0.0f) p1 += lf; //output
- p1i = (long)p1;
+ p1i = (LvzInt32)p1;
p1f = p1 - (float)p1i;
a = *(buf + p1i);
++p1i &= l;
@@ -213,7 +218,7 @@ void mdaDetune::process(float **inputs, float **outputs, LvzInt32 sampleFrames)
p2 -= d2; //repeat for downwards shift - can't see a more efficient way?
if(p2<0.0f) p2 += lf; //output
- p1i = (long)p2;
+ p1i = (LvzInt32)p2;
p1f = p2 - (float)p1i;
a = *(buf + p1i);
++p1i &= l;
@@ -246,8 +251,8 @@ void mdaDetune::processReplacing(float **inputs, float **outputs, LvzInt32 sampl
float a, b, c, d;
float x, w=wet, y=dry, p1=pos1, p1f, d1=dpos1;
float p2=pos2, d2=dpos2;
- long p0=pos0, p1i, p2i;
- long l=buflen-1, lh=buflen>>1;
+ LvzInt32 p0=pos0, p1i, p2i;
+ LvzInt32 l=buflen-1, lh=buflen>>1;
float lf = (float)buflen;
--in1;
@@ -267,7 +272,7 @@ void mdaDetune::processReplacing(float **inputs, float **outputs, LvzInt32 sampl
p1 -= d1;
if(p1<0.0f) p1 += lf; //output
- p1i = (long)p1;
+ p1i = (LvzInt32)p1;
p1f = p1 - (float)p1i;
a = *(buf + p1i);
++p1i &= l;
@@ -286,7 +291,7 @@ void mdaDetune::processReplacing(float **inputs, float **outputs, LvzInt32 sampl
p2 -= d2; //repeat for downwards shift - can't see a more efficient way?
if(p2<0.0f) p2 += lf; //output
- p1i = (long)p2;
+ p1i = (LvzInt32)p2;
p1f = p2 - (float)p1i;
a = *(buf + p1i);
++p1i &= l;
diff --git a/src/mdaDetune.h b/src/mdaDetune.h
index d20f510..10b019b 100644
--- a/src/mdaDetune.h
+++ b/src/mdaDetune.h
@@ -14,8 +14,6 @@ class mdaDetuneProgram
{
public:
mdaDetuneProgram();
- ~mdaDetuneProgram() {}
-
private:
friend class mdaDetune;
float param[NPARAMS];
@@ -34,6 +32,7 @@ public:
virtual void setProgram(LvzInt32 program);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
@@ -48,16 +47,14 @@ public:
virtual LvzInt32 getVendorVersion() { return 1000; }
protected:
- float param[NPARAMS];
- char programName[32];
mdaDetuneProgram *programs;
///global internal variables
float *buf, *win; //buffer, window
- long buflen; //buffer length
+ LvzInt32 buflen; //buffer length
float bufres; //buffer resolution display
float semi; //detune display
- long pos0; //buffer input
+ LvzInt32 pos0; //buffer input
float pos1, dpos1; //buffer output, rate
float pos2, dpos2; //downwards shift
float wet, dry; //ouput levels
diff --git a/src/mdaDither.cpp b/src/mdaDither.cpp
index 94c3a47..41ef831 100644
--- a/src/mdaDither.cpp
+++ b/src/mdaDither.cpp
@@ -63,7 +63,7 @@ void mdaDither::setParameter(LvzInt32 index, float value)
dith = 2.0f * fParam2 / (wlen * (float)32767);
shap=0.0f;
- switch((long)(fParam1*3.9)) //dither mode
+ switch((LvzInt32)(fParam1*3.9)) //dither mode
{
case 0: dith = 0.0f; break; //off
case 3: shap = 0.5f; break; //noise shaping
@@ -90,6 +90,16 @@ void mdaDither::getProgramName(char *name)
strcpy(name, programName);
}
+bool mdaDither::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if (index == 0)
+ {
+ strcpy(name, programName);
+ return true;
+ }
+ return false;
+}
+
float mdaDither::getParameter(LvzInt32 index)
{
float v=0;
@@ -118,15 +128,15 @@ void mdaDither::getParameterName(LvzInt32 index, char *label)
}
#include <stdio.h>
-void long2string(long value, char *string) { sprintf(string, "%ld", value); }
+void int2strng(LvzInt32 value, char *string) { sprintf(string, "%d", value); }
void float2strng(float value, char *string) { sprintf(string, "%.2f", value); }
void mdaDither::getParameterDisplay(LvzInt32 index, char *text)
{
switch(index)
{
- case 0: long2string((long)bits, text); break;
- case 1: switch((long)(fParam1*3.9))
+ case 0: int2strng((LvzInt32)bits, text); break;
+ case 1: switch((LvzInt32)(fParam1*3.9))
{ case 0: strcpy(text, "OFF"); break;
case 1: strcpy(text, "TRI"); break;
case 2: strcpy(text, "HP-TRI"); break;
@@ -136,7 +146,7 @@ void mdaDither::getParameterDisplay(LvzInt32 index, char *text)
case 3: float2strng(4.0f * fParam3 - 2.0f, text); break;
case 4: if(fParam4>0.1f)
if(gain<0.0001f) strcpy(text, "-80");
- else long2string((long)(20.0 * log10(gain)), text);
+ else int2strng((LvzInt32)(20.0 * log10(gain)), text);
else strcpy(text, "OFF"); break;
}
}
@@ -167,9 +177,9 @@ void mdaDither::process(float **inputs, float **outputs, LvzInt32 sampleFrames)
float dl=dith; //dither level
float o=offs, w=wlen, wi=1.0f/wlen; //DC offset, word length & inverse
float g=gain; //gain for Zoom mode
- long r1=rnd1, r2, r3=rnd3, r4; //random numbers for dither
- long m=1; //dither mode
- if((long)(fParam1 * 3.9f)==1) m=0; //what is the fastest if(?)
+ LvzInt32 r1=rnd1, r2, r3=rnd3, r4; //random numbers for dither
+ LvzInt32 m=1; //dither mode
+ if((LvzInt32)(fParam1 * 3.9f)==1) m=0; //what is the fastest if(?)
--in1;
--in2;
@@ -190,14 +200,14 @@ void mdaDither::process(float **inputs, float **outputs, LvzInt32 sampleFrames)
a = g * a + sl * (s1 + s1 - s2);
aa = a + o + dl * (float)(r1 - r2);
if(aa<0.0f) aa-=wi;
- aa = wi * (float)(long)(w * aa);
+ aa = wi * (float)(LvzInt32)(w * aa);
s2 = s1;
s1 = a - aa;
b = g * b + sl * (s3 + s3 - s4);
bb = b + o + dl * (float)(r3 - r4);
if(bb<0.0f) bb-=wi;
- bb = wi * (float)(long)(w * bb);
+ bb = wi * (float)(LvzInt32)(w * bb);
s4 = s3;
s3 = b - bb;
@@ -220,9 +230,9 @@ void mdaDither::processReplacing(float **inputs, float **outputs, LvzInt32 sampl
float dl=dith; //dither level
float o=offs, w=wlen, wi=1.0f/wlen; //DC offset, word length & inverse
float g=gain; //gain for Zoom mode
- long r1=rnd1, r2, r3=rnd3, r4; //random numbers for dither
- long m=1; //dither mode
- if((long)(fParam1 * 3.9f)==1) m=0; //what is the fastest if(?)
+ LvzInt32 r1=rnd1, r2, r3=rnd3, r4; //random numbers for dither
+ LvzInt32 m=1; //dither mode
+ if((LvzInt32)(fParam1 * 3.9f)==1) m=0; //what is the fastest if(?)
--in1;
--in2;
@@ -240,15 +250,15 @@ void mdaDither::processReplacing(float **inputs, float **outputs, LvzInt32 sampl
a = g * a + sl * (s1 + s1 - s2); //target level + error feedback
aa = a + o + dl * (float)(r1 - r2); // + offset + dither
- if(aa<0.0f) aa-=wi; //(long) truncates towards zero!
- aa = wi * (float)(long)(w * aa); //truncate
+ if(aa<0.0f) aa-=wi; //(LvzInt32) truncates towards zero!
+ aa = wi * (float)(LvzInt32)(w * aa); //truncate
s2 = s1;
s1 = a - aa; //error feedback: 2nd order noise shaping
b = g * b + sl * (s3 + s3 - s4);
bb = b + o + dl * (float)(r3 - r4);
if(bb<0.0f) bb-=wi;
- bb = wi * (float)(long)(w * bb);
+ bb = wi * (float)(LvzInt32)(w * bb);
s4 = s3;
s3 = b - bb;
diff --git a/src/mdaDither.h b/src/mdaDither.h
index 80430ea..2a1ee60 100644
--- a/src/mdaDither.h
+++ b/src/mdaDither.h
@@ -13,6 +13,7 @@ public:
virtual void processReplacing(float **inputs, float **outputs, LvzInt32 sampleFrames);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
@@ -33,7 +34,7 @@ protected:
float fParam4;
float dith;
- long rnd1, rnd3;
+ LvzInt32 rnd1, rnd3;
float shap, sh1, sh2, sh3, sh4;
float offs, bits, wlen, gain;
diff --git a/src/mdaDubDelay.cpp b/src/mdaDubDelay.cpp
index d6cc238..c8aafaf 100644
--- a/src/mdaDubDelay.cpp
+++ b/src/mdaDubDelay.cpp
@@ -106,6 +106,16 @@ void mdaDubDelay::getProgramName(char *name)
strcpy(name, programName);
}
+bool mdaDubDelay::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if (index == 0)
+ {
+ strcpy(name, programName);
+ return true;
+ }
+ return false;
+}
+
float mdaDubDelay::getParameter(LvzInt32 index)
{
float v=0;
@@ -138,20 +148,20 @@ void mdaDubDelay::getParameterName(LvzInt32 index, char *label)
}
#include <stdio.h>
-void long2string(long value, char *string) { sprintf(string, "%ld", value); }
+void int2strng(LvzInt32 value, char *string) { sprintf(string, "%d", value); }
void float2strng(float value, char *string) { sprintf(string, "%.2f", value); }
void mdaDubDelay::getParameterDisplay(LvzInt32 index, char *text)
{
switch(index)
{
- case 0: long2string((long)(del * 1000.0f / getSampleRate()), text); break;
- case 1: long2string((long)(220 * fParam1 - 110), text); break;
- case 2: long2string((long)(200 * fParam2 - 100), text); break;
- case 3: long2string((long)(100 * fParam3), text); break;
+ case 0: int2strng((LvzInt32)(del * 1000.0f / getSampleRate()), text); break;
+ case 1: int2strng((LvzInt32)(220 * fParam1 - 110), text); break;
+ case 2: int2strng((LvzInt32)(200 * fParam2 - 100), text); break;
+ case 3: int2strng((LvzInt32)(100 * fParam3), text); break;
case 4: float2strng((float)pow(10.0f, 2.0f - 3.0f * fParam4), text); break;
- case 5: long2string((long)(100 * fParam5), text); break;
- case 6: long2string((long)(20 * log10(2.0 * fParam6)), text); break;
+ case 5: int2strng((LvzInt32)(100 * fParam5), text); break;
+ case 6: int2strng((LvzInt32)(20 * log10(2.0 * fParam6)), text); break;
}
}
@@ -181,7 +191,7 @@ void mdaDubDelay::process(float **inputs, float **outputs, LvzInt32 sampleFrames
float lx=lmix, hx=hmix, f=fil, f0=fil0, tmp;
float e=env, g, r=rel; //limiter envelope, gain, release
float twopi=6.2831853f;
- long i=ipos, l, s=size, k=0;
+ LvzInt32 i=ipos, l, s=size, k=0;
--in1;
--in2;
@@ -206,7 +216,7 @@ void mdaDubDelay::process(float **inputs, float **outputs, LvzInt32 sampleFrames
i--; if(i<0) i=s; //delay positions
- l = (long)dl;
+ l = (LvzInt32)dl;
tmp = dl - (float)l; //remainder
l += i; if(l>s) l-=(s+1);
@@ -246,7 +256,7 @@ void mdaDubDelay::processReplacing(float **inputs, float **outputs, LvzInt32 sam
float lx=lmix, hx=hmix, f=fil, f0=fil0, tmp;
float e=env, g, r=rel; //limiter envelope, gain, release
float twopi=6.2831853f;
- long i=ipos, l, s=size, k=0;
+ LvzInt32 i=ipos, l, s=size, k=0;
--in1;
--in2;
@@ -269,7 +279,7 @@ void mdaDubDelay::processReplacing(float **inputs, float **outputs, LvzInt32 sam
i--; if(i<0) i=s; //delay positions
- l = (long)dl;
+ l = (LvzInt32)dl;
tmp = dl - (float)l; //remainder
l += i; if(l>s) l-=(s+1);
diff --git a/src/mdaDubDelay.h b/src/mdaDubDelay.h
index c102447..31cde6b 100644
--- a/src/mdaDubDelay.h
+++ b/src/mdaDubDelay.h
@@ -13,6 +13,7 @@ public:
virtual void processReplacing(float **inputs, float **outputs, LvzInt32 sampleFrames);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
@@ -35,7 +36,7 @@ protected:
float fParam6;
float *buffer; //delay
- long size, ipos; //delay max time, pointer, left time, right time
+ LvzInt32 size, ipos; //delay max time, pointer, left time, right time
float wet, dry, fbk; //wet & dry mix
float lmix, hmix, fil, fil0; //low & high mix, crossover filter coeff & buffer
float env, rel; //limiter (clipper when release is instant)
diff --git a/src/mdaDynamics.cpp b/src/mdaDynamics.cpp
index f4b7901..3de1664 100644
--- a/src/mdaDynamics.cpp
+++ b/src/mdaDynamics.cpp
@@ -49,6 +49,16 @@ void mdaDynamics::getProgramName(char *name)
strcpy(name, programName);
}
+bool mdaDynamics::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if (index == 0)
+ {
+ strcpy(name, programName);
+ return true;
+ }
+ return false;
+}
+
void mdaDynamics::setParameter(LvzInt32 index, float value)
{
switch(index)
@@ -127,30 +137,30 @@ void mdaDynamics::getParameterName(LvzInt32 index, char *label)
}
#include <stdio.h>
-void long2string(long value, char *string) { sprintf(string, "%ld", value); }
+void int2strng(LvzInt32 value, char *string) { sprintf(string, "%d", value); }
void float2strng(float value, char *string) { sprintf(string, "%.2f", value); }
void mdaDynamics::getParameterDisplay(LvzInt32 index, char *text)
{
switch(index)
{
- case 0: long2string((long)(40.0*fParam1 - 40.0),text); break;
+ case 0: int2strng((LvzInt32)(40.0*fParam1 - 40.0),text); break;
case 1: if(fParam2>0.58)
{ if(fParam2<0.62) strcpy(text, "Limit");
else float2strng(-rat,text); }
else
{ if(fParam2<0.2) float2strng(0.5f+2.5f*fParam2,text);
else float2strng(1.f/(1.f-rat),text); } break;
- case 2: long2string((long)(40.0*fParam3 - 0.0),text); break; ///was -20.0
- case 3: long2string((long)(-301030.1 / (getSampleRate() * log10(1.0 - att))),text); break;
- case 4: long2string((long)(-301.0301 / (getSampleRate() * log10(1.0 - rel))),text); break;
+ case 2: int2strng((LvzInt32)(40.0*fParam3 - 0.0),text); break; ///was -20.0
+ case 3: int2strng((LvzInt32)(-301030.1 / (getSampleRate() * log10(1.0 - att))),text); break;
+ case 4: int2strng((LvzInt32)(-301.0301 / (getSampleRate() * log10(1.0 - rel))),text); break;
case 5: if(lthr==0.f) strcpy(text, "OFF");
- else long2string((long)(30.0*fParam6 - 20.0),text); break;
+ else int2strng((LvzInt32)(30.0*fParam6 - 20.0),text); break;
case 6: if(xthr==0.f) strcpy(text, "OFF");
- else long2string((long)(60.0*fParam7 - 60.0),text); break;
- case 7: long2string((long)(-301030.1 / (getSampleRate() * log10(1.0 - gatt))),text); break;
- case 8: long2string((long)(-1806.0 / (getSampleRate() * log10(xrat))),text); break;
- case 9: long2string((long)(100.0*fParam10),text); break;
+ else int2strng((LvzInt32)(60.0*fParam7 - 60.0),text); break;
+ case 7: int2strng((LvzInt32)(-301030.1 / (getSampleRate() * log10(1.0 - gatt))),text); break;
+ case 8: int2strng((LvzInt32)(-1806.0 / (getSampleRate() * log10(xrat))),text); break;
+ case 9: int2strng((LvzInt32)(100.0*fParam10),text); break;
}
}
@@ -162,11 +172,11 @@ void mdaDynamics::getParameterLabel(LvzInt32 index, char *label)
case 0: strcpy(label, "dB"); break;
case 1: strcpy(label, ":1"); break;
case 2: strcpy(label, "dB"); break;
- case 3: strcpy(label, "µs"); break;
+ case 3: strcpy(label, "�s"); break;
case 4: strcpy(label, "ms"); break;
case 5: strcpy(label, "dB"); break;
case 6: strcpy(label, "dB"); break;
- case 7: strcpy(label, "µs"); break;
+ case 7: strcpy(label, "�s"); break;
case 8: strcpy(label, "ms"); break;
case 9: strcpy(label, "%"); break;
}
diff --git a/src/mdaDynamics.h b/src/mdaDynamics.h
index c45805c..3867bca 100644
--- a/src/mdaDynamics.h
+++ b/src/mdaDynamics.h
@@ -13,6 +13,7 @@ public:
virtual void processReplacing(float **inputs, float **outputs, LvzInt32 sampleFrames);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
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<NVOICES; v++)
+ for(LvzInt32 v=0; v<NVOICES; v++)
{
voice[v].env = 0.0f;
voice[v].dec = 0.99f; //all notes off
@@ -129,7 +129,8 @@ mdaEPiano::mdaEPiano(audioMasterCallback audioMaster) : AudioEffectX(audioMaster
void mdaEPiano::update() //parameter change
{
- size = (long)(12.0f * param[2] - 6.0f);
+ float * param = programs[curProgram].param;
+ size = (LvzInt32)(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
@@ -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; i<NPARAMS; i++) param[i] = p->param[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<NPROGS)
+ if ((unsigned int)index < NPROGS)
{
strcpy(text, programs[index].name);
return true;
@@ -283,6 +279,7 @@ void mdaEPiano::getParameterName(LvzInt32 index, char *label)
void mdaEPiano::getParameterDisplay(LvzInt32 index, char *text)
{
char string[16];
+ float * param = programs[curProgram].param;
switch(index)
{
@@ -297,7 +294,7 @@ void mdaEPiano::getParameterDisplay(LvzInt32 index, char *text)
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 8: sprintf(string, "%d", poly); break;
case 10: sprintf(string, "%.1f", 50.0f * param[index] * param[index]); break;
case 11: sprintf(string, "%.1f", 100.0f * param[index]); break;
default: sprintf(string, "%.0f", 100.0f * param[index]);
@@ -333,9 +330,9 @@ void mdaEPiano::process(float **inputs, float **outputs, LvzInt32 sampleFrames)
{
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<sampleFrames)
{
@@ -383,10 +380,10 @@ void mdaEPiano::process(float **inputs, float **outputs, LvzInt32 sampleFrames)
if(frame<sampleFrames)
{
- if(activevoices == 0 && param[4] > 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<sampleFrames)
{
@@ -456,10 +453,10 @@ void mdaEPiano::processReplacing(float **inputs, float **outputs, LvzInt32 sampl
if(frame<sampleFrames)
{
- if(activevoices == 0 && param[4] > 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; i<ev->numEvents; i++)
+ for (LvzInt32 i=0; i<ev->numEvents; 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<NVOICES; v++) voice[v].dec=0.99f;
+ for(LvzInt32 v=0; v<NVOICES; v++) voice[v].dec=0.99f;
sustain = 0;
muff = 160.0f;
}
diff --git a/src/mdaEPiano.h b/src/mdaEPiano.h
index 5e85e5f..7d58a53 100644
--- a/src/mdaEPiano.h
+++ b/src/mdaEPiano.h
@@ -18,10 +18,6 @@
class mdaEPianoProgram
{
friend class mdaEPiano;
-public:
- mdaEPianoProgram() {}
- ~mdaEPianoProgram() {}
-
private:
float param[NPARAMS];
char name[24];
@@ -30,11 +26,11 @@ private:
struct VOICE //voice state
{
- long delta; //sample playback
- long frac;
- long pos;
- long end;
- long loop;
+ LvzInt32 delta; //sample playback
+ LvzInt32 frac;
+ LvzInt32 pos;
+ LvzInt32 end;
+ LvzInt32 loop;
float env; //envelope
float dec;
@@ -45,17 +41,17 @@ struct VOICE //voice state
float outl;
float outr;
- long note; //remember what note triggered this
+ LvzInt32 note; //remember what note triggered this
};
struct KGRP //keygroup
{
- long root; //MIDI root note
- long high; //highest note
- long pos;
- long end;
- long loop;
+ LvzInt32 root; //MIDI root note
+ LvzInt32 high; //highest note
+ LvzInt32 pos;
+ LvzInt32 end;
+ LvzInt32 loop;
};
class mdaEPiano : public AudioEffectX
@@ -90,30 +86,29 @@ public:
virtual LvzInt32 getNumMidiInputChannels () { return 1; }
- long guiUpdate;
+ LvzInt32 guiUpdate;
void guiGetDisplay(LvzInt32 index, char *label);
private:
void update(); //my parameter update
- void noteOn(long note, long velocity);
- void fillpatch(long p, const char *name, float p0, float p1, float p2, float p3, float p4,
+ void noteOn(LvzInt32 note, LvzInt32 velocity);
+ void 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);
- float param[NPARAMS];
mdaEPianoProgram* programs;
float Fs, iFs;
#define EVENTBUFFER 120
#define EVENTS_DONE 99999999
- long notes[EVENTBUFFER + 8]; //list of delta|note|velocity for current block
+ LvzInt32 notes[EVENTBUFFER + 8]; //list of delta|note|velocity for current block
///global internal variables
KGRP kgrp[34];
VOICE voice[NVOICES];
- long activevoices, poly;
+ LvzInt32 activevoices, poly;
short *waves;
float width;
- long size, sustain;
+ LvzInt32 size, sustain;
float lfo0, lfo1, dlfo, lmod, rmod;
float treb, tfrq, tl, tr;
float tune, fine, random, stretch, overdrive;
diff --git a/src/mdaImage.cpp b/src/mdaImage.cpp
index a59b1ed..e582c26 100644
--- a/src/mdaImage.cpp
+++ b/src/mdaImage.cpp
@@ -106,6 +106,16 @@ void mdaImage::getProgramName(char *name)
strcpy(name, programName);
}
+bool mdaImage::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if (index == 0)
+ {
+ strcpy(name, programName);
+ return true;
+ }
+ return false;
+}
+
float mdaImage::getParameter(LvzInt32 index)
{
float v=0;
@@ -136,7 +146,7 @@ void mdaImage::getParameterName(LvzInt32 index, char *label)
}
#include <stdio.h>
-void long2string(long value, char *string) { sprintf(string, "%ld", value); }
+void int2strng(LvzInt32 value, char *string) { sprintf(string, "%d", value); }
void mdaImage::getParameterDisplay(LvzInt32 index, char *text)
{
@@ -150,11 +160,11 @@ void mdaImage::getParameterDisplay(LvzInt32 index, char *text)
case 3: strcpy(text, "LR->MS"); break;
} break;
- case 1: long2string((long)(400 * fParam2 - 200), text); break;
- case 2: long2string((long)(200 * fParam3 - 100), text); break;
- case 3: long2string((long)(400 * fParam4 - 200), text); break;
- case 4: long2string((long)(200 * fParam5 - 100), text); break;
- case 5: long2string((long)(40 * fParam6 - 20), text); break;
+ case 1: int2strng((LvzInt32)(400 * fParam2 - 200), text); break;
+ case 2: int2strng((LvzInt32)(200 * fParam3 - 100), text); break;
+ case 3: int2strng((LvzInt32)(400 * fParam4 - 200), text); break;
+ case 4: int2strng((LvzInt32)(200 * fParam5 - 100), text); break;
+ case 5: int2strng((LvzInt32)(40 * fParam6 - 20), text); break;
}
}
diff --git a/src/mdaImage.h b/src/mdaImage.h
index c5fbeb7..c52eb9c 100644
--- a/src/mdaImage.h
+++ b/src/mdaImage.h
@@ -13,6 +13,7 @@ public:
virtual void processReplacing(float **inputs, float **outputs, LvzInt32 sampleFrames);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
diff --git a/src/mdaJX10.cpp b/src/mdaJX10.cpp
index 4ded18e..9b21c72 100644
--- a/src/mdaJX10.cpp
+++ b/src/mdaJX10.cpp
@@ -56,7 +56,7 @@ mdaJX10Program::mdaJX10Program()
mdaJX10::mdaJX10(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, NPROGS, NPARAMS)
{
- long i=0;
+ LvzInt32 i=0;
Fs = 44100.0f;
programs = new mdaJX10Program[NPROGS];
@@ -133,7 +133,7 @@ mdaJX10::mdaJX10(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, NP
}
//initialise...
- for(long v=0; v<NVOICES; v++)
+ for(LvzInt32 v=0; v<NVOICES; v++)
{
voice[v].dp = voice[v].dp2 = 1.0f;
voice[v].saw = voice[v].p = voice[v].p2 = 0.0f;
@@ -157,8 +157,9 @@ mdaJX10::mdaJX10(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, NP
void mdaJX10::update() //parameter change
{
double ifs = 1.0 / Fs;
+ float * param = programs[curProgram].param;
- mode = (long)(7.9f * param[3]);
+ mode = (LvzInt32)(7.9f * param[3]);
noisemix = param[21] * param[21];
voltrim = (3.2f - param[0] - 1.5f * noisemix) * (1.5f - 0.5f * param[7]);
noisemix *= 0.06f;
@@ -221,7 +222,7 @@ void mdaJX10::resume()
void mdaJX10::suspend() //Used by Logic (have note off code in 3 places now...)
{
- for(long v=0; v<NVOICES; v++)
+ for(LvzInt32 v=0; v<NVOICES; v++)
{
voice[v].envl = voice[v].env = 0.0f;
voice[v].envd = 0.99f;
@@ -239,26 +240,21 @@ mdaJX10::~mdaJX10() //destroy any buffers...
void mdaJX10::setProgram(LvzInt32 program)
{
- long i;
-
- mdaJX10Program *p = &programs[program];
curProgram = program;
- for(i=0; i<NPARAMS; i++) param[i] = p->param[i];
- update();
+ update();
} //may want all notes off here - but this stops use of patches as snapshots!
void mdaJX10::setParameter(LvzInt32 index, float value)
{
- mdaJX10Program *p = &programs[curProgram];
- param[index] = p->param[index] = value;
+ programs[curProgram].param[index] = value;
update();
///if(editor) editor->postUpdate();
}
-void mdaJX10::fillpatch(long p, const char *name,
+void mdaJX10::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,
float p12, float p13, float p14, float p15, float p16, float p17,
@@ -280,7 +276,7 @@ void mdaJX10::fillpatch(long p, const char *name,
}
-float mdaJX10::getParameter(LvzInt32 index) { return param[index]; }
+float mdaJX10::getParameter(LvzInt32 index) { return programs[curProgram].param[index]; }
void mdaJX10::setProgramName(char *name) { strcpy(programs[curProgram].name, name); }
void mdaJX10::getProgramName(char *name) { strcpy(name, programs[curProgram].name); }
void mdaJX10::setBlockSize(LvzInt32 blockSize) { AudioEffectX::setBlockSize(blockSize); }
@@ -304,7 +300,7 @@ bool mdaJX10::getOutputProperties(LvzInt32 index, LvzPinProperties* properties)
bool mdaJX10::getProgramNameIndexed(LvzInt32 category, LvzInt32 index, char* text)
{
- if(index<NPROGS)
+ if ((unsigned int)index < NPROGS)
{
strcpy(text, programs[index].name);
return true;
@@ -374,6 +370,7 @@ void mdaJX10::getParameterName(LvzInt32 index, char *label)
void mdaJX10::getParameterDisplay(LvzInt32 index, char *text)
{
char string[16];
+ float * param = programs[curProgram].param;
switch(index)
{
@@ -398,7 +395,7 @@ void mdaJX10::getParameterDisplay(LvzInt32 index, char *text)
case 19: sprintf(string, "%.3f", lfoHz); break;
case 20: if(param[index]<0.5f) sprintf(string, "PWM %3.0f", 100.0f - 200.0f * param[index]);
else sprintf(string, "%7.0f", 200.0f * param[index] - 100.0f); break;
- case 22: sprintf(string, "%ld", (long)(param[index] * 4.9f) - 2); break;
+ case 22: sprintf(string, "%d", (LvzInt32)(param[index] * 4.9f) - 2); break;
default: sprintf(string, "%.0f", 100.0f * param[index]);
}
string[8] = 0;
@@ -426,12 +423,12 @@ void mdaJX10::process(float **inputs, float **outputs, LvzInt32 sampleFrames)
{
float* out1 = outputs[0];
float* out2 = outputs[1];
- long event=0, frame=0, frames, v;
+ LvzInt32 event=0, frame=0, frames, v;
float o, e, vib, pwm, pb=pbend, ipb=ipbend, gl=glide;
float x, y, hpf=0.997f, min=1.0f, w=0.0f, ww=noisemix;
float ff, fe=filtenv, fq=filtq * rezwhl, fx=1.97f-0.85f*fq, fz=fzip;
- long k=K;
- unsigned long r;
+ LvzInt32 k=K;
+ unsigned int r;
vib = (float)sin(lfo);
ff = filtf + filtwhl + (filtlfo + press) * vib; //have to do again here as way that
@@ -565,8 +562,8 @@ void mdaJX10::process(float **inputs, float **outputs, LvzInt32 sampleFrames)
if(frame<sampleFrames)
{
- long note = notes[event++];
- long vel = notes[event++];
+ LvzInt32 note = notes[event++];
+ LvzInt32 vel = notes[event++];
noteOn(note, vel);
}
}
@@ -592,12 +589,12 @@ void mdaJX10::processReplacing(float **inputs, float **outputs, LvzInt32 sampleF
{
float* out1 = outputs[0];
float* out2 = outputs[1];
- long event=0, frame=0, frames, v;
+ LvzInt32 event=0, frame=0, frames, v;
float o, e, vib, pwm, pb=pbend, ipb=ipbend, gl=glide;
float x, y, hpf=0.997f, min=1.0f, w=0.0f, ww=noisemix;
float ff, fe=filtenv, fq=filtq * rezwhl, fx=1.97f-0.85f*fq, fz=fzip;
- long k=K;
- unsigned long r;
+ LvzInt32 k=K;
+ unsigned int r;
vib = (float)sin(lfo);
ff = filtf + filtwhl + (filtlfo + press) * vib; //have to do again here as way that
@@ -732,8 +729,8 @@ void mdaJX10::processReplacing(float **inputs, float **outputs, LvzInt32 sampleF
if(frame<sampleFrames)
{
- long note = notes[event++];
- long vel = notes[event++];
+ LvzInt32 note = notes[event++];
+ LvzInt32 vel = notes[event++];
noteOn(note, vel);
}
}
@@ -763,10 +760,10 @@ void mdaJX10::processReplacing(float **inputs, float **outputs, LvzInt32 sampleF
}
-void mdaJX10::noteOn(long note, long velocity)
+void mdaJX10::noteOn(LvzInt32 note, LvzInt32 velocity)
{
float p, l=100.0f; //louder than any envelope!
- long v=0, tmp, held=0;
+ LvzInt32 v=0, tmp, held=0;
if(velocity>0) //note on
{
@@ -818,7 +815,7 @@ void mdaJX10::noteOn(long note, long velocity)
voice[v].lev = voltrim * volume * (0.004f * (float)((velocity + 64) * (velocity + 64)) - 8.0f);
voice[v].lev2 = voice[v].lev * oscmix;
- if(param[20]<0.5f) //force 180 deg phase difference for PWM
+ if(programs[curProgram].param[20]<0.5f) //force 180 deg phase difference for PWM
{
if(voice[v].dp>0.0f)
{
@@ -842,7 +839,7 @@ void mdaJX10::noteOn(long note, long velocity)
}
else
{
- //if(param[15] < 0.28f)
+ //if(programs[curProgram].param[15] < 0.28f)
//{
// voice[v].f0 = voice[v].f1 = voice[v].f2 = 0.0f; //reset filter
// voice[v].env = SILENCE + SILENCE;
@@ -905,9 +902,9 @@ void mdaJX10::noteOn(long note, long velocity)
LvzInt32 mdaJX10::processEvents(LvzEvents* ev)
{
- long npos=0;
+ LvzInt32 npos=0;
- for (long i=0; i<ev->numEvents; i++)
+ for (LvzInt32 i=0; i<ev->numEvents; i++)
{
if((ev->events[i])->type != kLvzMidiType) continue;
LvzMidiEvent* event = (LvzMidiEvent*)ev->events[i];
@@ -963,7 +960,7 @@ LvzInt32 mdaJX10::processEvents(LvzEvents* ev)
default: //all notes off
if(midiData[1]>0x7A)
{
- for(long v=0; v<NVOICES; v++)
+ for(LvzInt32 v=0; v<NVOICES; v++)
{
voice[v].envl = voice[v].env = 0.0f;
voice[v].envd = 0.99f;
diff --git a/src/mdaJX10.h b/src/mdaJX10.h
index f2eaa00..a08aa37 100644
--- a/src/mdaJX10.h
+++ b/src/mdaJX10.h
@@ -21,8 +21,6 @@ class mdaJX10Program
friend class mdaJX10;
public:
mdaJX10Program();
- ~mdaJX10Program() {}
-
private:
float param[NPARAMS];
char name[24];
@@ -70,7 +68,7 @@ struct VOICE //voice state
float lev; //osc levels
float lev2;
float target; //period target
- long note; //remember what note triggered this
+ LvzInt32 note; //remember what note triggered this
};
@@ -108,25 +106,24 @@ public:
private:
void update(); //my parameter update
- void noteOn(long note, long velocity);
- void fillpatch(long p, const char *name,
+ void noteOn(LvzInt32 note, LvzInt32 velocity);
+ void 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,
float p12, float p13, float p14, float p15, float p16, float p17,
float p18, float p19, float p20, float p21, float p22, float p23);
- float param[NPARAMS];
mdaJX10Program* programs;
float Fs;
#define EVENTBUFFER 120
#define EVENTS_DONE 99999999
- long notes[EVENTBUFFER + 8]; //list of delta|note|velocity for current block
+ LvzInt32 notes[EVENTBUFFER + 8]; //list of delta|note|velocity for current block
#define KMAX 32
///global internal variables
#define SUSTAIN -1
- long sustain, activevoices;
+ LvzInt32 sustain, activevoices;
VOICE voice[NVOICES];
float semi, cent;
@@ -137,8 +134,8 @@ private:
float lfo, dlfo, modwhl, press, pbend, ipbend, rezwhl;
float velsens, volume, voltrim;
float vibrato, pwmdep, lfoHz, glide, glidedisp;
- long K, lastnote, veloff, mode;
- unsigned long noise;
+ LvzInt32 K, lastnote, veloff, mode;
+ unsigned int noise;
};
#endif
diff --git a/src/mdaLeslie.cpp b/src/mdaLeslie.cpp
index c45e703..71134df 100644
--- a/src/mdaLeslie.cpp
+++ b/src/mdaLeslie.cpp
@@ -13,30 +13,20 @@ AudioEffect *createEffectInstance(audioMasterCallback audioMaster)
mdaLeslieProgram::mdaLeslieProgram()
{
- fParam1 = 0.66f;
- fParam7 = 0.50f;
- fParam9 = 0.60f;
- fParam4 = 0.70f;
- fParam5 = 0.60f;
- fParam6 = 0.70f;
- fParam3 = 0.48f;
- fParam2 = 0.50f;
- fParam8 = 0.50f;
+ param[0] = 0.66f;
+ param[1] = 0.50f;
+ param[2] = 0.48f;
+ param[3] = 0.70f;
+ param[4] = 0.60f;
+ param[5] = 0.70f;
+ param[6] = 0.50f;
+ param[7] = 0.50f;
+ param[8] = 0.60f;
strcpy(name, "Leslie Simulator");
}
-mdaLeslie::mdaLeslie(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, 3, 9) // programs, parameters
+mdaLeslie::mdaLeslie(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, 3, NPARAMS) // programs, parameters
{
- fParam1 = 0.66f;
- fParam7 = 0.50f;
- fParam9 = 0.60f;
- fParam4 = 0.70f;
- fParam5 = 0.60f;
- fParam6 = 0.70f;
- fParam3 = 0.48f;
- fParam2 = 0.50f;
- fParam8 = 0.50f;
-
size = 256; hpos = 0;
hbuf = new float[size];
fbuf1 = fbuf2 = 0.0f;
@@ -52,13 +42,13 @@ mdaLeslie::mdaLeslie(audioMasterCallback audioMaster) : AudioEffectX(audioMaster
programs = new mdaLeslieProgram[numPrograms];
if(programs)
{
- programs[1].fParam1 = 0.33f;
- programs[1].fParam5 = 0.75f;
- programs[1].fParam6 = 0.57f;
+ programs[1].param[0] = 0.33f;
+ programs[1].param[4] = 0.75f;
+ programs[1].param[5] = 0.57f;
strcpy(programs[1].name,"Slow");
- programs[2].fParam1 = 0.66f;
- programs[2].fParam5 = 0.60f;
- programs[2].fParam6 = 0.70f;
+ programs[2].param[0] = 0.66f;
+ programs[2].param[4] = 0.60f;
+ programs[2].param[5] = 0.70f;
strcpy(programs[2].name,"Fast");
setProgram(0);
}
@@ -76,28 +66,47 @@ bool mdaLeslie::getEffectName(char* name) { strcpy(name, "Leslie"); return t
void mdaLeslie::setParameter(LvzInt32 index, float value)
{
-
- float ifs = 1.0f / getSampleRate();
- float spd = twopi * ifs * 2.0f * fParam8;
+ float * param = programs[curProgram].param;
switch(index)
{
- case 0: programs[curProgram].fParam1 = fParam1 = value; break;
- case 1: programs[curProgram].fParam7 = fParam7 = value; break;
- case 2: programs[curProgram].fParam9 = fParam9 = value; break;
- case 3: programs[curProgram].fParam4 = fParam4 = value; break;
- case 4: programs[curProgram].fParam5 = fParam5 = value; break;
- case 5: programs[curProgram].fParam6 = fParam6 = value; break;
- case 6: programs[curProgram].fParam3 = fParam3 = value; break;
- case 7: programs[curProgram].fParam2 = fParam2 = value; break;
- case 8: programs[curProgram].fParam8 = fParam8 = value; break;
+ case 0: param[0] = value; break;
+ case 1: param[6] = value; break;
+ case 2: param[8] = value; break;
+ case 3: param[3] = value; break;
+ case 4: param[4] = value; break;
+ case 5: param[5] = value; break;
+ case 6: param[2] = value; break;
+ case 7: param[1] = value; break;
+ case 8: param[7] = value; break;
}
+ update();
+}
+
+mdaLeslie::~mdaLeslie()
+{
+ if(hbuf) delete [] hbuf;
+ if(programs) delete [] programs;
+}
+
+void mdaLeslie::setProgram(LvzInt32 program)
+{
+ curProgram = program;
+ update();
+}
+
+void mdaLeslie::update()
+{
+ float ifs = 1.0f / getSampleRate();
+ float * param = programs[curProgram].param;
+ float spd = twopi * ifs * 2.0f * param[7];
+
//calcs here!
- filo = 1.f - (float)pow(10.0f, fParam3 * (2.27f - 0.54f * fParam3) - 1.92f);
+ filo = 1.f - (float)pow(10.0f, param[2] * (2.27f - 0.54f * param[2]) - 1.92f);
- if(fParam1<0.50f)
+ if(param[0]<0.50f)
{
- if(fParam1<0.1f) //stop
+ if(param[0]<0.1f) //stop
{
lset = 0.00f; hset = 0.00f;
lmom = 0.12f; hmom = 0.10f;
@@ -118,35 +127,12 @@ void mdaLeslie::setParameter(LvzInt32 index, float value)
hset *= spd;
lset *= spd;
- gain = 0.4f * (float)pow(10.0f, 2.0f * fParam2 - 1.0f);
- lwid = fParam7 * fParam7;
- llev = gain * 0.9f * fParam9 * fParam9;
- hwid = fParam4 * fParam4;
- hdep = fParam5 * fParam5 * getSampleRate() / 760.0f;
- hlev = gain * 0.9f * fParam6 * fParam6;
-}
-
-mdaLeslie::~mdaLeslie()
-{
- if(hbuf) delete [] hbuf;
- if(programs) delete [] programs;
-}
-
-void mdaLeslie::setProgram(LvzInt32 program)
-{
- mdaLeslieProgram *p = &programs[program];
-
- curProgram = program;
- setParameter(0, p->fParam1);
- setParameter(1, p->fParam7);
- setParameter(2, p->fParam9);
- setParameter(3, p->fParam4);
- setParameter(4, p->fParam5);
- setParameter(5, p->fParam6);
- setParameter(6, p->fParam3);
- setParameter(7, p->fParam2);
- setParameter(8, p->fParam8);
- setProgramName(p->name);
+ gain = 0.4f * (float)pow(10.0f, 2.0f * param[1] - 1.0f);
+ lwid = param[6] * param[6];
+ llev = gain * 0.9f * param[8] * param[8];
+ hwid = param[3] * param[3];
+ hdep = param[4] * param[4] * getSampleRate() / 760.0f;
+ hlev = gain * 0.9f * param[5] * param[5];
}
void mdaLeslie::suspend()
@@ -156,29 +142,40 @@ void mdaLeslie::suspend()
void mdaLeslie::setProgramName(char *name)
{
- strcpy(programName, name);
+ strcpy(programs[curProgram].name, name);
}
void mdaLeslie::getProgramName(char *name)
{
- strcpy(name, programName);
+ strcpy(name, programs[curProgram].name);
+}
+
+bool mdaLeslie::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if ((unsigned int)index < NPROGS)
+ {
+ strcpy(name, programs[index].name);
+ return true;
+ }
+ return false;
}
float mdaLeslie::getParameter(LvzInt32 index)
{
- float v=0;
+ float v=0;
+ float * param = programs[curProgram].param;
switch(index)
{
- case 0: v = fParam1; break;
- case 1: v = fParam7; break;
- case 2: v = fParam9; break;
- case 3: v = fParam4; break;
- case 4: v = fParam5; break;
- case 5: v = fParam6; break;
- case 6: v = fParam3; break;
- case 7: v = fParam2; break;
- case 8: v = fParam8; break;
+ case 0: v = param[0]; break;
+ case 1: v = param[6]; break;
+ case 2: v = param[8]; break;
+ case 3: v = param[3]; break;
+ case 4: v = param[4]; break;
+ case 5: v = param[5]; break;
+ case 6: v = param[2]; break;
+ case 7: v = param[1]; break;
+ case 8: v = param[7]; break;
}
return v;
}
@@ -200,26 +197,27 @@ void mdaLeslie::getParameterName(LvzInt32 index, char *label)
}
#include <stdio.h>
-void long2string(long value, char *string) { sprintf(string, "%ld", value); }
+void int2strng(LvzInt32 value, char *string) { sprintf(string, "%d", value); }
void mdaLeslie::getParameterDisplay(LvzInt32 index, char *text)
{
+ float * param = programs[curProgram].param;
switch(index)
{
case 0:
- if(fParam1<0.5f)
+ if(param[0]<0.5f)
{
- if(fParam1 < 0.1f) strcpy(text, "STOP");
+ if(param[0] < 0.1f) strcpy(text, "STOP");
else strcpy(text, "SLOW");
} else strcpy(text, "FAST"); break;
- case 1: long2string((long)(100 * fParam7), text); break;
- case 2: long2string((long)(100 * fParam9), text); break;
- case 3: long2string((long)(100 * fParam4), text); break;
- case 4: long2string((long)(100 * fParam5), text); break;
- case 5: long2string((long)(100 * fParam6), text); break;
- case 6: long2string((long)(10*int((float)pow(10.0f,1.179f + fParam3))), text); break;
- case 7: long2string((long)(40 * fParam2 - 20), text); break;
- case 8: long2string((long)(200 * fParam8), text); break;
+ case 1: int2strng((LvzInt32)(100 * param[6]), text); break;
+ case 2: int2strng((LvzInt32)(100 * param[8]), text); break;
+ case 3: int2strng((LvzInt32)(100 * param[3]), text); break;
+ case 4: int2strng((LvzInt32)(100 * param[4]), text); break;
+ case 5: int2strng((LvzInt32)(100 * param[5]), text); break;
+ case 6: int2strng((LvzInt32)(10*int((float)pow(10.0f,1.179f + param[2]))), text); break;
+ case 7: int2strng((LvzInt32)(40 * param[1] - 20), text); break;
+ case 8: int2strng((LvzInt32)(200 * param[7]), text); break;
}
}
@@ -247,7 +245,7 @@ void mdaLeslie::process(float **inputs, float **outputs, LvzInt32 sampleFrames)
float hl=hlev, hs=hspd, ht, hm=hmom, hp=hphi, hw=hwid, hd=hdep;
float ll=llev, ls=lspd, lt, lm=lmom, lp=lphi, lw=lwid;
float hint, k0=0.03125f, k1=32.f;
- long hdd, hdd2, k=0, hps=hpos;
+ LvzInt32 hdd, hdd2, k=0, hps=hpos;
ht=hset*(1.f-hm);
lt=lset*(1.f-lm);
@@ -280,7 +278,7 @@ void mdaLeslie::process(float **inputs, float **outputs, LvzInt32 sampleFrames)
dshp = k0 * ((float)sin(hp + k1*hs) - shp);
dslp = k0 * ((float)sin(lp + k1*ls) - slp);
- k=(long)k1;
+ k=(LvzInt32)k1;
}
fb1 = fo * (fb1 - a) + a;
@@ -334,7 +332,7 @@ void mdaLeslie::processReplacing(float **inputs, float **outputs, LvzInt32 sampl
float hl=hlev, hs=hspd, ht, hm=hmom, hp=hphi, hw=hwid, hd=hdep;
float ll=llev, ls=lspd, lt, lm=lmom, lp=lphi, lw=lwid;
float hint, k0=0.03125f, k1=32.f; //k0 = 1/k1
- long hdd, hdd2, k=0, hps=hpos;
+ LvzInt32 hdd, hdd2, k=0, hps=hpos;
ht=hset*(1.f-hm); //target speeds
lt=lset*(1.f-lm);
@@ -365,7 +363,7 @@ void mdaLeslie::processReplacing(float **inputs, float **outputs, LvzInt32 sampl
dshp = k0 * ((float)sin(hp + k1*hs) - shp);
dslp = k0 * ((float)sin(lp + k1*ls) - slp);
- k=(long)k1;
+ k=(LvzInt32)k1;
}
fb1 = fo * (fb1 - a) + a; //crossover
diff --git a/src/mdaLeslie.h b/src/mdaLeslie.h
index c6d3675..c4c21cd 100644
--- a/src/mdaLeslie.h
+++ b/src/mdaLeslie.h
@@ -3,16 +3,16 @@
#include "audioeffectx.h"
+#define NPARAMS 9 //number of parameters
+#define NPROGS 3 //number of programs
+
class mdaLeslieProgram
{
public:
mdaLeslieProgram();
- ~mdaLeslieProgram() {}
-
private:
friend class mdaLeslie;
- float fParam1, fParam3, fParam4, fParam5, fParam6;
- float fParam7, fParam9, fParam2, fParam8;
+ float param[NPARAMS];
char name[24];
};
@@ -27,6 +27,7 @@ public:
virtual void setProgram(LvzInt32 program);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
@@ -40,16 +41,7 @@ public:
virtual LvzInt32 getVendorVersion() { return 1000; }
protected:
- float fParam1;
- float fParam3;
- float fParam4;
- float fParam5;
- float fParam6;
- float fParam7;
- float fParam9;
- float fParam2;
- float fParam8;
-
+ void update();
mdaLeslieProgram *programs;
float filo; //crossover filter coeff
@@ -58,11 +50,9 @@ protected:
float hspd, hset, hmom, hphi, hwid, hlev, hdep;
float lspd, lset, lmom, lphi, lwid, llev, gain;
float *hbuf; //HF delay buffer
- long size, hpos; //buffer length & pointer
+ LvzInt32 size, hpos; //buffer length & pointer
float chp, dchp, clp, dclp, shp, dshp, slp, dslp;
-
- char programName[32];
};
#endif
diff --git a/src/mdaLimiter.cpp b/src/mdaLimiter.cpp
index 2d0399a..98febd3 100644
--- a/src/mdaLimiter.cpp
+++ b/src/mdaLimiter.cpp
@@ -55,6 +55,16 @@ void mdaLimiter::getProgramName(char *name)
strcpy(name, programName);
}
+bool mdaLimiter::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if (index == 0)
+ {
+ strcpy(name, programName);
+ return true;
+ }
+ return false;
+}
+
void mdaLimiter::setParameter(LvzInt32 index, float value)
{
switch(index)
@@ -107,16 +117,16 @@ void mdaLimiter::getParameterName(LvzInt32 index, char *label)
}
#include <stdio.h>
-void long2string(long value, char *string) { sprintf(string, "%ld", value); }
+void int2strng(LvzInt32 value, char *string) { sprintf(string, "%d", value); }
void mdaLimiter::getParameterDisplay(LvzInt32 index, char *text)
{
switch(index)
{
- case 0: long2string((long)(40.0*fParam1 - 40.0),text); break;
- case 1: long2string((long)(40.0*fParam2 - 20.0),text); break;
- case 3: long2string((long)(-301030.1 / (getSampleRate() * log10(1.0 - att))),text); break;
- case 2: long2string((long)(-301.0301 / (getSampleRate() * log10(1.0 - rel))),text); break;
+ case 0: int2strng((LvzInt32)(40.0*fParam1 - 40.0),text); break;
+ case 1: int2strng((LvzInt32)(40.0*fParam2 - 20.0),text); break;
+ case 3: int2strng((LvzInt32)(-301030.1 / (getSampleRate() * log10(1.0 - att))),text); break;
+ case 2: int2strng((LvzInt32)(-301.0301 / (getSampleRate() * log10(1.0 - rel))),text); break;
case 4: if(fParam5<0.5) strcpy(text, "HARD");
else strcpy(text, "SOFT"); break;
}
@@ -129,7 +139,7 @@ void mdaLimiter::getParameterLabel(LvzInt32 index, char *label)
{
case 0: strcpy(label, "dB"); break;
case 1: strcpy(label, "dB"); break;
- case 3: strcpy(label, "µs"); break;
+ case 3: strcpy(label, "�s"); break;
case 2: strcpy(label, "ms"); break;
case 4: strcpy(label, ""); break;
}
diff --git a/src/mdaLimiter.h b/src/mdaLimiter.h
index 0cef362..276a85d 100644
--- a/src/mdaLimiter.h
+++ b/src/mdaLimiter.h
@@ -13,6 +13,7 @@ public:
virtual void processReplacing(float **inputs, float **outputs, LvzInt32 sampleFrames);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
diff --git a/src/mdaLooplex.cpp b/src/mdaLooplex.cpp
index 8ae249f..76f84b1 100644
--- a/src/mdaLooplex.cpp
+++ b/src/mdaLooplex.cpp
@@ -10,6 +10,11 @@
#include <stdlib.h>
#include <math.h>
+#if __linux__
+#include <pthread.h>
+#include <unistd.h>
+#endif
+
AudioEffect *createEffectInstance(audioMasterCallback audioMaster)
{
@@ -35,10 +40,27 @@ public:
#if _WIN32
- #include <windows.h>
+ #include <windows.h>
#pragma comment(lib, "user32.lib")
static UINT timer = 0;
- VOID CALLBACK TimerCallback(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime)
+ VOID CALLBACK TimerCallback(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
+#elif __linux__
+ #define IDLE_MICS (IDLE_MSEC * 1000)
+ static pthread_t thread = 0;
+ static unsigned int timer = 0;
+ static void TimerCallback();
+ static void * ThreadCallback(void * args)
+ {
+ while (timer)
+ {
+ TimerCallback();
+ usleep(IDLE_MICS);
+ }
+ thread = 0;
+ pthread_exit(0);
+ return 0;
+ }
+ void TimerCallback()
#else //OSX
#include <Carbon/Carbon.h>
EventLoopTimerRef timer = 0;
@@ -59,10 +81,13 @@ public:
{
#if _WIN32
KillTimer(NULL, timer);
+ #elif defined(__linux__)
+ timer = 0;
+ while (thread) usleep(1000);
#else //OSX
RemoveEventLoopTimer(timer);
#endif
- timer = 0;
+ timer = 0;
}
}
else
@@ -81,6 +106,30 @@ IdleList::IdleList(mdaLooplex *effect, IdleList *next) : effect(effect), next(ne
{
#if WIN32
timer = SetTimer(NULL, 0, IDLE_MSEC, TimerCallback);
+ #elif __linux__
+ timer = 1;
+ pthread_attr_t attr;
+ pthread_attr_init(&attr);
+ pthread_attr_setstacksize(&attr, 16 * 1024);
+ int policy;
+
+ if (pthread_attr_getschedpolicy(&attr, &policy) == 0)
+ {
+ struct sched_param param;
+ param.sched_priority = sched_get_priority_min(policy);
+ pthread_attr_setschedpolicy(&attr, SCHED_OTHER);
+ pthread_attr_setschedparam(&attr, &param);
+ }
+ pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+ pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, 0);
+
+ if (pthread_create(&thread, &attr, &ThreadCallback, 0) != 0)
+ {
+ thread = 0;
+ timer = 0;
+ fprintf(stderr, "Error: mdaLooplex.cpp (line %d)\n", __LINE__);
+ }
+ pthread_attr_destroy(&attr);
#else //OSX
double ms = kEventDurationMillisecond * (double)IDLE_MSEC;
InstallEventLoopTimer(GetCurrentEventLoop(), ms, ms, NewEventLoopTimerUPP(TimerCallback), 0, &timer);
@@ -109,7 +158,7 @@ mdaLooplexProgram::mdaLooplexProgram()
mdaLooplex::mdaLooplex(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, NPROGS, NPARAMS)
{
-
+
Fs = 44100.0f; //won't we know the sample rate by the time we need it?
//initialise...
@@ -145,6 +194,8 @@ mdaLooplex::mdaLooplex(audioMasterCallback audioMaster) : AudioEffectX(audioMast
void mdaLooplex::update() //parameter change
{
+ float * param = programs[curProgram].param;
+
if(fabs(param[1] - oldParam1) > 0.1f)
{
oldParam1 = param[1];
@@ -187,20 +238,20 @@ void mdaLooplex::resume()
{
//should reset position here...
bufpos = 0;
-
- //needIdle(); //idle broken in VST2.4
- DECLARE_LVZ_DEPRECATED (wantEvents) ();
+
+ //needIdle(); //idle broken in VST2.4
+ DECLARE_LVZ_DEPRECATED (wantEvents) ();
}
void mdaLooplex::idle()
-{
+{
if(bypassed)
{
if(busy) return; //only do once per bypass
busy = 1;
-
- bufmax = 2 * (long)Fs * (long)(10.5f + 190.0f * param[0]);
+ float * param = programs[curProgram].param;
+ bufmax = 2 * (LvzInt32)Fs * (LvzInt32)(10.5f + 190.0f * param[0]);
if(buffer) delete [] buffer;
buffer = new short[bufmax + 10];
if(buffer) memset(buffer, 0, (bufmax + 10) * sizeof(short)); else bufmax = 0;
@@ -216,11 +267,13 @@ mdaLooplex::~mdaLooplex () //destroy any buffers...
{
if(item->effect == this)
{
- item->remove = true;
- #if _WIN32 //and stop timer in case our last instance is about to unload
- TimerCallback(0, 0, 0, 0);
- #else
- TimerCallback(0, 0);
+ item->remove = true;
+ #if _WIN32 //and stop timer in case our last instance is about to unload
+ TimerCallback(0, 0, 0, 0);
+ #elif __linux__
+ TimerCallback();
+ #else
+ TimerCallback(0, 0);
#endif
break;
}
@@ -237,19 +290,19 @@ mdaLooplex::~mdaLooplex () //destroy any buffers...
char wh[44];
memcpy(wh, "RIFF____WAVEfmt \20\0\0\0\1\0\2\0________\4\0\20\0data____", 44);
- long l = 36 + buflen * 2;
+ LvzInt32 l = 36 + buflen * 2;
wh[4] = (char)(l & 0xFF); l >>= 8;
wh[5] = (char)(l & 0xFF); l >>= 8;
wh[6] = (char)(l & 0xFF); l >>= 8;
wh[7] = (char)(l & 0xFF);
- l = (long)(Fs + 0.5f);
+ l = (LvzInt32)(Fs + 0.5f);
wh[24] = (char)(l & 0xFF); l >>= 8;
wh[25] = (char)(l & 0xFF); l >>= 8;
wh[26] = (char)(l & 0xFF); l >>= 8;
wh[27] = (char)(l & 0xFF);
- l = 4 * (long)(Fs + 0.5f);
+ l = 4 * (LvzInt32)(Fs + 0.5f);
wh[28] = (char)(l & 0xFF); l >>= 8;
wh[29] = (char)(l & 0xFF); l >>= 8;
wh[30] = (char)(l & 0xFF); l >>= 8;
@@ -282,31 +335,25 @@ mdaLooplex::~mdaLooplex () //destroy any buffers...
}
delete [] buffer;
- }
+ }
}
void mdaLooplex::setProgram(LvzInt32 program)
-{
- long i;
-
- mdaLooplexProgram *p = &programs[program];
- curProgram = program;
- setProgramName(p->name);
- for(i=0; i<NPARAMS; i++) param[i] = p->param[i];
- update();
+{
+ curProgram = program;
+ update();
}
void mdaLooplex::setParameter(LvzInt32 index, float value)
-{
- mdaLooplexProgram *p = &programs[curProgram];
- param[index] = p->param[index] = value;
+{
+ programs[curProgram].param[index] = value;
update();
}
-float mdaLooplex::getParameter(LvzInt32 index) { return param[index]; }
+float mdaLooplex::getParameter(LvzInt32 index) { return programs[curProgram].param[index]; }
void mdaLooplex::setProgramName(char *name) { strcpy(programs[curProgram].name, name); }
void mdaLooplex::getProgramName(char *name) { strcpy(name, programs[curProgram].name); }
void mdaLooplex::setBlockSize(LvzInt32 blockSize) { AudioEffectX::setBlockSize(blockSize); }
@@ -317,7 +364,7 @@ bool mdaLooplex::getProductString(char* text) { strcpy(text, "MDA Looplex"); re
bool mdaLooplex::getProgramNameIndexed(LvzInt32 category, LvzInt32 index, char* text)
{
- if(index<NPROGS)
+ if ((unsigned int)index < NPROGS)
{
strcpy(text, programs[index].name);
return true;
@@ -327,7 +374,7 @@ bool mdaLooplex::getProgramNameIndexed(LvzInt32 category, LvzInt32 index, char*
bool mdaLooplex::copyProgram(LvzInt32 destination)
-{
+{
if(destination<NPROGS)
{
programs[destination] = programs[curProgram];
@@ -365,6 +412,7 @@ void mdaLooplex::getParameterName(LvzInt32 index, char *label)
void mdaLooplex::getParameterDisplay(LvzInt32 index, char *text)
{
char string[16];
+ float * param = programs[curProgram].param;
switch(index)
{
@@ -419,10 +467,10 @@ void mdaLooplex::processReplacing(float **inputs, float **outputs, LvzInt32 samp
float* in2 = inputs[1];
float* out1 = outputs[0];
float* out2 = outputs[1];
- long event=0, frame=0, frames;
+ LvzInt32 event=0, frame=0, frames;
float l, r, dl, dr, d0 = 0.0f, d1;
float imix = in_mix, ipan = in_pan, omix = out_mix, fb = feedback * modwhl;
- long x;
+ LvzInt32 x;
if((bypassed = bypass)) return;
@@ -459,7 +507,7 @@ void mdaLooplex::processReplacing(float **inputs, float **outputs, LvzInt32 samp
dl = fb * (float)buffer[bufpos];
if(recreq)
{
- x = (long)(32768.0f * l + dl + d0 - d1 + 100000.5f) - 100000;
+ x = (LvzInt32)(32768.0f * l + dl + d0 - d1 + 100000.5f) - 100000;
if(x > 32767) x = 32767; else if(x < -32768) x = -32768;
buffer[bufpos] = (short)x;
}
@@ -469,7 +517,7 @@ void mdaLooplex::processReplacing(float **inputs, float **outputs, LvzInt32 samp
dr = fb * (float)buffer[bufpos];
if(recreq)
{
- x = (long)(32768.0f * r + dr - d0 + d1 + 100000.5f) - 100000;
+ x = (LvzInt32)(32768.0f * r + dr - d0 + d1 + 100000.5f) - 100000;
if(x > 32767) x = 32767; else if(x < -32768) x = -32768;
buffer[bufpos] = (short)x;
}
@@ -498,8 +546,8 @@ void mdaLooplex::processReplacing(float **inputs, float **outputs, LvzInt32 samp
if(frame<sampleFrames)
{
- long note = notes[event++];
- //long vel = notes[event++];
+ LvzInt32 note = notes[event++];
+ //LvzInt32 vel = notes[event++];
if(note == 2)
{
@@ -517,9 +565,9 @@ void mdaLooplex::processReplacing(float **inputs, float **outputs, LvzInt32 samp
LvzInt32 mdaLooplex::processEvents(LvzEvents* ev)
{
- long npos=0;
+ LvzInt32 npos=0;
- for (long i=0; i<ev->numEvents; i++)
+ for (LvzInt32 i=0; i<ev->numEvents; i++)
{
if((ev->events[i])->type != kLvzMidiType) continue;
LvzMidiEvent* event = (LvzMidiEvent*)ev->events[i];
diff --git a/src/mdaLooplex.h b/src/mdaLooplex.h
index e838c7f..f35e83a 100644
--- a/src/mdaLooplex.h
+++ b/src/mdaLooplex.h
@@ -18,8 +18,6 @@ class mdaLooplexProgram
friend class mdaLooplex;
public:
mdaLooplexProgram();
- ~mdaLooplexProgram() {}
-
private:
float param[NPARAMS];
char name[24];
@@ -63,21 +61,20 @@ public:
private:
void update(); //my parameter update
- float param[NPARAMS];
mdaLooplexProgram* programs;
float Fs;
#define EVENTBUFFER 120
#define EVENTS_DONE 99999999
- long notes[EVENTBUFFER + 8]; //list of delta|note|velocity for current block
+ LvzInt32 notes[EVENTBUFFER + 8]; //list of delta|note|velocity for current block
///global internal variables
float in_mix, in_pan, out_mix, feedback, modwhl;
short *buffer;
- long bufpos, buflen, bufmax, mode;
+ LvzInt32 bufpos, buflen, bufmax, mode;
- long bypass, bypassed, busy, status, recreq;
+ LvzInt32 bypass, bypassed, busy, status, recreq;
float oldParam0, oldParam1, oldParam2;
};
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;
}
diff --git a/src/mdaLoudness.h b/src/mdaLoudness.h
index 18f4f21..0e13d95 100644
--- a/src/mdaLoudness.h
+++ b/src/mdaLoudness.h
@@ -13,8 +13,6 @@ class mdaLoudnessProgram
{
public:
mdaLoudnessProgram();
- ~mdaLoudnessProgram() {}
-
private:
friend class mdaLoudness;
float param[NPARAMS];
@@ -33,6 +31,7 @@ public:
virtual void setProgram(LvzInt32 program);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
@@ -47,14 +46,12 @@ public:
virtual LvzInt32 getVendorVersion() { return 1000; }
protected:
- float param[NPARAMS];
- char programName[32];
mdaLoudnessProgram *programs;
///global internal variables
float Z0, Z1, Z2, Z3, A0, A1, A2, gain;
float igain, ogain;
- long mode;
+ LvzInt32 mode;
};
#endif
diff --git a/src/mdaMultiBand.cpp b/src/mdaMultiBand.cpp
index 003452c..035c69d 100644
--- a/src/mdaMultiBand.cpp
+++ b/src/mdaMultiBand.cpp
@@ -2,14 +2,14 @@
#include <math.h>
#include <float.h>
-
+
AudioEffect *createEffectInstance(audioMasterCallback audioMaster)
{
return new mdaMultiBand(audioMaster);
}
mdaMultiBand::mdaMultiBand(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, 1, 13) // programs, parameters
-{
+{
//inits here!
fParam1 = (float)1.00; //Listen: L/M/H/out
fParam2 = (float)0.103; //xover1
@@ -78,7 +78,7 @@ mdaMultiBand::mdaMultiBand(audioMasterCallback audioMaster) : AudioEffectX(audio
}
fi1 = (float)pow(10.0,fParam2 - 1.70); fo1=(float)(1.0 - fi1);
fi2 = (float)pow(10.0,fParam3 - 1.05); fo2=(float)(1.0 - fi2);
- mswap = 0;
+ mswap = 0;
}
mdaMultiBand::~mdaMultiBand()
@@ -100,6 +100,16 @@ void mdaMultiBand::getProgramName(char *name)
strcpy(name, programName);
}
+bool mdaMultiBand::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if (index == 0)
+ {
+ strcpy(name, programName);
+ return true;
+ }
+ return false;
+}
+
void mdaMultiBand::setParameter(LvzInt32 index, float value)
{
switch(index)
@@ -196,7 +206,7 @@ void mdaMultiBand::getParameterName(LvzInt32 index, char *label)
}
#include <stdio.h>
-void long2string(long value, char *string) { sprintf(string, "%ld", value); }
+void int2strng(LvzInt32 value, char *string) { sprintf(string, "%d", value); }
void mdaMultiBand::getParameterDisplay(LvzInt32 index, char *text)
{
@@ -207,17 +217,17 @@ void mdaMultiBand::getParameterDisplay(LvzInt32 index, char *text)
case 1: case 2: strcpy(text, "Mid"); break;
case 3: case 4: strcpy(text, "High"); break;
default: strcpy(text, "Output"); break; } break;
- case 1: long2string((long)(getSampleRate() * fi1 * (0.098 + 0.09*fi1 + 0.5*(float)pow(fi1,8.2f))), text); break;
- case 2: long2string((long)(getSampleRate() * fi2 * (0.015 + 0.15*fi2 + 0.9*(float)pow(fi2,8.2f))), text); break;
- case 3: long2string((long)(30.0 * fParam4), text); break;
- case 4: long2string((long)(30.0 * fParam5), text); break;
- case 5: long2string((long)(30.0 * fParam6), text); break;
- case 6: long2string((long)(40.0 * fParam7 - 20.0), text); break;
- case 7: long2string((long)(40.0 * fParam8 - 20.0), text); break;
- case 8: long2string((long)(40.0 * fParam9 - 20.0), text); break;
- case 9: long2string((long)(-301030.1 / (getSampleRate() * log10(1.0 - att2))),text); break;
- case 10: long2string((long)(-301.0301 / (getSampleRate() * log10(1.0 - rel2))),text); break;
- case 11: long2string((long)(200.0 * fParam12), text); break;
+ case 1: int2strng((LvzInt32)(getSampleRate() * fi1 * (0.098 + 0.09*fi1 + 0.5*(float)pow(fi1,8.2f))), text); break;
+ case 2: int2strng((LvzInt32)(getSampleRate() * fi2 * (0.015 + 0.15*fi2 + 0.9*(float)pow(fi2,8.2f))), text); break;
+ case 3: int2strng((LvzInt32)(30.0 * fParam4), text); break;
+ case 4: int2strng((LvzInt32)(30.0 * fParam5), text); break;
+ case 5: int2strng((LvzInt32)(30.0 * fParam6), text); break;
+ case 6: int2strng((LvzInt32)(40.0 * fParam7 - 20.0), text); break;
+ case 7: int2strng((LvzInt32)(40.0 * fParam8 - 20.0), text); break;
+ case 8: int2strng((LvzInt32)(40.0 * fParam9 - 20.0), text); break;
+ case 9: int2strng((LvzInt32)(-301030.1 / (getSampleRate() * log10(1.0 - att2))),text); break;
+ case 10: int2strng((LvzInt32)(-301.0301 / (getSampleRate() * log10(1.0 - rel2))),text); break;
+ case 11: int2strng((LvzInt32)(200.0 * fParam12), text); break;
case 12: if(mswap) strcpy(text, "S");
else strcpy(text, "M"); break;
}
@@ -236,7 +246,7 @@ void mdaMultiBand::getParameterLabel(LvzInt32 index, char *label)
case 6: strcpy(label, "dB"); break;
case 7: strcpy(label, "dB"); break;
case 8: strcpy(label, "dB"); break;
- case 9: strcpy(label, "µs"); break;
+ case 9: strcpy(label, "�s"); break;
case 10: strcpy(label, "ms"); break;
case 11: strcpy(label, "% Width"); break;
case 12: strcpy(label, ""); break;
diff --git a/src/mdaMultiBand.h b/src/mdaMultiBand.h
index f91bd17..6f83c56 100644
--- a/src/mdaMultiBand.h
+++ b/src/mdaMultiBand.h
@@ -13,6 +13,7 @@ public:
virtual void processReplacing(float **inputs, float **outputs, LvzInt32 sampleFrames);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
diff --git a/src/mdaOverdrive.cpp b/src/mdaOverdrive.cpp
index 2abe56d..6fd319b 100644
--- a/src/mdaOverdrive.cpp
+++ b/src/mdaOverdrive.cpp
@@ -1,7 +1,7 @@
#include "mdaOverdrive.h"
-#include <math.h>
-
+#include <math.h>
+
AudioEffect *createEffectInstance(audioMasterCallback audioMaster)
{
@@ -22,12 +22,12 @@ mdaOverdrive::mdaOverdrive(audioMasterCallback audioMaster) : AudioEffectX(audio
strcpy(programName, "Soft Overdrive");
filt1 = filt2 = 0.0f;
- setParameter(0, 0.0f);
+ setParameter(0, 0.0f);
}
mdaOverdrive::~mdaOverdrive()
{
-
+
}
bool mdaOverdrive::getProductString(char* text) { strcpy(text, "MDA Overdrive"); return true; }
@@ -44,6 +44,16 @@ void mdaOverdrive::getProgramName(char *name)
strcpy(name, programName);
}
+bool mdaOverdrive::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if (index == 0)
+ {
+ strcpy(name, programName);
+ return true;
+ }
+ return false;
+}
+
void mdaOverdrive::setParameter(LvzInt32 index, float value)
{
switch(index)
@@ -80,15 +90,15 @@ void mdaOverdrive::getParameterName(LvzInt32 index, char *label)
}
#include <stdio.h>
-void long2string(long value, char *string) { sprintf(string, "%ld", value); }
+void int2strng(LvzInt32 value, char *string) { sprintf(string, "%d", value); }
void mdaOverdrive::getParameterDisplay(LvzInt32 index, char *text)
{
switch(index)
{
- case 0: long2string((long)(100 * fParam1 ), text); break;
- case 1: long2string((long)(100 * fParam2 ), text); break;
- case 2: long2string((long)( 40 * fParam3 - 20), text); break;
+ case 0: int2strng((LvzInt32)(100 * fParam1 ), text); break;
+ case 1: int2strng((LvzInt32)(100 * fParam2 ), text); break;
+ case 2: int2strng((LvzInt32)( 40 * fParam3 - 20), text); break;
}
}
diff --git a/src/mdaOverdrive.h b/src/mdaOverdrive.h
index a1fff23..a45eba7 100644
--- a/src/mdaOverdrive.h
+++ b/src/mdaOverdrive.h
@@ -13,6 +13,7 @@ public:
virtual void processReplacing(float **inputs, float **outputs, LvzInt32 sampleFrames);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
diff --git a/src/mdaPiano.cpp b/src/mdaPiano.cpp
index 2fafaf5..ccaa9f5 100644
--- a/src/mdaPiano.cpp
+++ b/src/mdaPiano.cpp
@@ -9,7 +9,7 @@
#include <stdio.h>
#include <math.h>
-
+
//#include "AEffEditor.hpp" ////for GUI
@@ -48,7 +48,7 @@ mdaPiano::mdaPiano(audioMasterCallback audioMaster) : AudioEffectX(audioMaster,
if(programs)
{
//fill patches...
- long i=0;
+ LvzInt32 i=0;
fillpatch(i++, "MDA Piano", 0.500f, 0.500f, 0.500f, 0.5f, 0.803f, 0.251f, 0.376f, 0.500f, 0.330f, 0.500f, 0.246f, 0.500f);
fillpatch(i++, "Plain Piano", 0.500f, 0.500f, 0.500f, 0.5f, 0.751f, 0.000f, 0.452f, 0.000f, 0.000f, 0.500f, 0.000f, 0.500f);
fillpatch(i++, "Compressed Piano", 0.902f, 0.399f, 0.623f, 0.5f, 1.000f, 0.331f, 0.299f, 0.499f, 0.330f, 0.500f, 0.000f, 0.500f);
@@ -92,7 +92,7 @@ mdaPiano::mdaPiano(audioMasterCallback audioMaster) : AudioEffectX(audioMaster,
kgrp[14].root = 93; kgrp[14].high = 999; kgrp[14].pos = 574123; kgrp[14].end = 586343; kgrp[14].loop = 2399;
//initialise...
- for(long v=0; v<NVOICES; v++)
+ for(LvzInt32 v=0; v<NVOICES; v++)
{
voice[v].env = 0.0f;
voice[v].dec = 0.99f; //all notes off
@@ -106,13 +106,14 @@ mdaPiano::mdaPiano(audioMasterCallback audioMaster) : AudioEffectX(audioMaster,
guiUpdate = 0;
update();
- suspend();
+ suspend();
}
void mdaPiano::update() //parameter change
{
- size = (long)(12.0f * param[2] - 6.0f);
+ float * param = programs[curProgram].param;
+ size = (LvzInt32)(12.0f * param[2] - 6.0f);
sizevel = 0.12f * param[3];
muffvel = param[5] * param[5] * 5.0f;
@@ -127,7 +128,7 @@ void mdaPiano::update() //parameter change
trim = 1.50f - 0.79f * cdep;
width = 0.04f * param[7]; if(width > 0.03f) width = 0.03f;
- poly = 8 + (long)(24.9f * param[8]);
+ poly = 8 + (LvzInt32)(24.9f * param[8]);
}
@@ -145,25 +146,22 @@ void mdaPiano::resume()
mdaPiano::~mdaPiano () //destroy any buffers...
{
if(programs) delete [] programs;
- if(comb) delete[] comb;
+ if(comb) delete[] comb;
}
void mdaPiano::setProgram(LvzInt32 program)
{
- long i;
-
- mdaPianoProgram *p = &programs[program];
curProgram = program;
- for(i=0; i<NPARAMS; i++) param[i] = p->param[i];
- update();
+ update();
+
+ // TODO: guiUpdate ???
}
void mdaPiano::setParameter(LvzInt32 index, float value)
{
- mdaPianoProgram *p = &programs[curProgram];
- param[index] = p->param[index] = value;
+ programs[curProgram].param[index] = value;
update();
// if(editor) editor->postUpdate(); //For GUI
@@ -172,7 +170,7 @@ void mdaPiano::setParameter(LvzInt32 index, float value)
}
-void mdaPiano::fillpatch(long p, const char *name, float p0, float p1, float p2, float p3, float p4,
+void mdaPiano::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);
@@ -185,7 +183,7 @@ void mdaPiano::fillpatch(long p, const char *name, float p0, float p1, float p2,
}
-float mdaPiano::getParameter(LvzInt32 index) { return param[index]; }
+float mdaPiano::getParameter(LvzInt32 index) { return programs[curProgram].param[index]; }
void mdaPiano::setProgramName(char *name) { strcpy(programs[curProgram].name, name); }
void mdaPiano::getProgramName(char *name) { strcpy(name, programs[curProgram].name); }
void mdaPiano::setBlockSize(LvzInt32 blockSize) { AudioEffectX::setBlockSize(blockSize); }
@@ -210,7 +208,7 @@ bool mdaPiano::getOutputProperties(LvzInt32 index, LvzPinProperties* properties)
bool mdaPiano::getProgramNameIndexed(LvzInt32 category, LvzInt32 index, char* text)
{
- if(index<NPROGS)
+ if ((unsigned int)index < NPROGS)
{
strcpy(text, programs[index].name);
return true;
@@ -264,12 +262,13 @@ void mdaPiano::getParameterName(LvzInt32 index, char *label)
void mdaPiano::getParameterDisplay(LvzInt32 index, char *text)
{
char string[16];
+ float * param = programs[curProgram].param;
switch(index)
{
case 4: sprintf(string, "%.0f", 100.0f - 100.0f * param[index]); break;
case 7: sprintf(string, "%.0f", 200.0f * param[index]); break;
- case 8: sprintf(string, "%ld", poly); break;
+ case 8: sprintf(string, "%d", poly); break;
case 10: sprintf(string, "%.1f", 50.0f * param[index] * param[index]); break;
case 2:
case 9:
@@ -308,9 +307,9 @@ void mdaPiano::process(float **inputs, float **outputs, LvzInt32 sampleFrames)
{
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;
- long i;
+ LvzInt32 i;
while(frame<sampleFrames)
{
@@ -353,8 +352,8 @@ void mdaPiano::process(float **inputs, float **outputs, LvzInt32 sampleFrames)
if(frame<sampleFrames)
{
- long note = notes[event++];
- long vel = notes[event++];
+ LvzInt32 note = notes[event++];
+ LvzInt32 vel = notes[event++];
noteOn(note, vel);
}
}
@@ -367,9 +366,9 @@ void mdaPiano::processReplacing(float **inputs, float **outputs, LvzInt32 sample
{
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;
- long i;
+ LvzInt32 i;
while(frame<sampleFrames)
{
@@ -403,7 +402,7 @@ void mdaPiano::processReplacing(float **inputs, float **outputs, LvzInt32 sample
if(!(l > -2.0f) || !(l < 2.0f))
{
- printf("what is this shit? %ld, %f, %f\n", i, x, V->f0);
+ printf("what is this shit? %d, %f, %f\n", i, x, V->f0);
l = 0.0f;
}
if(!(r > -2.0f) || !(r < 2.0f))
@@ -423,8 +422,8 @@ if(!(r > -2.0f) || !(r < 2.0f))
if(frame<sampleFrames)
{
- long note = notes[event++];
- long vel = notes[event++];
+ LvzInt32 note = notes[event++];
+ LvzInt32 vel = notes[event++];
noteOn(note, vel);
}
}
@@ -433,10 +432,11 @@ if(!(r > -2.0f) || !(r < 2.0f))
}
-void mdaPiano::noteOn(long note, long velocity)
+void mdaPiano::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)
{
@@ -458,14 +458,14 @@ void mdaPiano::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++; //find keygroup
l += (float)(note - kgrp[k].root); //pitch
l = 22050.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;
voice[vl].pos = kgrp[k].pos;
voice[vl].end = kgrp[k].end;
@@ -508,9 +508,9 @@ void mdaPiano::noteOn(long note, long velocity)
LvzInt32 mdaPiano::processEvents(LvzEvents* ev)
{
- long npos=0;
+ LvzInt32 npos=0;
- for (long i=0; i<ev->numEvents; i++)
+ for (LvzInt32 i=0; i<ev->numEvents; i++)
{
if((ev->events[i])->type != kLvzMidiType) continue;
LvzMidiEvent* event = (LvzMidiEvent*)ev->events[i];
@@ -556,7 +556,7 @@ LvzInt32 mdaPiano::processEvents(LvzEvents* ev)
default: //all notes off
if(midiData[1]>0x7A)
{
- for(long v=0; v<NVOICES; v++) voice[v].dec=0.99f;
+ for(LvzInt32 v=0; v<NVOICES; v++) voice[v].dec=0.99f;
sustain = 0;
muff = 160.0f;
}
diff --git a/src/mdaPiano.h b/src/mdaPiano.h
index 5232f84..865911c 100644
--- a/src/mdaPiano.h
+++ b/src/mdaPiano.h
@@ -30,11 +30,11 @@ private:
struct VOICE //voice state
{
- long delta; //sample playback
- long frac;
- long pos;
- long end;
- long loop;
+ LvzInt32 delta; //sample playback
+ LvzInt32 frac;
+ LvzInt32 pos;
+ LvzInt32 end;
+ LvzInt32 loop;
float env; //envelope
float dec;
@@ -45,17 +45,17 @@ struct VOICE //voice state
float outl;
float outr;
- long note; //remember what note triggered this
+ LvzInt32 note; //remember what note triggered this
};
struct KGRP //keygroup
{
- long root; //MIDI root note
- long high; //highest note
- long pos;
- long end;
- long loop;
+ LvzInt32 root; //MIDI root note
+ LvzInt32 high; //highest note
+ LvzInt32 pos;
+ LvzInt32 end;
+ LvzInt32 loop;
};
class mdaPiano : public AudioEffectX
@@ -90,13 +90,13 @@ public:
virtual LvzInt32 getNumMidiInputChannels () { return 1; }
- long guiUpdate;
+ LvzInt32 guiUpdate;
void guiGetDisplay(LvzInt32 index, char *label);
private:
void update(); //my parameter update
- void noteOn(long note, long velocity);
- void fillpatch(long p, const char *name, float p0, float p1, float p2, float p3, float p4,
+ void noteOn(LvzInt32 note, LvzInt32 velocity);
+ void 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);
float param[NPARAMS];
@@ -105,16 +105,16 @@ private:
#define EVENTBUFFER 120
#define EVENTS_DONE 99999999
- long notes[EVENTBUFFER + 8]; //list of delta|note|velocity for current block
+ LvzInt32 notes[EVENTBUFFER + 8]; //list of delta|note|velocity for current block
///global internal variables
KGRP kgrp[16];
VOICE voice[NVOICES];
- long activevoices, poly, cpos;
+ LvzInt32 activevoices, poly, cpos;
short *waves;
- long cmax;
+ LvzInt32 cmax;
float *comb, cdep, width, trim;
- long size, sustain;
+ LvzInt32 size, sustain;
float tune, fine, random, stretch;
float muff, muffvel, sizevel, velsens, volume;
};
diff --git a/src/mdaRezFilter.cpp b/src/mdaRezFilter.cpp
index 7e00db7..75b2aea 100644
--- a/src/mdaRezFilter.cpp
+++ b/src/mdaRezFilter.cpp
@@ -98,6 +98,16 @@ void mdaRezFilter::getProgramName(char *name)
strcpy(name, programName);
}
+bool mdaRezFilter::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if (index == 0)
+ {
+ strcpy(name, programName);
+ return true;
+ }
+ return false;
+}
+
float mdaRezFilter::getParameter(LvzInt32 index)
{
float v=0;
@@ -136,24 +146,24 @@ void mdaRezFilter::getParameterName(LvzInt32 index, char *label)
}
#include <stdio.h>
-void long2string(long value, char *string) { sprintf(string, "%ld", value); }
+void int2strng(LvzInt32 value, char *string) { sprintf(string, "%d", value); }
void float2strng(float value, char *string) { sprintf(string, "%.2f", value); }
void mdaRezFilter::getParameterDisplay(LvzInt32 index, char *text)
{
switch(index)
{
- case 0: long2string((long)(100 * fParam0), text); break;
- case 1: long2string((long)(100 * fParam1), text); break;
- case 2: long2string((long)(40 *fParam2 - 20),text); break;
- case 3: long2string((long)(200 * fParam3 - 100), text); break;
+ case 0: int2strng((LvzInt32)(100 * fParam0), text); break;
+ case 1: int2strng((LvzInt32)(100 * fParam1), text); break;
+ case 2: int2strng((LvzInt32)(40 *fParam2 - 20),text); break;
+ case 3: int2strng((LvzInt32)(200 * fParam3 - 100), text); break;
case 4: float2strng((float)(-301.0301 / (getSampleRate() * log10(1.0 - att))),text); break;
case 5: float2strng((float)(-301.0301 / (getSampleRate() * log10(rel))),text); break;
- case 6: long2string((long)(200 * fParam6 - 100), text); break;
+ case 6: int2strng((LvzInt32)(200 * fParam6 - 100), text); break;
case 7: float2strng((float)pow(10.0f, 4.f*fParam7 - 2.f), text); break;
case 8: if(tthr==0.f) strcpy(text, "FREE RUN");
- else long2string((long)(20*log10(0.5*tthr)), text); break;
- case 9: long2string((long)(100 * fParam9), text); break;
+ else int2strng((LvzInt32)(20*log10(0.5*tthr)), text); break;
+ case 9: int2strng((LvzInt32)(100 * fParam9), text); break;
}
}
diff --git a/src/mdaRezFilter.h b/src/mdaRezFilter.h
index 14deec3..a2579a0 100644
--- a/src/mdaRezFilter.h
+++ b/src/mdaRezFilter.h
@@ -13,6 +13,7 @@ public:
virtual void processReplacing(float **inputs, float **outputs, LvzInt32 sampleFrames);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
diff --git a/src/mdaRingMod.cpp b/src/mdaRingMod.cpp
index 20a689f..259c597 100644
--- a/src/mdaRingMod.cpp
+++ b/src/mdaRingMod.cpp
@@ -45,6 +45,16 @@ void mdaRingMod::getProgramName(char *name)
strcpy(name, programName);
}
+bool mdaRingMod::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if (index == 0)
+ {
+ strcpy(name, programName);
+ return true;
+ }
+ return false;
+}
+
void mdaRingMod::setParameter(LvzInt32 index, float value)
{
switch(index)
@@ -81,15 +91,15 @@ void mdaRingMod::getParameterName(LvzInt32 index, char *label)
}
#include <stdio.h>
-void long2string(long value, char *string) { sprintf(string, "%ld", value); }
+void int2strng(LvzInt32 value, char *string) { sprintf(string, "%d", value); }
void mdaRingMod::getParameterDisplay(LvzInt32 index, char *text)
{
switch(index)
{
- case 0: long2string((long)(100. * floor(160. * fParam1)), text); break;
- case 1: long2string((long)(100. * fParam2), text); break;
- case 2: long2string((long)(100. * fParam3), text); break;
+ case 0: int2strng((LvzInt32)(100. * floor(160. * fParam1)), text); break;
+ case 1: int2strng((LvzInt32)(100. * fParam2), text); break;
+ case 2: int2strng((LvzInt32)(100. * fParam3), text); break;
}
}
diff --git a/src/mdaRingMod.h b/src/mdaRingMod.h
index d3934e2..5255f2b 100644
--- a/src/mdaRingMod.h
+++ b/src/mdaRingMod.h
@@ -13,6 +13,7 @@ public:
virtual void processReplacing(float **inputs, float **outputs, LvzInt32 sampleFrames);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
diff --git a/src/mdaRoundPan.cpp b/src/mdaRoundPan.cpp
index f012e18..e040f2e 100644
--- a/src/mdaRoundPan.cpp
+++ b/src/mdaRoundPan.cpp
@@ -83,6 +83,16 @@ void mdaRoundPan::getProgramName(char *name)
strcpy(name, programName);
}
+bool mdaRoundPan::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if (index == 0)
+ {
+ strcpy(name, programName);
+ return true;
+ }
+ return false;
+}
+
float mdaRoundPan::getParameter(LvzInt32 index)
{
float v=0;
@@ -105,14 +115,14 @@ void mdaRoundPan::getParameterName(LvzInt32 index, char *label)
}
#include <stdio.h>
-void long2string(long value, char *string) { sprintf(string, "%ld", value); }
+void int2strng(LvzInt32 value, char *string) { sprintf(string, "%d", value); }
void mdaRoundPan::getParameterDisplay(LvzInt32 index, char *text)
{
switch(index)
{
- case 0: long2string((long)(360.0 * (fParam1 - 0.5)), text); break;
- case 1: long2string((long)(57.296 * dphi * getSampleRate()), text); break;
+ case 0: int2strng((LvzInt32)(360.0 * (fParam1 - 0.5)), text); break;
+ case 1: int2strng((LvzInt32)(57.296 * dphi * getSampleRate()), text); break;
}
}
diff --git a/src/mdaRoundPan.h b/src/mdaRoundPan.h
index 0aa49f7..916dcaf 100644
--- a/src/mdaRoundPan.h
+++ b/src/mdaRoundPan.h
@@ -13,6 +13,7 @@ public:
virtual void processReplacing(float **inputs, float **outputs, LvzInt32 sampleFrames);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
@@ -33,7 +34,7 @@ protected:
float phi, dphi;
//float *buffer, *buffer2;
- //long size, bufpos;
+ //LvzInt32 size, bufpos;
char programName[32];
};
diff --git a/src/mdaShepard.cpp b/src/mdaShepard.cpp
index c9b8ec1..0e21794 100644
--- a/src/mdaShepard.cpp
+++ b/src/mdaShepard.cpp
@@ -91,6 +91,16 @@ void mdaShepard::getProgramName(char *name)
strcpy(name, programName);
}
+bool mdaShepard::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if (index == 0)
+ {
+ strcpy(name, programName);
+ return true;
+ }
+ return false;
+}
+
float mdaShepard::getParameter(LvzInt32 index)
{
float v=0;
@@ -115,7 +125,7 @@ void mdaShepard::getParameterName(LvzInt32 index, char *label)
}
#include <stdio.h>
-void long2string(long value, char *string) { sprintf(string, "%ld", value); }
+void int2strng(LvzInt32 value, char *string) { sprintf(string, "%d", value); }
void mdaShepard::getParameterDisplay(LvzInt32 index, char *text)
{
@@ -127,8 +137,8 @@ void mdaShepard::getParameterDisplay(LvzInt32 index, char *text)
case 1: strcpy(text, "RING MOD"); break;
case 2: strcpy(text, "TONES+IN"); break;
} break;
- case 1: long2string((long)(200 * fParam1 - 100), text); break;
- case 2: long2string((long)(40 * fParam2 - 20), text); break;
+ case 1: int2strng((LvzInt32)(200 * fParam1 - 100), text); break;
+ case 2: int2strng((LvzInt32)(40 * fParam2 - 20), text); break;
}
}
@@ -153,7 +163,7 @@ void mdaShepard::process(float **inputs, float **outputs, LvzInt32 sampleFrames)
float *out2 = outputs[1];
float a, b, c, d;
float r=rate, dr=drate, o=out, p=pos, di;
- long x=max, m=mode, i1, i2;
+ LvzInt32 x=max, m=mode, i1, i2;
--in1;
--in2;
@@ -205,7 +215,7 @@ void mdaShepard::processReplacing(float **inputs, float **outputs, LvzInt32 samp
float *out2 = outputs[1];
float a, b;
float r=rate, dr=drate, o=out, p=pos, di;
- long x=max, m=mode, i1, i2;
+ LvzInt32 x=max, m=mode, i1, i2;
--in1;
--in2;
diff --git a/src/mdaShepard.h b/src/mdaShepard.h
index 4347c6b..cce85d3 100644
--- a/src/mdaShepard.h
+++ b/src/mdaShepard.h
@@ -13,6 +13,7 @@ public:
virtual void processReplacing(float **inputs, float **outputs, LvzInt32 sampleFrames);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
@@ -32,7 +33,7 @@ protected:
float level, pos, rate, drate, out, filt;
float *buf1, *buf2;
- long max, mode;
+ LvzInt32 max, mode;
char programName[32];
};
diff --git a/src/mdaSpecMeter.cpp b/src/mdaSpecMeter.cpp
index 7aae786..5a02c7c 100644
--- a/src/mdaSpecMeter.cpp
+++ b/src/mdaSpecMeter.cpp
@@ -22,8 +22,10 @@ createEffectInstance (audioMasterCallback audioMaster)
mdaSpecMeterProgram::mdaSpecMeterProgram ()
{
- param[_PARAM0] = 1.0;
- strcpy (name, "MDA SpecMeter");
+ param[_PARAM0] = 0.5;
+ param[_PARAM1] = 0.5;
+ param[_PARAM2] = 0.75;
+ strcpy (name, "default");
}
@@ -83,9 +85,9 @@ mdaSpecMeter::suspend ()
lpeak = rpeak = lrms = rrms = corr = 0.0f;
Lhold = Rhold = 0.0f;
Lmin = Rmin = 0.0000001f;
- for (long i = 0; i < 16; i++) {
+ for (LvzInt32 i = 0; i < 16; i++) {
band[0][i] = band[1][i] = 0.0f;
- for (long j = 0; j < 6; j++)
+ for (LvzInt32 j = 0; j < 6; j++)
lpp[j][i] = rpp[j][i] = 0.0f;
}
@@ -93,20 +95,14 @@ mdaSpecMeter::suspend ()
}
void
-mdaSpecMeter::setSampleRate (float rate)
+mdaSpecMeter::setSampleRate(float sampleRate)
{
- AudioEffectX::setSampleRate (rate);
- if (rate > 64000) {
- topband = 12;
- kmax = 4096;
- } else {
- topband = 11;
- kmax = 2048;
- }
- iK = 1.0f / (float) kmax;
+ AudioEffectX::setSampleRate(sampleRate);
+ if(sampleRate > 64000) { topband = 12; kmax = 4096; }
+ else { topband = 11; kmax = 2048; }
+ iK = 1.0f / (float)kmax;
}
-
mdaSpecMeter::~mdaSpecMeter ()
{
//if(buffer) delete [] buffer;
@@ -127,10 +123,21 @@ mdaSpecMeter::getProgramName (char *name)
strcpy (name, programs[curProgram].name);
}
+
+bool
+mdaSpecMeter::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if ((unsigned int)index < NPROGS) {
+ strcpy(name, programs[index].name);
+ return true;
+ }
+ return false;
+}
+
float
mdaSpecMeter::getParameter (LvzInt32 index)
{
- return param[index];
+ return programs[curProgram].param[index];
}
void
@@ -148,12 +155,11 @@ mdaSpecMeter::setProgram (LvzInt32 program)
void
mdaSpecMeter::setParameter (LvzInt32 index, float value)
{
- mdaSpecMeterProgram *p = &programs[curProgram];
- param[index] = p->param[index] = value;
+ programs[curProgram].param[index] = value;
switch (index) {
case _PARAM0:
- gain = (float) pow (10.0f, 2.0f * param[index] - 1.0f);
+ gain = (float)pow(10.0f, 2.0f * programs[curProgram].param[index] - 1.0f);
break;
default:
@@ -181,13 +187,17 @@ void
mdaSpecMeter::getParameterDisplay (LvzInt32 index, char *text)
{
char string[16];
+ float * param = programs[curProgram].param;
switch (index) {
case _PARAM0:
- sprintf (string, "%.1f", 40.0f * param[index] - 20.0f);
+ sprintf(string, "%.1f", 40.0f * param[index] - 20.0f);
+ break;
+ case _PARAM1:
+ strcpy (string, "");
break;
default:
- sprintf (string, "%.0f", 0.0f * param[index]);
+ sprintf(string, "%.0f", 100.0f * param[index]);
}
string[8] = 0;
strcpy (text, (char *) string);
@@ -199,7 +209,7 @@ mdaSpecMeter::getParameterLabel (LvzInt32 index, char *label)
{
switch (index) {
case _PARAM0:
- strcpy (label, "Gain");
+ strcpy (label, "");
break;
default:
strcpy (label, "");
diff --git a/src/mdaSpecMeter.h b/src/mdaSpecMeter.h
index 90111c4..e99137c 100644
--- a/src/mdaSpecMeter.h
+++ b/src/mdaSpecMeter.h
@@ -9,10 +9,15 @@
#include <string.h>
+#define NPROGS 4 //can hide decay settings in programs! fast...slow...peak hold
#define SILENCE 0.00000001f
enum {
- _PARAM0, // gain
+ _PARAM0, //peak decay
+ _PARAM1, //RMS speed
+ _PARAM2, //spectrum speed
+ _PARAM3, //peak reset?
+
NPARAMS
};
@@ -23,8 +28,6 @@ class mdaSpecMeterProgram
friend class mdaSpecMeter;
public:
mdaSpecMeterProgram();
- ~mdaSpecMeterProgram() {}
-
private:
float param[NPARAMS];
char name[24];
@@ -42,6 +45,7 @@ public:
virtual void setProgram(LvzInt32 program);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
@@ -56,17 +60,16 @@ public:
virtual LvzInt32 getVendorVersion() { return 1000; }
//accessible from editor
- long counter;
+ LvzInt32 counter;
float Lpeak, Lhold, Lmin, Lrms, Rpeak, Rhold, Rmin, Rrms, Corr; // #11 #12
float band[2][16]; //8 16 31 64 125 250 500 1k 2k 4k 8k 16k 32k
-
+
private:
mdaSpecMeterProgram *programs;
- float param[NPARAMS];
float iK, lpeak, lmin, lrms, rpeak, rmin, rrms, corr, den;
float lpp[6][16], rpp[6][16];
- long topband, K, kmax;
+ LvzInt32 topband, K, kmax;
float gain;
};
diff --git a/src/mdaSpecMeterGUI.cpp b/src/mdaSpecMeterGUI.cpp
index 7788ec1..dcee2a0 100644
--- a/src/mdaSpecMeterGUI.cpp
+++ b/src/mdaSpecMeterGUI.cpp
@@ -54,23 +54,29 @@ mdaSpecMeterGUI::close()
void
mdaSpecMeterGUI::idle()
{
- long xnow = ((mdaSpecMeter *) effect)->counter;
- if (xnow != xtimer) {
+ LvzInt32 xnow = ((mdaSpecMeter *)effect)->counter;
+ if(xnow != xtimer)
+ {
xtimer = xnow;
- if (draw) { // copy data from effect (this can't be the best way!)
- draw->Lpeak = ((mdaSpecMeter *) effect)->Lpeak;
- draw->Lmin = ((mdaSpecMeter *) effect)->Lmin;
- draw->Lrms = ((mdaSpecMeter *) effect)->Lrms;
- draw->Rpeak = ((mdaSpecMeter *) effect)->Rpeak;
- draw->Rmin = ((mdaSpecMeter *) effect)->Rmin;
- draw->Rrms = ((mdaSpecMeter *) effect)->Rrms;
- draw->Corr = ((mdaSpecMeter *) effect)->Corr;
- for (long i = 0; i < 13; i++) {
- draw->band[0][i] = ((mdaSpecMeter *) effect)->band[0][i];
- draw->band[1][i] = ((mdaSpecMeter *) effect)->band[1][i];
+ //if(draw) temp = draw->temp;
+ //if(label) label->setLabel(xtimer);
+
+ if(draw) //copy data from effect (this can't be the best way!)
+ {
+ draw->Lpeak = ((mdaSpecMeter *)effect)->Lpeak;
+ draw->Lmin = ((mdaSpecMeter *)effect)->Lmin;
+ draw->Lrms = ((mdaSpecMeter *)effect)->Lrms;
+ draw->Rpeak = ((mdaSpecMeter *)effect)->Rpeak;
+ draw->Rmin = ((mdaSpecMeter *)effect)->Rmin;
+ draw->Rrms = ((mdaSpecMeter *)effect)->Rrms;
+ draw->Corr = ((mdaSpecMeter *)effect)->Corr;
+ for(LvzInt32 i=0; i<13; i++)
+ {
+ draw->band[0][i] = ((mdaSpecMeter *)effect)->band[0][i];
+ draw->band[1][i] = ((mdaSpecMeter *)effect)->band[1][i];
}
- draw->setDirty(true); // trigger redraw
+ draw->setDirty(true); //trigger redraw
}
}
@@ -78,131 +84,108 @@ mdaSpecMeterGUI::idle()
}
-CDraw::CDraw(CRect & size, float value, CBitmap * background):
- CControl(size)
+CDraw::CDraw(CRect & size, float value, CBitmap * background) : CControl(size)
{
bitmap = background;
Lpeak = Lmin = Lrms = Rpeak = Rmin = Rrms = Corr = 0.0f;
- for (long i = 0; i < 16; i++)
+ for (LvzInt32 i = 0; i < 16; i++)
band[0][i] = band[1][i] = 0.0f;
setValue(value);
}
+
CDraw::~CDraw()
{
}
+
void
-CDraw::draw(CDrawContext * pContext)
+CDraw::draw(CDrawContext *pContext)
{
- long r, p;
+ LvzInt32 r, p;
CRect block;
CRect rect(0, 0, bitmap->getWidth(), bitmap->getHeight());
bitmap->draw(pContext, rect);
-
/*
- pContext->setFillColor(kGreenCColor);
-
- p = x2pix(Lmin);
- block(p - 3, 10, p - 1, 18);
- pContext->fillRect(block);
+ pContext->setFillColor(kGreenCColor);
- p = x2pix(Rmin);
- block(p - 3, 18, p - 1, 26);
- pContext->fillRect(block);
- */
+ p = x2pix(Lmin);
+ block(p - 3, 10, p - 1, 18);
+ pContext->fillRect(block);
+ p = x2pix(Rmin);
+ block(p - 3, 18, p - 1, 26);
+ pContext->fillRect(block);
+ */
pContext->setFillColor(kBlackCColor);
- r = x22pix(Lrms);
- if (r > 454)
- r = 454;
-
- p = x2pix(Lpeak);
- if (p > 454)
- p = 454;
-
- block = CRect(r - 1, 10, p - 1, 18);
+ r = x22pix(Lrms); if(r > 454) r = 454;
+ p = x2pix(Lpeak); if(p > 454) p = 454;
+ block(r - 1, 10, p - 1, 18);
pContext->fillRect(block);
+ block(p - 1, 10, 478, 18);
+ if(p < 454) pContext->fillRect(block);
- block = CRect(p - 1, 10, 478, 18);
- if (p < 454)
- pContext->fillRect(block);
-
- r = x22pix(Rrms);
- if (r > 454)
- r = 454;
-
- p = x2pix(Rpeak);
- if (p > 454)
- p = 454;
-
- block = CRect(r - 1, 18, p - 1, 26);
+ r = x22pix(Rrms); if(r > 454) r = 454;
+ p = x2pix(Rpeak); if(p > 454) p = 454;
+ block(r - 1, 18, p - 1, 26);
pContext->fillRect(block);
-
- block = CRect(p - 1, 18, 478, 26);
- if (p < 454)
- pContext->fillRect(block);
+ block(p - 1, 18, 478, 26);
+ if(p < 454) pContext->fillRect(block);
//block(x2pix(Rpeak), 18, 478, 26);
//buf->fillRect(block);
- block = CRect(235, 42, 244, 134 - (long)(90 * Corr));
+ block(235, 42, 244, 134 - (LvzInt32)(90 * Corr));
pContext->fillRect(block);
- long i, x1 = 2, x2 = 256; // octave bands
- for (i = 0; i < 13; i++) {
- float dB = band[0][i];
- block = CRect(x1, 42, x1 + 18, 49 - (long)(20.0 * log(dB)));
+ LvzInt32 i, x1=2, x2=256; //octave bands
+ float dB;
+ for(i=0; i<13; i++)
+ {
+ dB = band[0][i];
+ block(x1, 42, x1+18, 49 - (LvzInt32)(20.0 * log(dB)));
pContext->fillRect(block);
x1 += 17;
dB = band[1][i];
- block = CRect(x2, 42, x2 + 18, 49 - (long)(20.0 * log(dB)));
+ block(x2, 42, x2+18, 49 - (LvzInt32)(20.0 * log(dB)));
pContext->fillRect(block);
x2 += 17;
}
}
-long
+LvzInt32
CDraw::x2pix(float x)
{
float dB = x;
- long p = 478;
+ LvzInt32 p = 478;
- if (x > 0.00000005f)
- dB = 8.6858896f * (float)log(x);
+ if(x > 0.00000005f) dB = 8.6858896f * (float)log(x); else dB = -146.0f;
+ if(dB < -20.0)
+ p = 293 + (LvzInt32)(2.0f * dB);
else
- dB = -146.0f;
-
- if (dB < -20.0)
- p = 293 + (long)(2.0f * dB);
- else
- p = 453 + (long)(10.0f * dB);
+ p = 453 + (LvzInt32)(10.0f * dB);
return p;
}
-long
-CDraw::x22pix(float x) // power version for squared summed
+LvzInt32
+CDraw::x22pix(float x) //power version for squared summed
{
float dB = x;
- long p = 478;
+ LvzInt32 p = 478;
- if (x > 0.00000005f)
- dB = 4.3429448f * (float)log(x);
+ if(x > 0.00000005f) dB = 4.3429448f * (float)log(x); else dB = -146.0f;
+ if(dB < -20.0)
+ p = 293 + (LvzInt32)(2.0f * dB);
else
- dB = -146.0f;
-
- if (dB < -20.0)
- p = 293 + (long)(2.0f * dB);
- else if (dB < 0.0f)
- p = 453 + (long)(10.0f * dB);
+ if(dB < 0.0f) p = 453 + (LvzInt32)(10.0f * dB);
return p;
}
diff --git a/src/mdaSpecMeterGUI.h b/src/mdaSpecMeterGUI.h
index 99a71f7..bc0a232 100644
--- a/src/mdaSpecMeterGUI.h
+++ b/src/mdaSpecMeterGUI.h
@@ -1,43 +1,44 @@
-#ifndef _mdaSpecMeterGUI_h_
-#define _mdaSpecMeterGUI_h_
-
-#include "vstgui.h"
-
-
-class CDraw : public CControl
-{
-public:
- CDraw(CRect& size, float x, CBitmap* background);
- ~CDraw();
-
- void draw(CDrawContext* pContext);
- long x2pix(float x);
- long x22pix(float x);
-
- float Lpeak, Lrms, Lmin, Rpeak, Rrms, Rmin, Corr;
- float band[2][16];
-
-protected:
- CBitmap* bitmap;
-};
-
-
-class mdaSpecMeterGUI : public AEffGUIEditor
-{
-public:
- mdaSpecMeterGUI(AudioEffect* effect);
- ~mdaSpecMeterGUI();
-
- long open(void* ptr);
- void idle();
- void close();
-
-private:
- CDraw* draw;
- CBitmap* background;
- long xtimer;
-};
-
-
-#endif // _mdaSpecMeterGUI_h_
-
+#ifndef _mdaSpecMeterGUI_h_
+#define _mdaSpecMeterGUI_h_
+
+#include "vstgui.h"
+
+
+class CDraw : public CControl
+{
+public:
+ CDraw(CRect& size, float x, CBitmap* background);
+ ~CDraw();
+
+ void draw(CDrawContext *pContext);
+ LvzInt32 x2pix(float x);
+ LvzInt32 x22pix(float x);
+
+ float Lpeak, Lrms, Lmin, Rpeak, Rrms, Rmin, Corr;
+ float band[2][16];
+ LvzInt32 temp;
+
+protected:
+ CBitmap* bitmap;
+};
+
+
+class mdaSpecMeterGUI : public AEffGUIEditor
+{
+public:
+ mdaSpecMeterGUI(AudioEffect* effect);
+ ~mdaSpecMeterGUI();
+
+ long open(void* ptr);
+ void idle();
+ void close();
+
+private:
+ CDraw* draw;
+ CBitmap* background;
+ LvzInt32 xtimer;
+};
+
+
+#endif // _mdaSpecMeterGUI_h_
+
diff --git a/src/mdaSplitter.cpp b/src/mdaSplitter.cpp
index 018f0c9..f0c4fd6 100644
--- a/src/mdaSplitter.cpp
+++ b/src/mdaSplitter.cpp
@@ -37,7 +37,7 @@ mdaSplitter::mdaSplitter(audioMasterCallback audioMaster): AudioEffectX(audioMas
DECLARE_LVZ_DEPRECATED(canMono) ();
canProcessReplacing();
- programs = new mdaSplitterProgram[numPrograms];
+ programs = new mdaSplitterProgram[NPROGS];
setProgram(0);
///differences from default program...
@@ -56,7 +56,7 @@ bool mdaSplitter::getEffectName(char* name) { strcpy(name, "Splitter"); retu
void mdaSplitter::resume() ///update internal parameters...
{
- long tmp;
+ float * param = programs[curProgram].param;
freq = param[1];
fdisp = (float)pow(10.0f, 2.0f + 2.0f * freq); //frequency
@@ -64,7 +64,7 @@ void mdaSplitter::resume() ///update internal parameters...
if(freq>1.0f) freq = 1.0f;
ff = -1.0f; //above
- tmp = (long)(2.9f * param[2]); //frequency switching
+ LvzInt32 tmp = (LvzInt32)(2.9f * param[2]); //frequency switching
if(tmp==0) ff = 0.0f; //below
if(tmp==1) freq = 0.001f; //all
@@ -72,7 +72,7 @@ void mdaSplitter::resume() ///update internal parameters...
level = (float)pow(10.0f, 0.05f * ldisp + 0.3f);
ll = 0.0f; //above
- tmp = (long)(2.9f * param[4]); //level switching
+ tmp = (LvzInt32)(2.9f * param[4]); //level switching
if(tmp==0) ll = -1.0f; //below
if(tmp==1) level = 0.0f; //all
@@ -87,7 +87,7 @@ void mdaSplitter::resume() ///update internal parameters...
i2l = i2r = o2l = o2r = (float)pow(10.0f, 2.0f * param[6] - 1.0f); //gain
- mode = (long)(3.9f * param[0]); //output routing
+ mode = (LvzInt32)(3.9f * param[0]); //output routing
switch(mode)
{
case 0: i2l = 0.0f; i2r = 0.0f; break;
@@ -112,27 +112,30 @@ mdaSplitter::~mdaSplitter() ///destroy any buffers...
void mdaSplitter::setProgram(LvzInt32 program)
{
- int i=0;
-
- mdaSplitterProgram *p = &programs[program];
curProgram = program;
- setProgramName(p->name);
- for(i=0; i<NPARAMS; i++) param[i] = p->param[i];
resume();
}
void mdaSplitter::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 mdaSplitter::getParameter(LvzInt32 index) { return param[index]; }
-void mdaSplitter::setProgramName(char *name) { strcpy(programName, name); }
-void mdaSplitter::getProgramName(char *name) { strcpy(name, programName); }
-
+float mdaSplitter::getParameter(LvzInt32 index) { return programs[curProgram].param[index]; }
+void mdaSplitter::setProgramName(char *name) { strcpy(programs[curProgram].name, name); }
+void mdaSplitter::getProgramName(char *name) { strcpy(name, programs[curProgram].name); }
+bool mdaSplitter::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if ((unsigned int)index < NPROGS)
+ {
+ strcpy(name, programs[index].name);
+ return true;
+ }
+ return false;
+}
void mdaSplitter::getParameterName(LvzInt32 index, char *label)
{
@@ -152,6 +155,7 @@ void mdaSplitter::getParameterName(LvzInt32 index, char *label)
void mdaSplitter::getParameterDisplay(LvzInt32 index, char *text)
{
char string[16];
+ float * param = programs[curProgram].param;
switch(index)
{
@@ -166,7 +170,7 @@ void mdaSplitter::getParameterDisplay(LvzInt32 index, char *text)
case 3: sprintf(string, "%.0f", ldisp); break;
case 5: sprintf(string, "%.0f", (float)pow(10.0f, 1.0f + 2.0f * param[index])); break;
case 6: sprintf(string, "%.1f", 40.0f * param[index] - 20.0f); break;
- default: switch((long)(2.9f * param[index]))
+ default: switch((LvzInt32)(2.9f * param[index]))
{
case 0: strcpy (string, "BELOW"); break;
case 1: strcpy (string, "ALL"); break;
diff --git a/src/mdaSplitter.h b/src/mdaSplitter.h
index 0c4942b..dcb078c 100644
--- a/src/mdaSplitter.h
+++ b/src/mdaSplitter.h
@@ -13,8 +13,6 @@ class mdaSplitterProgram
{
public:
mdaSplitterProgram();
- ~mdaSplitterProgram() {}
-
private:
friend class mdaSplitter;
float param[NPARAMS];
@@ -33,6 +31,7 @@ public:
virtual void setProgram(LvzInt32 program);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
@@ -47,15 +46,13 @@ public:
virtual LvzInt32 getVendorVersion() { return 1000; }
protected:
- float param[NPARAMS];
- char programName[32];
mdaSplitterProgram *programs;
///global internal variables
float freq, fdisp, buf0, buf1, buf2, buf3; //filter
float level, ldisp, env, att, rel; //level switch
float ff, ll, pp, i2l, i2r, o2l, o2r; //routing (freq, level, phase, output)
- long mode;
+ LvzInt32 mode;
};
diff --git a/src/mdaStereo.cpp b/src/mdaStereo.cpp
index 59fc105..eedc62b 100644
--- a/src/mdaStereo.cpp
+++ b/src/mdaStereo.cpp
@@ -136,6 +136,16 @@ void mdaStereo::getProgramName(char *name)
strcpy(name, programName);
}
+bool mdaStereo::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if (index == 0)
+ {
+ strcpy(name, programName);
+ return true;
+ }
+ return false;
+}
+
float mdaStereo::getParameter(LvzInt32 index)
{
float v=0;
@@ -164,16 +174,16 @@ void mdaStereo::getParameterName(LvzInt32 index, char *label)
}
#include <stdio.h>
-void long2string(long value, char *string) { sprintf(string, "%ld", value); }
+void int2strng(LvzInt32 value, char *string) { sprintf(string, "%d", value); }
void float2strng(float value, char *string) { sprintf(string, "%.2f", value); }
void mdaStereo::getParameterDisplay(LvzInt32 index, char *text)
{
switch(index)
{
- case 0: long2string((long)(200.0 * fabs(fParam1 - 0.5)), text);break;
+ case 0: int2strng((LvzInt32)(200.0 * fabs(fParam1 - 0.5)), text);break;
case 1: float2strng((float)(1000.0 * fdel / getSampleRate()), text); break;
- case 2: long2string((long)(200.0 * (fParam3 - 0.5)), text); break;
+ case 2: int2strng((LvzInt32)(200.0 * (fParam3 - 0.5)), text); break;
case 3: if(mod>0.f) float2strng((float)(1000.0 * mod / getSampleRate()), text);
else strcpy(text, "OFF"); break;
case 4: float2strng((float)pow(10.0,2.0 - 3.0 * fParam5), text); break;
@@ -204,7 +214,7 @@ void mdaStereo::process(float **inputs, float **outputs, LvzInt32 sampleFrames)
float *out2 = outputs[1];
float a, b, c, d;
float li, ld, ri, rd, del, ph=phi, dph=dphi, mo=mod;
- long tmp, bp = bufpos;
+ LvzInt32 tmp, bp = bufpos;
li = fli;
ld = fld;
@@ -275,7 +285,7 @@ void mdaStereo::processReplacing(float **inputs, float **outputs, LvzInt32 sampl
float *out2 = outputs[1];
float a, b, c, d;
float li, ld, ri, rd, del, ph=phi, dph=dphi, mo=mod;
- long tmp, bp = bufpos;
+ LvzInt32 tmp, bp = bufpos;
li = fli;
ld = fld;
diff --git a/src/mdaStereo.h b/src/mdaStereo.h
index 61609eb..ce6912e 100644
--- a/src/mdaStereo.h
+++ b/src/mdaStereo.h
@@ -13,6 +13,7 @@ public:
virtual void processReplacing(float **inputs, float **outputs, LvzInt32 sampleFrames);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
@@ -36,7 +37,7 @@ protected:
float fli, fld, fri, frd, fdel, phi, dphi, mod;
float *buffer;
- long size, bufpos;
+ LvzInt32 size, bufpos;
char programName[32];
};
diff --git a/src/mdaSubSynth.cpp b/src/mdaSubSynth.cpp
index db8f0f8..4de2ac9 100644
--- a/src/mdaSubSynth.cpp
+++ b/src/mdaSubSynth.cpp
@@ -48,6 +48,16 @@ void mdaSubSynth::getProgramName(char *name)
strcpy(name, programName);
}
+bool mdaSubSynth::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if (index == 0)
+ {
+ strcpy(name, programName);
+ return true;
+ }
+ return false;
+}
+
void mdaSubSynth::setProgram(LvzInt32 program)
{
}
@@ -112,11 +122,11 @@ void mdaSubSynth::getParameterDisplay(LvzInt32 index, char *text)
switch(index)
{
- case 1: sprintf(string, "%ld", (long)(100.0f * wet)); break;
- case 2: sprintf(string, "%ld", (long)(0.0726 * getSampleRate() * pow(10.0,-2.5 + (1.5 * fParam3)))); break;
- case 3: sprintf(string, "%ld", (long)(100. * dry)); break;
+ case 1: sprintf(string, "%d", (LvzInt32)(100.0f * wet)); break;
+ case 2: sprintf(string, "%d", (LvzInt32)(0.0726 * getSampleRate() * pow(10.0,-2.5 + (1.5 * fParam3)))); break;
+ case 3: sprintf(string, "%d", (LvzInt32)(100. * dry)); break;
case 4: sprintf(string, "%.1f", 60.0f * fParam5 - 60.0f); break;
- case 5: sprintf(string, "%ld", (long)(-301.03 / (getSampleRate() * log10(rls)))); break;
+ case 5: sprintf(string, "%d", (LvzInt32)(-301.03 / (getSampleRate() * log10(rls)))); break;
case 0: switch(typ)
{
diff --git a/src/mdaSubSynth.h b/src/mdaSubSynth.h
index b0d3a8c..d2b3956 100644
--- a/src/mdaSubSynth.h
+++ b/src/mdaSubSynth.h
@@ -11,6 +11,7 @@ public:
virtual void setProgram(LvzInt32 program);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
diff --git a/src/mdaTalkBox.cpp b/src/mdaTalkBox.cpp
index 2d24d7b..1649f7a 100644
--- a/src/mdaTalkBox.cpp
+++ b/src/mdaTalkBox.cpp
@@ -44,7 +44,7 @@ mdaTalkBox::mdaTalkBox(audioMasterCallback audioMaster): AudioEffectX(audioMaste
N = 1; //trigger window recalc
K = 0;
- programs = new mdaTalkBoxProgram[numPrograms];
+ programs = new mdaTalkBoxProgram[NPROGS];
if(programs)
{
///differences from default program...
@@ -64,16 +64,17 @@ bool mdaTalkBox::getEffectName(char* name) { strcpy(name, "TalkBox"); return
void mdaTalkBox::resume() ///update internal parameters...
{
float fs = getSampleRate();
+ float * param = programs[curProgram].param;
if(fs < 8000.0f) fs = 8000.0f;
if(fs > 96000.0f) fs = 96000.0f;
swap = (param[2] > 0.5f)? 1 : 0;
- long n = (long)(0.01633f * fs);
+ LvzInt32 n = (LvzInt32)(0.01633f * fs);
if(n > BUF_MAX) n = BUF_MAX;
- //O = (long)(0.0005f * fs);
- O = (long)((0.0001f + 0.0004f * param[3]) * fs);
+ //O = (LvzInt32)(0.0005f * fs);
+ O = (LvzInt32)((0.0001f + 0.0004f * param[3]) * fs);
if(n != N) //recalc hanning window
{
@@ -120,25 +121,29 @@ mdaTalkBox::~mdaTalkBox() ///destroy any buffers...
void mdaTalkBox::setProgram(LvzInt32 program)
{
- int i=0;
-
- mdaTalkBoxProgram *p = &programs[program];
curProgram = program;
- for(i=0; i<NPARAMS; i++) param[i] = p->param[i];
resume();
}
void mdaTalkBox::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 mdaTalkBox::getParameter(LvzInt32 index) { return param[index]; }
+float mdaTalkBox::getParameter(LvzInt32 index) { return programs[curProgram].param[index]; }
void mdaTalkBox::setProgramName(char *name) { strcpy(programs[curProgram].name, name); }
void mdaTalkBox::getProgramName(char *name) { strcpy(name, programs[curProgram].name); }
-
+bool mdaTalkBox::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if ((unsigned int)index < NPROGS)
+ {
+ strcpy(name, programs[index].name);
+ return true;
+ }
+ return false;
+}
void mdaTalkBox::getParameterName(LvzInt32 index, char *label)
{
@@ -156,6 +161,7 @@ void mdaTalkBox::getParameterName(LvzInt32 index, char *label)
void mdaTalkBox::getParameterDisplay(LvzInt32 index, char *text)
{
char string[16];
+ float * param = programs[curProgram].param;
switch(index)
{
@@ -193,7 +199,7 @@ void mdaTalkBox::process(float **inputs, float **outputs, LvzInt32 sampleFrames)
}
float *out1 = outputs[0];
float *out2 = outputs[1];
- long p0=pos, p1 = (pos + N/2) % N;
+ LvzInt32 p0=pos, p1 = (pos + N/2) % N;
float e=emphasis, w, o, x, c, d, dr, fx=FX;
float p, q, h0=0.3f, h1=0.77f;
@@ -266,7 +272,7 @@ void mdaTalkBox::processReplacing(float **inputs, float **outputs, LvzInt32 samp
}
float *out1 = outputs[0];
float *out2 = outputs[1];
- long p0=pos, p1 = (pos + N/2) % N;
+ LvzInt32 p0=pos, p1 = (pos + N/2) % N;
float e=emphasis, w, o, x, dr, fx=FX;
float p, q, h0=0.3f, h1=0.77f;
@@ -325,10 +331,10 @@ void mdaTalkBox::processReplacing(float **inputs, float **outputs, LvzInt32 samp
}
-void mdaTalkBox::lpc(float *buf, float *car, long n, long o)
+void mdaTalkBox::lpc(float *buf, float *car, LvzInt32 n, LvzInt32 o)
{
float z[ORD_MAX], r[ORD_MAX], k[ORD_MAX], G, x;
- long i, j, nn=n;
+ LvzInt32 i, j, nn=n;
for(j=0; j<=o; j++, nn--) //buf[] is already emphasized and windowed
{
diff --git a/src/mdaTalkBox.h b/src/mdaTalkBox.h
index ab3e345..593e2b7 100644
--- a/src/mdaTalkBox.h
+++ b/src/mdaTalkBox.h
@@ -32,6 +32,7 @@ public:
virtual void setProgram(LvzInt32 program);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
@@ -46,10 +47,9 @@ public:
virtual LvzInt32 getVendorVersion() { return 1000; }
protected:
- float param[NPARAMS];
mdaTalkBoxProgram *programs;
- void lpc(float *buf, float *car, long n, long o);
+ void lpc(float *buf, float *car, LvzInt32 n, LvzInt32 o);
void lpc_durbin(float *r, int p, float *k, float *g);
///global internal variables
@@ -58,7 +58,7 @@ protected:
float *buf0, *buf1;
float emphasis;
- long K, N, O, pos, swap;
+ LvzInt32 K, N, O, pos, swap;
float wet, dry, FX;
float d0, d1, d2, d3, d4;
diff --git a/src/mdaTestTone.cpp b/src/mdaTestTone.cpp
index 5c6650e..4972940 100644
--- a/src/mdaTestTone.cpp
+++ b/src/mdaTestTone.cpp
@@ -55,8 +55,18 @@ void mdaTestTone::getProgramName(char *name)
strcpy(name, programName);
}
+bool mdaTestTone::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if (index == 0)
+ {
+ strcpy(name, programName);
+ return true;
+ }
+ return false;
+}
+
#include <stdio.h>
-void long2string(long value, char *string) { sprintf(string, "%ld", value); }
+void int2strng(LvzInt32 value, char *string) { sprintf(string, "%d", value); }
void float2strng(float value, char *string) { sprintf(string, "%.2f", value); }
void mdaTestTone::setParameter(LvzInt32 index, float value)
@@ -72,49 +82,49 @@ void mdaTestTone::setParameter(LvzInt32 index, float value)
case 5: fParam6 = value; break;
case 7: fParam7 = value; break;
}
-
-
- //just update display text...
- int this_mode = int(8.9 * fParam0);
- float f, df=0.0f;
- if(fParam4>0.6) df = 1.25f*fParam4 - 0.75f;
- if(fParam4<0.4) df = 1.25f*fParam4 - 0.50f;
- switch(this_mode)
- {
- case 0: //MIDI note
- f = (float)floor(128.f*fParam3);
- //long2string((long)f, disp1); //Semi
- midi2string(f, disp1); //Semitones
- long2string((long)(100.f*df), disp2); //Cents
- break;
-
- case 1: //no frequency display
- case 2:
- case 3:
- case 4: strcpy(disp1, "--");
- strcpy(disp2, "--"); break;
-
- case 5: //sine
- f = 13.f + (float)floor(30.f*fParam3);
- iso2string(f, disp1); //iso band freq
- f=(float)pow(10.0f, 0.1f*(f+df));
- float2strng(f, disp2); //Hz
- break;
-
- case 6: //log sweep & step
- case 7: sw = 13.f + (float)floor(30.f*fParam3);
- swx = 13.f + (float)floor(30.f*fParam4);
- iso2string(sw, disp1); //start freq
- iso2string(swx, disp2); //end freq
- break;
-
- case 8: //lin sweep
- sw = 200.f * (float)floor(100.f*fParam3);
- swx = 200.f * (float)floor(100.f*fParam4);
- long2string((long)sw, disp1); //start freq
- long2string((long)swx, disp2); //end freq
- break;
- }
+
+
+ //just update display text...
+ mode = int(8.9 * fParam0);
+ float f, df=0.0f;
+ if(fParam4>0.6) df = 1.25f*fParam4 - 0.75f;
+ if(fParam4<0.4) df = 1.25f*fParam4 - 0.50f;
+ switch(mode)
+ {
+ case 0: //MIDI note
+ f = (float)floor(128.f*fParam3);
+ //int2strng((LvzInt32)f, disp1); //Semi
+ midi2string(f, disp1); //Semitones
+ int2strng((LvzInt32)(100.f*df), disp2); //Cents
+ break;
+
+ case 1: //no frequency display
+ case 2:
+ case 3:
+ case 4: strcpy(disp1, "--");
+ strcpy(disp2, "--"); break;
+
+ case 5: //sine
+ f = 13.f + (float)floor(30.f*fParam3);
+ iso2string(f, disp1); //iso band freq
+ f=(float)pow(10.0f, 0.1f*(f+df));
+ float2strng(f, disp2); //Hz
+ break;
+
+ case 6: //log sweep & step
+ case 7: sw = 13.f + (float)floor(30.f*fParam3);
+ swx = 13.f + (float)floor(30.f*fParam4);
+ iso2string(sw, disp1); //start freq
+ iso2string(swx, disp2); //end freq
+ break;
+
+ case 8: //lin sweep
+ sw = 200.f * (float)floor(100.f*fParam3);
+ swx = 200.f * (float)floor(100.f*fParam4);
+ int2strng((LvzInt32)sw, disp1); //start freq
+ int2strng((LvzInt32)swx, disp2); //end freq
+ break;
+ }
updateTx++;
}
@@ -134,7 +144,7 @@ void mdaTestTone::update()
if(fParam2<0.3f) right=0.f; else right=left;
if(fParam2>0.6f) left=0.f;
len = 1.f + 0.5f*(float)int(62*fParam6);
- swt=(long)(len*getSampleRate());
+ swt=(LvzInt32)(len*getSampleRate());
if(fParam7>0.8) //output level trim
{
@@ -162,9 +172,9 @@ void mdaTestTone::update()
{
case 0: //MIDI note
f = (float)floor(128.f*fParam3);
- //long2string((long)f, disp1); //Semi
+ //int2strng((LvzInt32)f, disp1); //Semi
midi2string(f, disp1); //Semitones
- long2string((long)(100.f*df), disp2); //Cents
+ int2strng((LvzInt32)(100.f*df), disp2); //Cents
dphi = 51.37006f*(float)pow(1.0594631f,f+df)/getSampleRate();
break;
@@ -190,19 +200,19 @@ void mdaTestTone::update()
if(sw>swx) { swd=swx; swx=sw; sw=swd; } //only sweep up
if(mode==7) swx += 1.f;
swd = (swx-sw) / (len*getSampleRate());
- swt= 2 * (long)getSampleRate();
+ swt= 2 * (LvzInt32)getSampleRate();
break;
case 8: //lin sweep
sw = 200.f * (float)floor(100.f*fParam3);
swx = 200.f * (float)floor(100.f*fParam4);
- long2string((long)sw, disp1); //start freq
- long2string((long)swx, disp2); //end freq
+ int2strng((LvzInt32)sw, disp1); //start freq
+ int2strng((LvzInt32)swx, disp2); //end freq
if(sw>swx) { swd=swx; swx=sw; sw=swd; } //only sweep up
sw = twopi*sw/getSampleRate();
swx = twopi*swx/getSampleRate();
swd = (swx-sw) / (len*getSampleRate());
- swt= 2 * (long)getSampleRate();
+ swt= 2 * (LvzInt32)getSampleRate();
break;
}
thru = (float)pow(10.0f, (0.05f * (float)int(40.f*fParam5)) - 2.f);
@@ -335,7 +345,7 @@ void mdaTestTone::getParameterDisplay(LvzInt32 index, char *text)
case 7: strcpy(text, "LOG STEP"); break;
case 8: strcpy(text, "LIN SWP."); break;
} break;
- case 1: long2string((long)(int(60.f * fParam1) - 60.0 - calx), text); break;
+ case 1: int2strng((LvzInt32)(int(60.f * fParam1) - 60.0 - calx), text); break;
case 2: if(fParam2>0.3f)
{ if(fParam2>0.7f) strcpy(text, "RIGHT");
else strcpy(text, "CENTRE"); }
@@ -343,8 +353,8 @@ void mdaTestTone::getParameterDisplay(LvzInt32 index, char *text)
case 3: strcpy(text, disp1); break;
case 4: strcpy(text, disp2); break;
case 6: if(fParam5==0) strcpy(text, "OFF");
- else long2string((long)(40 * fParam5 - 40), text); break;
- case 5: long2string(1000 + 500*int(62*fParam6), text); break;
+ else int2strng((LvzInt32)(40 * fParam5 - 40), text); break;
+ case 5: int2strng(1000 + 500*int(62*fParam6), text); break;
case 7: float2strng(cal, text); break;
}
}
@@ -379,7 +389,7 @@ void mdaTestTone::process(float **inputs, float **outputs, LvzInt32 sampleFrames
float z0=zz0, z1=zz1, z2=zz2, z3=zz3, z4=zz4, z5=zz5;
float ph=phi, dph=dphi, l=left, r=right, t=thru;
float s=sw, sx=swx, ds=swd, fsc=fscale;
- long st=swt;
+ LvzInt32 st=swt;
int m=mode;
--in1;
@@ -398,7 +408,7 @@ void mdaTestTone::process(float **inputs, float **outputs, LvzInt32 sampleFrames
case 1: if(st>0) { st--; x=0.f; } else //impulse
{
x=1.f;
- st=(long)(len*getSampleRate());
+ st=(LvzInt32)(len*getSampleRate());
}
break;
@@ -470,7 +480,7 @@ void mdaTestTone::processReplacing(float **inputs, float **outputs, LvzInt32 sam
float z0=zz0, z1=zz1, z2=zz2, z3=zz3, z4=zz4, z5=zz5;
float ph=phi, dph=dphi, l=left, r=right, t=thru;
float s=sw, sx=swx, ds=swd, fsc=fscale;
- long st=swt;
+ LvzInt32 st=swt;
int m=mode;
--in1;
@@ -487,7 +497,7 @@ void mdaTestTone::processReplacing(float **inputs, float **outputs, LvzInt32 sam
case 1: if(st>0) { st--; x=0.f; } else //impulse
{
x=1.f;
- st=(long)(len*getSampleRate());
+ st=(LvzInt32)(len*getSampleRate());
}
break;
diff --git a/src/mdaTestTone.h b/src/mdaTestTone.h
index f613678..4bf2317 100644
--- a/src/mdaTestTone.h
+++ b/src/mdaTestTone.h
@@ -13,6 +13,7 @@ public:
virtual void processReplacing(float **inputs, float **outputs, LvzInt32 sampleFrames);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
@@ -38,7 +39,7 @@ protected:
float thru, left, right, len;
float zz0, zz1, zz2, zz3, zz4, zz5, phi, dphi;
float sw, swd, swx, fscale, cal, calx;
- long swt;
+ LvzInt32 swt;
int mode;
char programName[32], disp1[16], disp2[16];
diff --git a/src/mdaThruZero.cpp b/src/mdaThruZero.cpp
index 23b8afb..7bcd67f 100644
--- a/src/mdaThruZero.cpp
+++ b/src/mdaThruZero.cpp
@@ -35,7 +35,7 @@ mdaThruZero::mdaThruZero(audioMasterCallback audioMaster): AudioEffectX(audioMas
DECLARE_LVZ_DEPRECATED(canMono) ();
canProcessReplacing();
- programs = new mdaThruZeroProgram[numPrograms]; ///////////////TODO: programs
+ programs = new mdaThruZeroProgram[NPROGS]; ///////////////TODO: programs
setProgram(0);
///differences from default program...
@@ -72,6 +72,7 @@ bool mdaThruZero::getEffectName(char* name) { strcpy(name, "ThruZero"); retu
void mdaThruZero::resume() ///update internal parameters...
{
+ float * param = programs[curProgram].param;
rat = (float)(pow(10.0f, 3.f * param[0] - 2.f) * 2.f / getSampleRate());
dep = 2000.0f * param[1] * param[1];
dem = dep - dep * param[4];
@@ -101,12 +102,7 @@ mdaThruZero::~mdaThruZero() ///destroy any buffers...
void mdaThruZero::setProgram(LvzInt32 program)
{
- int i=0;
-
- mdaThruZeroProgram *p = &programs[program];
curProgram = program;
- setProgramName(p->name);
- for(i=0; i<NPARAMS; i++) param[i] = p->param[i];
resume();
}
@@ -114,14 +110,23 @@ void mdaThruZero::setProgram(LvzInt32 program)
void mdaThruZero::setParameter(LvzInt32 index, float value)
{
if(index==3) phi=0.0f; //reset cycle
- param[index] = value; resume();
+ programs[curProgram].param[index] = value;
+ resume();
}
-float mdaThruZero::getParameter(LvzInt32 index) { return param[index]; }
-void mdaThruZero::setProgramName(char *name) { strcpy(programName, name); }
-void mdaThruZero::getProgramName(char *name) { strcpy(name, programName); }
-
+float mdaThruZero::getParameter(LvzInt32 index) { return programs[curProgram].param[index]; }
+void mdaThruZero::setProgramName(char *name) { strcpy(programs[curProgram].name, name); }
+void mdaThruZero::getProgramName(char *name) { strcpy(name, programs[curProgram].name); }
+bool mdaThruZero::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if ((unsigned int)index < NPROGS)
+ {
+ strcpy(name, programs[index].name);
+ return true;
+ }
+ return false;
+}
void mdaThruZero::getParameterName(LvzInt32 index, char *label)
{
@@ -139,6 +144,7 @@ void mdaThruZero::getParameterName(LvzInt32 index, char *label)
void mdaThruZero::getParameterDisplay(LvzInt32 index, char *text)
{
char string[16];
+ float * param = programs[curProgram].param;
switch(index)
{
@@ -200,7 +206,7 @@ void mdaThruZero::processReplacing(float **inputs, float **outputs, LvzInt32 sam
float *out2 = outputs[1];
float a, b, f=fb, f1=fb1, f2=fb2, ph=phi;
float ra=rat, de=dep, we=wet, dr=dry, ds=deps, dm=dem;
- long tmp, tmpi, bp=bufpos;
+ LvzInt32 tmp, tmpi, bp=bufpos;
float tmpf, dpt;
--in1;
diff --git a/src/mdaThruZero.h b/src/mdaThruZero.h
index f4ca0ee..d2e20fd 100644
--- a/src/mdaThruZero.h
+++ b/src/mdaThruZero.h
@@ -15,8 +15,6 @@ class mdaThruZeroProgram
{
public:
mdaThruZeroProgram();
- ~mdaThruZeroProgram() {}
-
private:
friend class mdaThruZero;
float param[NPARAMS];
@@ -35,6 +33,7 @@ public:
virtual void setProgram(LvzInt32 program);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
@@ -49,15 +48,13 @@ public:
virtual LvzInt32 getVendorVersion() { return 1000; }
protected:
- float param[NPARAMS];
- char programName[32];
mdaThruZeroProgram *programs;
///global internal variables
float rat, dep, wet, dry, fb, dem; //rate, depth, wet & dry mix, feedback, mindepth
float phi, fb1, fb2, deps; //lfo & feedback buffers, depth change smoothing
float *buffer, *buffer2; //maybe use 2D buffer?
- long size, bufpos;
+ LvzInt32 size, bufpos;
};
#endif
diff --git a/src/mdaTracker.cpp b/src/mdaTracker.cpp
index 0a8d028..815597e 100644
--- a/src/mdaTracker.cpp
+++ b/src/mdaTracker.cpp
@@ -28,7 +28,7 @@ mdaTracker::mdaTracker(audioMasterCallback audioMaster) : AudioEffectX(audioMast
strcpy(programName, "Pitch Tracker");
dphi = 100.f/getSampleRate(); //initial pitch
- min = (long)(getSampleRate()/30.0); //lower limit
+ min = (LvzInt32)(getSampleRate()/30.0); //lower limit
res1 = (float)cos(0.01); //p
res2 = (float)sin(0.01); //q
@@ -53,7 +53,7 @@ void mdaTracker::setParameter(LvzInt32 index, float value)
fo = filterFreq(50.f); fi = (1.f - fo)*(1.f - fo);
ddphi = fParam4 * fParam4;
thr = (float)pow(10.0, 3.0*fParam7 - 3.8);
- max = (long)(getSampleRate() / pow(10.0f, 1.6f + 2.2f * fParam6));
+ max = (LvzInt32)(getSampleRate() / pow(10.0f, 1.6f + 2.2f * fParam6));
trans = (float)pow(1.0594631,int(72.f*fParam5 - 36.f));
wet = (float)pow(10.0, 2.0*fParam8 - 1.0);
if(mode<4)
@@ -102,6 +102,16 @@ void mdaTracker::getProgramName(char *name)
strcpy(name, programName);
}
+bool mdaTracker::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if (index == 0)
+ {
+ strcpy(name, programName);
+ return true;
+ }
+ return false;
+}
+
float mdaTracker::getParameter(LvzInt32 index)
{
float v=0;
@@ -136,7 +146,7 @@ void mdaTracker::getParameterName(LvzInt32 index, char *label)
}
#include <stdio.h>
-void long2string(long value, char *string) { sprintf(string, "%ld", value); }
+void int2strng(LvzInt32 value, char *string) { sprintf(string, "%d", value); }
void mdaTracker::getParameterDisplay(LvzInt32 index, char *text)
{
@@ -150,13 +160,13 @@ void mdaTracker::getParameterDisplay(LvzInt32 index, char *text)
case 3: strcpy(text, "RING"); break;
case 4: strcpy(text, "EQ"); break;
} break;
- case 1: long2string((long)(100 * fParam2), text); break;
- case 2: long2string((long)(100 * fParam3), text); break;
- case 3: long2string((long)(100 * fParam4), text); break;
- case 4: long2string((long)(72*fParam5 - 36), text); break;
- case 5: long2string((long)(getSampleRate()/max), text); break;
- case 6: long2string((long)(60*fParam7 - 60), text); break;
- case 7: long2string((long)(40*fParam8 - 20), text); break;
+ case 1: int2strng((LvzInt32)(100 * fParam2), text); break;
+ case 2: int2strng((LvzInt32)(100 * fParam3), text); break;
+ case 3: int2strng((LvzInt32)(100 * fParam4), text); break;
+ case 4: int2strng((LvzInt32)(72*fParam5 - 36), text); break;
+ case 5: int2strng((LvzInt32)(getSampleRate()/max), text); break;
+ case 6: int2strng((LvzInt32)(60*fParam7 - 60), text); break;
+ case 7: int2strng((LvzInt32)(40*fParam8 - 20), text); break;
}
}
@@ -187,7 +197,7 @@ void mdaTracker::process(float **inputs, float **outputs, LvzInt32 sampleFrames)
float o=fo, i=fi, b1=buf1, b2=buf2, twopi=6.2831853f;
float we=wet, dr=dry, bo=bold, r1=res1, r2=res2, b3=buf3, b4=buf4;
float sw=saw, dsw=dsaw, dy=dyn, e=env, re=rel;
- long m=max, n=num, s=sig, mn=min, mo=mode;
+ LvzInt32 m=max, n=num, s=sig, mn=min, mo=mode;
--in1;
--in2;
@@ -271,7 +281,7 @@ void mdaTracker::processReplacing(float **inputs, float **outputs, LvzInt32 samp
float o=fo, i=fi, b1=buf1, b2=buf2, twopi=6.2831853f;
float we=wet, dr=dry, bo=bold, r1=res1, r2=res2, b3=buf3, b4=buf4;
float sw=saw, dsw=dsaw, dy=dyn, e=env, re=rel;
- long m=max, n=num, s=sig, mn=min, mo=mode;
+ LvzInt32 m=max, n=num, s=sig, mn=min, mo=mode;
--in1;
--in2;
diff --git a/src/mdaTracker.h b/src/mdaTracker.h
index 46fa15c..01f54b6 100644
--- a/src/mdaTracker.h
+++ b/src/mdaTracker.h
@@ -13,6 +13,7 @@ public:
virtual void processReplacing(float **inputs, float **outputs, LvzInt32 sampleFrames);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
@@ -39,7 +40,7 @@ protected:
float buf1, buf2, dn, bold, wet, dry;
float dyn, env, rel, saw, dsaw;
float res1, res2, buf3, buf4;
- long max, min, num, sig, mode;
+ LvzInt32 max, min, num, sig, mode;
char programName[32];
};
diff --git a/src/mdaTransient.cpp b/src/mdaTransient.cpp
index d35c9f5..ba27302 100644
--- a/src/mdaTransient.cpp
+++ b/src/mdaTransient.cpp
@@ -45,6 +45,16 @@ void mdaTransient::getProgramName(char *name)
strcpy(name, programName);
}
+bool mdaTransient::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if (index == 0)
+ {
+ strcpy(name, programName);
+ return true;
+ }
+ return false;
+}
+
void mdaTransient::setParameter(LvzInt32 index, float value)
{
switch(index)
@@ -126,18 +136,18 @@ void mdaTransient::getParameterName(LvzInt32 index, char *label)
}
#include <stdio.h>
-void long2string(long value, char *string) { sprintf(string, "%ld", value); }
+void int2strng(LvzInt32 value, char *string) { sprintf(string, "%d", value); }
void mdaTransient::getParameterDisplay(LvzInt32 index, char *text)
{
switch(index)
{
- case 0: long2string((long)(200*fParam1 - 100),text); break;
- case 1: long2string((long)(200*fParam2 - 100),text); break;
- case 2: long2string((long)(40.0*fParam3 - 20.0),text); break;
- case 3: long2string((long)(20*fParam4 - 10),text); break;
- case 4: long2string((long)(100*fParam5),text); break;
- case 5: long2string((long)(100*fParam6),text); break;
+ case 0: int2strng((LvzInt32)(200*fParam1 - 100),text); break;
+ case 1: int2strng((LvzInt32)(200*fParam2 - 100),text); break;
+ case 2: int2strng((LvzInt32)(40.0*fParam3 - 20.0),text); break;
+ case 3: int2strng((LvzInt32)(20*fParam4 - 10),text); break;
+ case 4: int2strng((LvzInt32)(100*fParam5),text); break;
+ case 5: int2strng((LvzInt32)(100*fParam6),text); break;
}
}
diff --git a/src/mdaTransient.h b/src/mdaTransient.h
index 0a1938a..d13a5ee 100644
--- a/src/mdaTransient.h
+++ b/src/mdaTransient.h
@@ -13,6 +13,7 @@ public:
virtual void processReplacing(float **inputs, float **outputs, LvzInt32 sampleFrames);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
diff --git a/src/mdaVocInput.cpp b/src/mdaVocInput.cpp
index ed9cf5c..f4372ea 100644
--- a/src/mdaVocInput.cpp
+++ b/src/mdaVocInput.cpp
@@ -48,10 +48,11 @@ bool mdaVocInput::getEffectName(char* name) { strcpy(name, "VocInput"); retu
void mdaVocInput::resume() ///update internal parameters...
{
float fs, ifs;
+ float * param = programs[curProgram].param;
fs = getSampleRate();
ifs = 1.0f / fs;
- track = (long)(2.99f * param[0]);
+ track = (LvzInt32)(2.99f * param[0]);
pmult = (float)pow(1.0594631f, floor(48.0f * param[1] - 24.0f));
if(track==0) pstep = 110.0f * pmult * ifs;
@@ -79,21 +80,28 @@ mdaVocInput::~mdaVocInput() ///destroy any buffers...
void mdaVocInput::setProgram(LvzInt32 program)
{
- int i=0;
-
- mdaVocInputProgram *p = &programs[program];
curProgram = program;
- setProgramName(p->name);
- for(i=0; i<NPARAMS; i++) param[i] = p->param[i];
resume();
}
-void mdaVocInput::setParameter(LvzInt32 index, float value) { param[index] = value; resume(); }
-float mdaVocInput::getParameter(LvzInt32 index) { return param[index]; }
-void mdaVocInput::setProgramName(char *name) { strcpy(programName, name); }
-void mdaVocInput::getProgramName(char *name) { strcpy(name, programName); }
-
+void mdaVocInput::setParameter(LvzInt32 index, float value)
+{
+ programs[curProgram].param[index] = value;
+ resume();
+}
+float mdaVocInput::getParameter(LvzInt32 index) { return programs[curProgram].param[index]; }
+void mdaVocInput::setProgramName(char *name) { strcpy(programs[curProgram].name, name); }
+void mdaVocInput::getProgramName(char *name) { strcpy(name, programs[curProgram].name); }
+bool mdaVocInput::getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name)
+{
+ if ((unsigned int)index < NPROGS)
+ {
+ strcpy(name, programs[index].name);
+ return true;
+ }
+ return false;
+}
void mdaVocInput::getParameterName(LvzInt32 index, char *label)
{
@@ -111,6 +119,7 @@ void mdaVocInput::getParameterName(LvzInt32 index, char *label)
void mdaVocInput::getParameterDisplay(LvzInt32 index, char *text)
{
char string[16];
+ float * param = programs[curProgram].param;
switch(index)
{
@@ -118,10 +127,10 @@ void mdaVocInput::getParameterDisplay(LvzInt32 index, char *text)
case 1: strcpy(string, "FREE"); break;
case 2: strcpy(string, "QUANT"); } break;
- case 1: if(track) sprintf(string, "%ld", (long)(48.0f * param[1] - 24.0f));
- else midi2string((long)(48.0f * param[1] + 21.0f), string); break;
+ case 1: if(track) sprintf(string, "%d", (LvzInt32)(48.0f * param[1] - 24.0f));
+ else midi2string((LvzInt32)(48.0f * param[1] + 21.0f), string); break;
- case 4: midi2string((long)(48.0f * param[4] + 45.0f), string); break;
+ case 4: midi2string((LvzInt32)(48.0f * param[4] + 45.0f), string); break;
default: sprintf(string, "%.0f", 100.0f * param[index]);
}
@@ -142,10 +151,10 @@ void mdaVocInput::getParameterLabel(LvzInt32 index, char *label)
}
-void mdaVocInput::midi2string(long n, char *text) //show name of MIDI note number (60=C3)
+void mdaVocInput::midi2string(LvzInt32 n, char *text) //show name of MIDI note number (60=C3)
{
char t[8];
- long o, s, p=0;
+ LvzInt32 o, s, p=0;
t[p++] = ' ';
t[p++] = ' ';
@@ -189,7 +198,7 @@ void mdaVocInput::process(float **inputs, float **outputs, LvzInt32 sampleFrames
float l0=lbuf0, l1=lbuf1, l2=lbuf2, l3=lbuf3;
float le=lenv, he=henv, et=lfreq*0.1f, lf=lfreq, v=vuv, mn=minp, mx=maxp;
float rootm=39.863137f;
- long tr=track;
+ LvzInt32 tr=track;
--in1;
--in2;
@@ -264,7 +273,7 @@ void mdaVocInput::processReplacing(float **inputs, float **outputs, LvzInt32 sam
float l0=lbuf0, l1=lbuf1, l2=lbuf2, l3=lbuf3;
float le=lenv, he=henv, et=lfreq*0.1f, lf=lfreq, v=vuv, mn=minp, mx=maxp;
float rootm=39.863137f;
- long tr=track;
+ LvzInt32 tr=track;
--in1;
--in2;
diff --git a/src/mdaVocInput.h b/src/mdaVocInput.h
index 5a8bdee..f8956e5 100644
--- a/src/mdaVocInput.h
+++ b/src/mdaVocInput.h
@@ -14,8 +14,6 @@ class mdaVocInputProgram
{
public:
mdaVocInputProgram();
- ~mdaVocInputProgram() {}
-
private:
friend class mdaVocInput;
float param[NPARAMS];
@@ -34,12 +32,13 @@ public:
virtual void setProgram(LvzInt32 program);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
virtual void getParameterDisplay(LvzInt32 index, char *text);
virtual void getParameterName(LvzInt32 index, char *text);
- virtual void midi2string(long n, char *text);
+ virtual void midi2string(LvzInt32 n, char *text);
virtual void suspend();
virtual void resume();
@@ -49,12 +48,10 @@ public:
virtual LvzInt32 getVendorVersion() { return 1000; }
protected:
- float param[NPARAMS];
- char programName[32];
mdaVocInputProgram *programs;
///global internal variables
- long track; //track input pitch
+ LvzInt32 track; //track input pitch
float pstep; //output sawtooth inc per sample
float pmult; //tuning multiplier
float sawbuf;
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;
diff --git a/src/mdaVocoder.h b/src/mdaVocoder.h
index 5aa36fd..71e29cc 100644
--- a/src/mdaVocoder.h
+++ b/src/mdaVocoder.h
@@ -15,8 +15,6 @@ class mdaVocoderProgram
{
public:
mdaVocoderProgram();
- ~mdaVocoderProgram() {}
-
private:
friend class mdaVocoder;
float param[NPARAMS];
@@ -35,6 +33,7 @@ public:
virtual void setProgram(LvzInt32 program);
virtual void setProgramName(char *name);
virtual void getProgramName(char *name);
+ virtual bool getProgramNameIndexed (LvzInt32 category, LvzInt32 index, char* name);
virtual void setParameter(LvzInt32 index, float value);
virtual float getParameter(LvzInt32 index);
virtual void getParameterLabel(LvzInt32 index, char *label);
@@ -49,17 +48,15 @@ public:
virtual LvzInt32 getVendorVersion() { return 1000; }
protected:
- float param[NPARAMS];
- char programName[32];
mdaVocoderProgram *programs;
///global internal variables
- long swap; //input channel swap
+ LvzInt32 swap; //input channel swap
float gain; //output level
float thru, high; //hf thru
float kout; //downsampled output
- long kval; //downsample counter
- long nbnd; //number of bands
+ LvzInt32 kval; //downsample counter
+ LvzInt32 nbnd; //number of bands
//filter coeffs and buffers - seems it's faster to leave this global than make local copy
float f[NBANDS][13]; //[0-8][0 1 2 | 0 1 2 3 | 0 1 2 3 | val rate]