44#include " Patch.h"
55#include " maximilian.h"
66
7- static maxiParam* maxiParameters[8 ];
7+ #define MAX_MAXIPARAMS 20
8+ static maxiParam* maxiParameters[MAX_MAXIPARAMS];
89static unsigned int maxiParameterCount = 0 ;
910maxiParam::maxiParam () : value(0.5 ), minValue(0.0 ), maxValue(1.0 ),
10- name(NULL ), pid(maxiParameterCount++ ){
11- if (pid < 8 )
12- maxiParameters[pid ] = this ;
11+ name(NULL ), pid(maxiParameterCount){
12+ if (maxiParameterCount < MAX_MAXIPARAMS )
13+ maxiParameters[maxiParameterCount++ ] = this ;
1314}
1415
1516void maxiParam::update (double v){
@@ -32,22 +33,25 @@ class MaximilianPatch : public Patch {
3233 maxiSettings::bufferSize = getBlockSize ();
3334 setup ();
3435 char name[] = " A" ;
35- maxiParameterCount = std::min (7u , maxiParameterCount);
36- for (int i=0 ; i<maxiParameterCount; ++i){
36+ for (size_t i=0 ; i<maxiParameterCount; ++i){
3737 if (maxiParameters[i]->name == NULL ){
3838 name[0 ] = ' A' +maxiParameters[i]->pid ;
3939 registerParameter ((PatchParameterId)(maxiParameters[i]->pid ), name);
4040 }else {
4141 registerParameter ((PatchParameterId)(maxiParameters[i]->pid ), maxiParameters[i]->name );
4242 }
43+ float min = maxiParameters[i]->minValue ;
44+ float max = maxiParameters[i]->maxValue ;
45+ float value = (maxiParameters[i]->value - min)/(max-min);
46+ setParameterValue ((PatchParameterId)(maxiParameters[i]->pid ), value);
4347 }
4448 }
4549 void processAudio (AudioBuffer &buffer) {
4650 float * left = buffer.getSamples (LEFT_CHANNEL);
4751 float * right = buffer.getSamples (RIGHT_CHANNEL);
48- for (int i=0 ; i<maxiParameterCount; ++i)
52+ for (size_t i=0 ; i<maxiParameterCount; ++i)
4953 maxiParameters[i]->update (getParameterValue ((PatchParameterId)(maxiParameters[i]->pid )));
50- for (int i=0 ; i<buffer.getSize (); ++i){
54+ for (size_t i=0 ; i<buffer.getSize (); ++i){
5155 play (output);
5256 left[i] = output[0 ];
5357 right[i] = output[1 ];
0 commit comments