Bump

Now I post the code for processing the audio chunks, maybe my error will be trivial for some with less efforts.
CODE
vis_sample * src = data->spectrum;
if (data->nch <= 2)
{
for(n=0;n<data->spectrum_size;n++)
{
g_left.left = MulDiv(g_rect.right,n,data->spectrum_size+1);
g_left.right = MulDiv(g_rect.right,n+1,data->spectrum_size+1);
if (data->nch==2)
{
g_left.left=g_left.left/2;
g_left.right=g_left.right/2;
}
if (g_left.left < g_left.right)
{
double val = fabs(*(src++));
val = log((val/2) + 1) / log(2);
val *= 0.25;
if (val>1.0) val = 1.0;
g_left.bottom = g_rect.bottom;
g_left.top = (int)((1.0 - val) * g_rect.bottom);
FillRect(dc,&g_left,leftbrush);
if(cfg_show_peaks==1)
{
if(leftlimit[n]>=g_left.top)
{
leftlimit[n]=g_left.top;
fallspeedleft[n]=1;
}
else
{
leftlimit[n]+=fallspeedleft[n];
fallspeedleft[n]+=fallspeedleft[n];
}
SelectObject(dc,toppen);
toDraw[0].x=g_left.left; toDraw[0].y=leftlimit[n];
toDraw[1].x=g_left.right; toDraw[1].y=leftlimit[n];
Polyline(dc,toDraw,2);
}
}
if (data->nch==2)
{
g_right.left = g_rect.right/2+MulDiv(g_rect.right,data->spectrum_size-(n+1),data->spectrum_size+1)/2;
g_right.right = g_rect.right/2+MulDiv(g_rect.right,data->spectrum_size-n,data->spectrum_size+1)/2;
if (g_right.left < g_right.right)
{
double val = fabs(*(src++));
val = log((val/2) + 1) / log(2);
val *= 0.25;
if (val>1.0) val = 1.0;
g_right.bottom = g_rect.bottom;
g_right.top = (int)((1.0 - val) * g_rect.bottom);
FillRect(dc,&g_right,rightbrush);
if(cfg_show_peaks==1)
{
if(rightlimit[n]>=g_right.top)
{
rightlimit[n]=g_right.top;
fallspeedright[n]=1;
}
else
{
rightlimit[n]+=fallspeedright[n];
fallspeedright[n]+=fallspeedright[n];
}
SelectObject(dc,toppen);
toDraw[0].x=g_right.left; toDraw[0].y=rightlimit[n];
toDraw[1].x=g_right.right; toDraw[1].y=rightlimit[n];
Polyline(dc,toDraw,2);
}
}
}
}
}
That's about it. Ideas?