public override void Volume(byte value)
{
_volEff = value;
for (var voice = _voice; voice != null; voice = voice.Next)
{
#if ENABLE_OPL3
if (!_owner._opl3Mode) {
#endif
_owner.AdlibSetParam(voice.Channel, 0, volumeTable[volumeLookupTable[voice.Vol2, _volEff >> 2]]);
if (voice.TwoChan != 0)
{
_owner.AdlibSetParam(voice.Channel, 13, volumeTable[volumeLookupTable[voice.Vol1, _volEff >> 2]]);
}
#if ENABLE_OPL3
} else {
_owner.adlibSetParam(voice._channel, 0, g_volumeTable[((voice._vol2 + 1) * _volEff) >> 7], true);
_owner.adlibSetParam(voice._channel, 0, g_volumeTable[((voice._secVol2 + 1) * _volEff) >> 7], false);
if (voice._twoChan) {
_owner.adlibSetParam(voice._channel, 13, g_volumeTable[((voice._vol1 + 1) * _volEff) >> 7], true);
}
if (voice._secTwoChan) {
_owner.adlibSetParam(voice._channel, 13, g_volumeTable[((voice._secVol1 + 1) * _volEff) >> 7], false);
}
}
#endif
}
}