Mesen-SX/UI/Forms/Config/frmAudioConfig.cs

103 lines
3.6 KiB
C#

using Mesen.GUI.Config;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Mesen.GUI.Forms.Config
{
public partial class frmAudioConfig : BaseConfigForm
{
public frmAudioConfig()
{
InitializeComponent();
if(this.DesignMode) {
return;
}
cboAudioDevice.Items.AddRange(ConfigApi.GetAudioDevices().ToArray());
Entity = ConfigManager.Config.Audio.Clone();
AddBinding(nameof(AudioConfig.EnableAudio), chkEnableAudio);
AddBinding(nameof(AudioConfig.MasterVolume), trkMaster);
AddBinding(nameof(AudioConfig.AudioLatency), nudLatency);
AddBinding(nameof(AudioConfig.SampleRate), cboSampleRate);
AddBinding(nameof(AudioConfig.AudioDevice), cboAudioDevice);
AddBinding(nameof(AudioConfig.DisableDynamicSampleRate), chkDisableDynamicSampleRate);
AddBinding(nameof(AudioConfig.EnableEqualizer), chkEnableEqualizer);
AddBinding(nameof(AudioConfig.Band1Gain), trkBand1Gain);
AddBinding(nameof(AudioConfig.Band2Gain), trkBand2Gain);
AddBinding(nameof(AudioConfig.Band3Gain), trkBand3Gain);
AddBinding(nameof(AudioConfig.Band4Gain), trkBand4Gain);
AddBinding(nameof(AudioConfig.Band5Gain), trkBand5Gain);
AddBinding(nameof(AudioConfig.Band6Gain), trkBand6Gain);
AddBinding(nameof(AudioConfig.Band7Gain), trkBand7Gain);
AddBinding(nameof(AudioConfig.Band8Gain), trkBand8Gain);
AddBinding(nameof(AudioConfig.Band9Gain), trkBand9Gain);
AddBinding(nameof(AudioConfig.Band10Gain), trkBand10Gain);
AddBinding(nameof(AudioConfig.Band11Gain), trkBand11Gain);
AddBinding(nameof(AudioConfig.Band12Gain), trkBand12Gain);
AddBinding(nameof(AudioConfig.Band13Gain), trkBand13Gain);
AddBinding(nameof(AudioConfig.Band14Gain), trkBand14Gain);
AddBinding(nameof(AudioConfig.Band15Gain), trkBand15Gain);
AddBinding(nameof(AudioConfig.Band16Gain), trkBand16Gain);
AddBinding(nameof(AudioConfig.Band17Gain), trkBand17Gain);
AddBinding(nameof(AudioConfig.Band18Gain), trkBand18Gain);
AddBinding(nameof(AudioConfig.Band19Gain), trkBand19Gain);
AddBinding(nameof(AudioConfig.Band20Gain), trkBand20Gain);
AddBinding(nameof(AudioConfig.ReduceSoundInBackground), chkReduceSoundInBackground);
AddBinding(nameof(AudioConfig.MuteSoundInBackground), chkMuteSoundInBackground);
AddBinding(nameof(AudioConfig.ReduceSoundInFastForward), chkReduceSoundInFastForward);
AddBinding(nameof(AudioConfig.VolumeReduction), trkVolumeReduction);
}
protected override bool ValidateInput()
{
UpdateLatencyWarning();
UpdateObject();
((AudioConfig)this.Entity).ApplyConfig();
return true;
}
private void UpdateLatencyWarning()
{
picLatencyWarning.Visible = nudLatency.Value <= 55;
lblLatencyWarning.Visible = nudLatency.Value <= 55;
}
protected override void OnApply()
{
ConfigManager.Config.Audio = (AudioConfig)this.Entity;
ConfigManager.ApplyChanges();
}
private void chkEnableEqualizer_CheckedChanged(object sender, EventArgs e)
{
tlpEqualizer.Enabled = chkEnableEqualizer.Checked;
}
private void chkMuteWhenInBackground_CheckedChanged(object sender, EventArgs e)
{
UpdateVolumeOptions();
}
private void chkReduceVolume_CheckedChanged(object sender, EventArgs e)
{
UpdateVolumeOptions();
}
private void UpdateVolumeOptions()
{
chkReduceSoundInBackground.Enabled = !chkMuteSoundInBackground.Checked;
trkVolumeReduction.Enabled = chkReduceSoundInFastForward.Checked || (chkReduceSoundInBackground.Checked && chkReduceSoundInBackground.Enabled);
}
}
}