GetEffectModifier() static private method

static private GetEffectModifier ( ushort level ) : byte
level ushort
return byte
示例#1
0
            public override void NoteOn(byte note, byte velocity)
            {
                if (!_allocated)
                {
                    return;
                }

                _out.note           = note;
                _out.sustainNoteOff = 0;
                _out.length         = _instrument[0];

                if (_instrument[4] < PCSpeakerDriver._outInstrumentData.Length)
                {
                    _out.instrument = PCSpeakerDriver._outInstrumentData[_instrument[4]];
                }
                else
                {
                    _out.instrument = null;
                }

                _out.unkA   = 0;
                _out.unkB   = _instrument[1];
                _out.unkC   = _instrument[2];
                _out.unkE   = 0;
                _out.unk60  = 0;
                _out.active = 1;

                // In case we get a note on event on the last active channel, we reset the
                // last active channel, thus we assure the frequency is correctly set, even
                // when the same note was sent.
                if (_owner._lastActiveChannel == this)
                {
                    _owner._lastActiveChannel = null;
                    _owner._lastActiveOut     = 0;
                }
                _owner.UpdateNote();

                _out.unkC += PCSpeakerDriver.GetEffectModifier((ushort)(_instrument[3] + ((velocity & 0xFE) << 4)));
                if (_out.unkC > 63)
                {
                    _out.unkC = 63;
                }

                if ((_instrument[5] & 0x80) != 0)
                {
                    _owner.SetupEffects(this, _out.effectEnvelopeA, _out.effectDefA, _instrument[5], _instrument, 6);
                }

                if ((_instrument[14] & 0x80) != 0)
                {
                    _owner.SetupEffects(this, _out.effectEnvelopeB, _out.effectDefB, _instrument[14], _instrument, 15);
                }
            }