예제 #1
0
        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));
        }
예제 #2
0
        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];
            }
        }