diff --git a/veejay-current/veejay-client/src/callback.c b/veejay-current/veejay-client/src/callback.c index 380dc960..bd910668 100644 --- a/veejay-current/veejay-client/src/callback.c +++ b/veejay-current/veejay-client/src/callback.c @@ -2630,8 +2630,11 @@ void on_curve_buttonstore_clicked(GtkWidget *widget, gpointer user_data ) unsigned char *ptr = buf + hdr_len; int k; + int diff = max - min; for( k = 0 ; k < length ; k++ ) { - int pval = (int) ( (float) min + ( data[k] * ((float) max) )); + // pval = ((Input - InputLow) / (InputHigh - InputLow)) * (OutputHigh - OutputLow) + OutputLow; + // with InputLow==0 and InputHigh==1 in gtkcurve range + int pval = ((data[k]) * ((float)diff)) + min; ptr[0] = pval & 0xff; ptr[1] = (pval >> 8) & 0xff; ptr[2] = (pval >> 16) & 0xff; diff --git a/veejay-current/veejay-client/src/curve.c b/veejay-current/veejay-client/src/curve.c index 642715e2..8a08ecf2 100644 --- a/veejay-current/veejay-client/src/curve.c +++ b/veejay-current/veejay-client/src/curve.c @@ -62,15 +62,16 @@ int set_points_in_curve_ext( GtkWidget *curve, unsigned char *blob, int id, int unsigned int k = 0; unsigned char *in = blob + 27; float *vec = (float*) vj_calloc(sizeof(float) * len ); + int diff = max - min; for(i = start ; i < end; i ++ ) { unsigned char *ptr = in + (k * 4); int value = ( ptr[0] | (ptr[1] << 8) | (ptr[2] << 16) | (ptr[3] << 24) ); - - float top = 1.0 / (float) max; - float val = ( (float)value * top ); + // val = ((Input - InputLow) / (InputHigh - InputLow)) * (OutputHigh - OutputLow) + OutputLow; + // with OutputLow==0 and OutputHigh==1 in gtkcurve range + float val = ((float)(value - min) / (diff)); vec[k] = val; k++;