aboutsummaryrefslogtreecommitdiffstats
path: root/src/mdaLooplex.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mdaLooplex.cpp')
-rw-r--r--src/mdaLooplex.cpp70
1 files changed, 35 insertions, 35 deletions
diff --git a/src/mdaLooplex.cpp b/src/mdaLooplex.cpp
index dd81471..8ae249f 100644
--- a/src/mdaLooplex.cpp
+++ b/src/mdaLooplex.cpp
@@ -76,7 +76,7 @@ public:
IdleList::IdleList(mdaLooplex *effect, IdleList *next) : effect(effect), next(next), remove(false)
-{
+{
if(effect && !timer) //start timer
{
#if WIN32
@@ -125,12 +125,12 @@ mdaLooplex::mdaLooplex(audioMasterCallback audioMaster) : AudioEffectX(audioMast
programs = new mdaLooplexProgram[NPROGS];
if(programs) setProgram(0);
-
+
setUniqueID("mdaLoopLex");
if(audioMaster)
{
- setNumInputs(NOUTS);
+ setNumInputs(NOUTS);
setNumOutputs(NOUTS);
canProcessReplacing();
//needIdle(); idle is broken in VST2.4
@@ -138,16 +138,16 @@ mdaLooplex::mdaLooplex(audioMasterCallback audioMaster) : AudioEffectX(audioMast
update();
suspend();
-
+
idleList.next = new IdleList(this, idleList.next); //add to idle list, start timer if not running...
}
void mdaLooplex::update() //parameter change
{
- if(fabs(param[1] - oldParam1) > 0.1f)
+ if(fabs(param[1] - oldParam1) > 0.1f)
{
- oldParam1 = param[1];
+ oldParam1 = param[1];
if(fabs(oldParam0 - param[0]) > 0.01f)
{
oldParam0 = param[0];
@@ -156,22 +156,22 @@ void mdaLooplex::update() //parameter change
}
if(param[2] > 0.5f && oldParam2 < 0.5f)
- {
+ {
if(recreq == 0) recreq = 1;
oldParam2 = param[2];
}
if(param[2] < 0.5f && oldParam2 > 0.5f)
- {
+ {
if(recreq == 1) recreq = 0;
- oldParam2 = param[2];
+ oldParam2 = param[2];
}
in_mix = 2.0f * param[3] * param[3];
-
+
in_pan = param[4];
-
+
feedback = param[5];
-
+
out_mix = 0.000030517578f * param[6] * param[6];
}
@@ -184,7 +184,7 @@ void mdaLooplex::setSampleRate(float sampleRate)
void mdaLooplex::resume()
-{
+{
//should reset position here...
bufpos = 0;
@@ -198,7 +198,7 @@ void mdaLooplex::idle()
if(bypassed)
{
if(busy) return; //only do once per bypass
- busy = 1;
+ busy = 1;
bufmax = 2 * (long)Fs * (long)(10.5f + 190.0f * param[0]);
if(buffer) delete [] buffer;
@@ -214,20 +214,20 @@ mdaLooplex::~mdaLooplex () //destroy any buffers...
{
for(IdleList *item=idleList.next; item; item=item->next) //remove from idle list, stop timer if last item
{
- if(item->effect == this)
- {
+ 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);
#endif
- break;
+ break;
}
}
if(programs) delete [] programs;
-
+
if(buffer)
{
FILE *fp; //dump loop to file
@@ -236,7 +236,7 @@ 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;
wh[4] = (char)(l & 0xFF); l >>= 8;
wh[5] = (char)(l & 0xFF); l >>= 8;
@@ -260,7 +260,7 @@ mdaLooplex::~mdaLooplex () //destroy any buffers...
wh[41] = (char)(l & 0xFF); l >>= 8;
wh[42] = (char)(l & 0xFF); l >>= 8;
wh[43] = (char)(l & 0xFF);
-
+
fwrite(wh, 1, 44, fp);
#if __BIG_ENDIAN__
@@ -276,7 +276,7 @@ mdaLooplex::~mdaLooplex () //destroy any buffers...
c++;
}
#endif
-
+
fwrite(buffer, sizeof(short), buflen, fp);
fclose(fp);
}
@@ -365,13 +365,13 @@ void mdaLooplex::getParameterName(LvzInt32 index, char *label)
void mdaLooplex::getParameterDisplay(LvzInt32 index, char *text)
{
char string[16];
-
+
switch(index)
{
case 0: sprintf(string, "%4d s", (int)(10.5f + 190.0f * param[index])); break; //10 to 200 sec
case 1: sprintf(string, "%5.1f MB", (float)bufmax / 524288.0f); break;
-
+
case 2: if(recreq) strcpy(string, "RECORD"); else strcpy(string, "MONITOR"); break;
case 3:
@@ -381,9 +381,9 @@ void mdaLooplex::getParameterDisplay(LvzInt32 index, char *text)
case 5: if(param[index] < 0.01f) strcpy(string, "OFF");
else sprintf(string, "%.1f dB", 20.0f * log10(param[index])); break;
- case 4: if(param[index] < 0.505f)
+ case 4: if(param[index] < 0.505f)
{
- if(param[index] > 0.495f) strcpy(string, "C"); else
+ if(param[index] > 0.495f) strcpy(string, "C"); else
sprintf(string, "L%.0f", 100.0f - 200.0f * param[index]);
}
else sprintf(string, "R%.0f", 200.0f * param[index] - 100.0f); break;
@@ -423,7 +423,7 @@ void mdaLooplex::processReplacing(float **inputs, float **outputs, LvzInt32 samp
float l, r, dl, dr, d0 = 0.0f, d1;
float imix = in_mix, ipan = in_pan, omix = out_mix, fb = feedback * modwhl;
long x;
-
+
if((bypassed = bypass)) return;
while(frame<sampleFrames)
@@ -454,7 +454,7 @@ void mdaLooplex::processReplacing(float **inputs, float **outputs, LvzInt32 samp
#else
d0 = 0.000061f * (float)((rand() & 32767) - 16384);
#endif
-
+
//left delay
dl = fb * (float)buffer[bufpos];
if(recreq)
@@ -467,20 +467,20 @@ void mdaLooplex::processReplacing(float **inputs, float **outputs, LvzInt32 samp
//right delay
dr = fb * (float)buffer[bufpos];
- if(recreq)
+ if(recreq)
{
x = (long)(32768.0f * r + dr - d0 + d1 + 100000.5f) - 100000;
if(x > 32767) x = 32767; else if(x < -32768) x = -32768;
buffer[bufpos] = (short)x;
}
bufpos++;
-
+
//looping
if(bufpos >= bufmax)
- {
+ {
buflen = bufmax;
bufpos -= buflen;
- status = 2;
+ status = 2;
}
else
{
@@ -518,13 +518,13 @@ void mdaLooplex::processReplacing(float **inputs, float **outputs, LvzInt32 samp
LvzInt32 mdaLooplex::processEvents(LvzEvents* ev)
{
long npos=0;
-
+
for (long i=0; i<ev->numEvents; i++)
{
if((ev->events[i])->type != kLvzMidiType) continue;
LvzMidiEvent* event = (LvzMidiEvent*)ev->events[i];
char* midiData = event->midiData;
-
+
switch(midiData[0] & 0xf0) //status byte (all channels)
{
case 0x80: //note off
@@ -566,14 +566,14 @@ LvzInt32 mdaLooplex::processEvents(LvzEvents* ev)
break;
default: //all notes off
- if(midiData[1]>0x7A)
+ if(midiData[1]>0x7A)
{
}
break;
}
break;
-
+
default: break;
}