remove voice[vl] from `mdaPianoVoice::on`
[software/lv2-mdametapiano.git] / src / mdaPianoVoice.cpp
index b229062..86203eb 100644 (file)
@@ -48,12 +48,12 @@ float mdaPianoVoice::p_helper(unsigned short id, Param d) {
 void mdaPianoVoice::on(unsigned char note, unsigned char velocity)
 {
   // store key that turned this voice on (used in 'get_key')
-  m_key = key;
+  m_key = note;
 
   // TODO: replace with this voice's local copy
   float * param = programs[curProgram].param;
   float l=99.0f;
-  uint32_t  v, vl=0, k, s;
+  uint32_t  v, k, s;
 
   if(velocity>0)
   {
@@ -85,39 +85,38 @@ void mdaPianoVoice::on(unsigned char note, unsigned char velocity)
 
     l += (float)(note - kgrp[k].root); //pitch
     l = 22050.0f * iFs * (float)exp(0.05776226505 * l);
-    voice[vl].delta = (uint32_t)(65536.0f * l);
-    voice[vl].frac = 0;
-    voice[vl].pos = kgrp[k].pos;
-    voice[vl].end = kgrp[k].end;
-    voice[vl].loop = kgrp[k].loop;
+    delta = (uint32_t)(65536.0f * l);
+    frac = 0;
+    pos = kgrp[k].pos;
+    end = kgrp[k].end;
+    loop = kgrp[k].loop;
 
-    voice[vl].env = (0.5f + velsens) * (float)pow(0.0078f * velocity, velsens); //velocity
+    env = (0.5f + velsens) * (float)pow(0.0078f * velocity, velsens); //velocity
 
     l = 50.0f + param[4] * param[4] * muff + muffvel * (float)(velocity - 64); //muffle
     if(l < (55.0f + 0.25f * (float)note)) l = 55.0f + 0.25f * (float)note;
     if(l > 210.0f) l = 210.0f;
-    voice[vl].ff = l * l * iFs;
-    voice[vl].f0 = voice[vl].f1 = 0.0f;
+    ff = l * l * iFs;
+    f0 = f1 = 0.0f;
 
-    voice[vl].note = note; //note->pan
     if(note <  12) note = 12;
     if(note > 108) note = 108;
     l = volume * trim;
-    voice[vl].outr = l + l * width * (float)(note - 60);
-    voice[vl].outl = l + l - voice[vl].outr;
+    outr = l + l * width * (float)(note - 60);
+    outl = l + l - outr;
 
     if(note < 44) note = 44; //limit max decay length
     l = 2.0f * param[0];
     if(l < 1.0f) l += 0.25f - 0.5f * param[0];
-    voice[vl].dec = (float)exp(-iFs * exp(-0.6 + 0.033 * (double)note - l));
+    dec = (float)exp(-iFs * exp(-0.6 + 0.033 * (double)note - l));
   }
   else //note off
   {
     // TODO: move the loop to mdaPiano.cpp
-    for(v=0; v<NVOICES; v++) if(voice[v].note==note) //any voices playing that note?
-    {
+    //for(v=0; v<NVOICES; v++) if(voice[v].note==note) //any voices playing that note?
+    //{
       release(0);
-    }
+    //}
   }
 }