for(j=0;j<=11;j++) {
scale_map[j] = abs(uvalues[++k].uval.ival);
if (scale_map[j] > 12)
scale_map[j] = 12;
}
It appears that the only corrections intended were absolute value
(for negative numbers) and replace with 12 if greater than 12. So,
at least within the sound routine, zero is a legitimate value. /* clip to 5 Khz to match the limits set in asm routine that drives pc speaker*/ if (freq > 5000) return(0); if(freq<20) return(0);/* and get rid of really silly bass notes too */So, it looks to me like we could both have our cake and eat it too.
I mean when I run my parameters, with zeros, FracTint considers them to be invalid, so it replaces them with the defaults; 1/2/3...If it did *not* consider zeros to be invalid, and I am thinking that zero is a very reasonable reprezentation of resting, then I would not be forced to wonder what negative Hertz values mean. In my synthesizer, negative Hertz values *can* mean waves that start with a negative phase. I don't think OPL allows that.