public VolumeHandler(int[] volumeTable)
    {
      bool isDigital;

      using (Settings reader = new MPSettings())
      {
        int levelStyle = reader.GetValueAsInt("volume", "startupstyle", 0);

        if (levelStyle == 0)
        {
          _startupVolume = Math.Max(0, Math.Min(65535, reader.GetValueAsInt("volume", "lastknown", 52428)));
        }

        if (levelStyle == 1)
        {
        }

        if (levelStyle == 2)
        {
          _startupVolume = Math.Max(0, Math.Min(65535, reader.GetValueAsInt("volume", "startuplevel", 52428)));
        }

        isDigital = reader.GetValueAsBool("volume", "digital", false);

        _showVolumeOSD = reader.GetValueAsBool("volume", "defaultVolumeOSD", true);
      }

      _mixer = new Mixer.Mixer();
      _mixer.Open(0, isDigital);
      _volumeTable = volumeTable;
      _mixer.ControlChanged += mixer_ControlChanged;
    }
        public override double[][] Process(double[][] input)
        {
            // TODO: Pre-Delay
            internalMixer = new Mixer.Mixer();

            double[] cf1Out = cf1.Process((double[])input[0].Clone());
            double[] cf2Out = cf2.Process((double[])input[0].Clone());
            double[] cf3Out = cf3.Process((double[])input[0].Clone());
            double[] cf4Out = cf4.Process((double[])input[0].Clone());

            // TODO: Stereo
            Mixer.MixerChannel dryChannel = new Mixer.MixerChannel(input);
            Mixer.MixerChannel cf1Channel = new Mixer.MixerChannel(cf1Out);
            Mixer.MixerChannel cf2Channel = new Mixer.MixerChannel(cf2Out);
            Mixer.MixerChannel cf3Channel = new Mixer.MixerChannel(cf3Out);
            Mixer.MixerChannel cf4Channel = new Mixer.MixerChannel(cf4Out);

            internalMixer.AddChannel(dryChannel);
            internalMixer.AddChannel(cf1Channel);
            internalMixer.AddChannel(cf2Channel);
            internalMixer.AddChannel(cf3Channel);
            internalMixer.AddChannel(cf4Channel);

            // TODO: AllPass filtering

            return internalMixer.Process();
        }
Example #3
0
    public VolumeHandler(int[] volumeTable)
    {
      bool isDigital = true;
      //string mixerControlledComponent = "Wave";

      using (Settings reader = new MPSettings())
      {
        int levelStyle = reader.GetValueAsInt("volume", "startupstyle", 0);

        if (levelStyle == 0)
        {
          _startupVolume = Math.Max(0, Math.Min(65535, reader.GetValueAsInt("volume", "lastknown", 52428)));
        }

        if (levelStyle == 1)
        {
          _startupVolume = _mixer.Volume;
        }

        if (levelStyle == 2)
        {
          _startupVolume = Math.Max(0, Math.Min(65535, reader.GetValueAsInt("volume", "startuplevel", 52428)));
        }

        //mixerControlledComponent = reader.GetValueAsString("volume", "controlledMixer", "Wave");
        isDigital = reader.GetValueAsBool("volume", "digital", false);

        _showVolumeOSD = reader.GetValueAsBool("volume", "defaultVolumeOSD", true);
      }

      _mixer = new Mixer.Mixer();
      _mixer.Open(0, isDigital);
      _volumeTable = volumeTable;
      _mixer.ControlChanged += new Mixer.MixerEventHandler(mixer_ControlChanged);
    }
Example #4
0
    public VolumeHandler(int[] volumeTable)
    {
      if (GUIGraphicsContext.DeviceAudioConnected > 0)
      {
        bool isDigital;

        using (Settings reader = new MPSettings())
        {
          int levelStyle = reader.GetValueAsInt("volume", "startupstyle", 0);

          if (levelStyle == 0)
          {
            _startupVolume = Math.Max(0, Math.Min(65535, reader.GetValueAsInt("volume", "lastknown", 52428)));
          }

          if (levelStyle == 1)
          {
          }

          if (levelStyle == 2)
          {
            _startupVolume = Math.Max(0, Math.Min(65535, reader.GetValueAsInt("volume", "startuplevel", 52428)));
          }

          isDigital = reader.GetValueAsBool("volume", "digital", false);

          _showVolumeOSD = reader.GetValueAsBool("volume", "defaultVolumeOSD", true);
        }

        try
        {
          _mixer = new Mixer.Mixer();
          _mixer.Open(0, isDigital);
          _volumeTable = volumeTable;
          _mixer.ControlChanged += mixer_ControlChanged;
        }
        catch (Exception ex)
        {
          Log.Error("VolumeHandler: Mixer exception when init {0}", ex);
        }
      }
      else
      {
        _volumeTable = volumeTable;
      }
    }