public void RMS(out double dbLevelL, out double dbLevelR)
{
int peakL = 0;
int peakR = 0;
double dbLeft = 0.0;
double dbRight = 0.0;
// Find out with which stream to deal with
int level = 0;
MusicStream stream = GetCurrentStream();
if (Config.MusicPlayer == AudioPlayer.Asio)
{
float fpeakL = BassAsio.BASS_ASIO_ChannelGetLevel(false, 0);
float fpeakR = (int)BassAsio.BASS_ASIO_ChannelGetLevel(false, 1);
dbLeft = 20.0 * Math.Log10(fpeakL);
dbRight = 20.0 * Math.Log10(fpeakR);
}
else if (Config.MusicPlayer == AudioPlayer.WasApi)
{
level = BassWasapi.BASS_WASAPI_GetLevel();
}
else
{
if (stream != null)
{
level = BassMix.BASS_Mixer_ChannelGetLevel(stream.BassStream);
}
}
if (Config.MusicPlayer != AudioPlayer.Asio) // For Asio, we already got the peaklevel above
{
peakL = Un4seen.Bass.Utils.LowWord32(level); // the left level
peakR = Un4seen.Bass.Utils.HighWord32(level); // the right level
dbLeft = Un4seen.Bass.Utils.LevelToDB(peakL, 65535);
dbRight = Un4seen.Bass.Utils.LevelToDB(peakR, 65535);
}
dbLevelL = dbLeft;
dbLevelR = dbRight;
}