示例#1
0
// set target value 
void filter_ramp_in(filter_ramp* f, fract32 val) {
  f->x = val;
  f->sync = (val == f->y);

  if(BIT_SIGN_32(sub_fr1x32(f->y, f->x))) {
    f->sinc = negate_fr1x32(f->inc);
    f->dec = 1;
  } else {
    f->sinc = f->inc;
    f->dec = 0;
  }
		 
}
示例#2
0
文件: osc.c 项目: dinchak/aleph
// calculate phase
static inline void osc_calc_pm(osc* osc) {
  osc->idxMod = fix16_add( osc->idx, 
			   fix16_mul( FRACT_FIX16( mult_fr1x32x32( osc->pmIn, 
								   osc->pmAmt ) ),
				      WAVE_TAB_MAX16
				      ) );
  // wrap negative
  while (BIT_SIGN_32(osc->idxMod)) {
    osc->idxMod = fix16_add(osc->idxMod, WAVE_TAB_MAX16);
  }

  // wrap positive
  while(osc->idxMod > WAVE_TAB_MAX16) { 
    osc->idxMod = fix16_sub(osc->idxMod, WAVE_TAB_MAX16); 
  }
}