MediaPortal.MusicPlayer.BASS.BassAudioEngine.RMS C# (CSharp) Méthode

RMS() public méthode

Return the dbLevel to be used by a VUMeter
public RMS ( double &dbLevelL, double &dbLevelR ) : void
dbLevelL double
dbLevelR double
Résultat void
    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;
    }