NScumm.Sky.Music.AdLibChannel.GetNextNote C# (CSharp) Method

GetNextNote() private method

private GetNextNote ( byte param ) : ushort
param byte
return ushort
        ushort GetNextNote(byte param)
        {
            short freqIndex = (short)((_channelData.freqOffset) - 0x40);
            if (freqIndex >= 0x3F)
                freqIndex++;
            freqIndex *= 2;
            freqIndex += (short)(param << 6);
            ushort freqData = _frequenceTable[freqIndex % 0x300];
            if ((freqIndex % 0x300 >= 0x1C0) || (freqIndex / 0x300 > 0))
            {
                return (ushort)((((freqIndex / 0x300) - 1) << 10) + (freqData & 0x7FF));
            }
            else
            {
                // looks like a bug. dunno why. It's what the ASM code says.
                return (ushort)((freqData) >> 1);
            }
        }