private Int32 ALFO_Step(_LFO LFO) { Int32 p; LFO.phase += (UInt16)LFO.phase_step; p = LFO.table[(LFO.phase >> LFO_SHIFT) & 0xff]; p = LFO.scale[p]; return(p << (SHIFT - LFO_SHIFT)); }
private void LFO_ComputeStep(_MultiPCM ptChip, _LFO LFO, UInt32 LFOF, UInt32 LFOS, Int32 ALFO) { float step = (float)(LFOFreq[LFOF] * 256.0 / (float)ptChip.Rate); LFO.phase_step = (UInt32)((float)(1 << LFO_SHIFT) * step); if (ALFO != 0) { LFO.table = ALFO_TRI; LFO.scale = ASCALES[LFOS]; } else { LFO.table = PLFO_TRI; LFO.scale = PSCALES[LFOS]; } }