mirror of
https://github.com/SirusDoma/VoxCharger.git
synced 2024-12-18 18:35:54 +01:00
85 lines
2.4 KiB
C#
85 lines
2.4 KiB
C#
using System;
|
|
using System.Linq;
|
|
|
|
namespace VoxCharger
|
|
{
|
|
public partial class Effect
|
|
{
|
|
public class LowPass : Effect
|
|
{
|
|
public float Mix { get; set; }
|
|
public float Frequency { get; set; }
|
|
|
|
public LowPass(float mix, float frequency)
|
|
: base(FxType.LowPass)
|
|
{
|
|
Mix = mix;
|
|
Frequency = frequency;
|
|
}
|
|
|
|
private LowPass()
|
|
: base(FxType.None)
|
|
{
|
|
}
|
|
|
|
public static new LowPass FromVox(string data)
|
|
{
|
|
var lowPass = new LowPass();
|
|
var prop = data.Trim().Split(',').Select(p => p.Trim()).ToArray();
|
|
if (!Enum.TryParse(prop[0], out FxType type) || type != FxType.LowPass)
|
|
return lowPass;
|
|
|
|
if (prop.Length != 5)
|
|
return lowPass;
|
|
|
|
try
|
|
{
|
|
lowPass.Type = type;
|
|
lowPass.Mix = float.Parse(prop[1]);
|
|
lowPass.Frequency = float.Parse(prop[3]);
|
|
}
|
|
catch (Exception)
|
|
{
|
|
lowPass.Type = FxType.None;
|
|
}
|
|
|
|
return lowPass;
|
|
}
|
|
|
|
|
|
public static new LowPass FromKsh(KshDefinition definition)
|
|
{
|
|
var lowPass = new LowPass();
|
|
|
|
try
|
|
{
|
|
definition.GetValue("loFreq", out int loFreq);
|
|
definition.GetValue("hiFreq", out int hiFreq);
|
|
|
|
lowPass.Mix = 100f;
|
|
lowPass.Frequency = loFreq != 0f ? loFreq : hiFreq;
|
|
lowPass.Type = FxType.LowPass;
|
|
}
|
|
catch (Exception)
|
|
{
|
|
lowPass.Type = FxType.None;
|
|
}
|
|
|
|
return lowPass;
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
if (Type == FxType.None)
|
|
return base.ToString();
|
|
|
|
return $"{(int)Type}," +
|
|
$"\t{Mix:0.00}," +
|
|
$"\t0," + // Unknown param
|
|
$"\t{Frequency:0.00}," +
|
|
$"\t0"; // Unknown too
|
|
}
|
|
}
|
|
}
|
|
}
|