private Int32 amplitude_lfo_step(_lfo_t lfo) { Int32 p; lfo.phase += (UInt16)lfo.phase_step; p = lfo.table[(lfo.phase >> LFO_SHIFT) & 0xff]; p = lfo.scale[p]; return(p << (TL_SHIFT - LFO_SHIFT)); }
private void lfo_compute_step(_MultiPCM ptChip, _lfo_t lfo, UInt32 lfo_frequency, UInt32 lfo_scale, Int32 amplitude_lfo) { float step = (float)(LFO_FREQ[lfo_frequency] * 256.0f / (float)ptChip.rate); lfo.phase_step = (UInt32)((float)(1 << LFO_SHIFT) * step); if (amplitude_lfo != 0) { lfo.table = amplitude_table; lfo.scale = amplitude_scale_tables[lfo_scale]; } else { lfo.table = pitch_table; lfo.scale = pitch_scale_tables[lfo_scale]; } }