NScumm.Core.Audio.SoftSynth.TownsMidiOutputChannel.GetEffectModLevel C# (CSharp) Method

GetEffectModLevel() private method

private GetEffectModLevel ( int lvl, int mod ) : int
lvl int
mod int
return int
        int GetEffectModLevel(int lvl, int mod)
        {
            if (mod == 0)
                return 0;

            if (mod == 31)
                return lvl;

            if (lvl > 63 || lvl < -63)
                return ((lvl + 1) * mod) >> 5;

            if (mod < 0)
            {
                if (lvl < 0)
                    return _driver._operatorLevelTable[((-lvl) << 5) - mod];
                else
                    return -_driver._operatorLevelTable[(lvl << 5) - mod];
            }
            else
            {
                if (lvl < 0)
                    return -_driver._operatorLevelTable[((-lvl) << 5) + mod];
                else
                    return _driver._operatorLevelTable[(lvl << 5) + mod];
            }
        }