JD2022-TU1/main/tools/apps/TeaBox/Script/Data/AudioPreviewCommand.cs

46 lines
1.3 KiB
C#

using System;
using System.Globalization;
using System.Linq;
using JD.Audio.Sox;
namespace TeaBox.Data
{
public class AudioPreviewCommand : SoxCommand
{
/// <summary>
/// The input file to use.
/// </summary>
public string Input { get; set; }
/// <summary>
/// The generated file.
/// </summary>
public string Output { get; set; }
/// <summary>
/// Trim start time.
/// </summary>
public TimeSpan Start { get; set; }
/// <summary>
/// Trim end time.
/// </summary>
public TimeSpan Duration { get; set; }
public TimeSpan FadeIn { get; set; }
public TimeSpan FadeOut { get; set; }
/// <summary>
/// Volume, in dB
/// </summary>
public float Volume { get; set; }
protected override string GetSoxArguments()
{
string args = $"{Input} {Output} trim {Start.TotalSeconds.ToString(CultureInfo.InvariantCulture)} {Duration.TotalSeconds.ToString(CultureInfo.InvariantCulture)} fade t {FadeIn.TotalSeconds.ToString(CultureInfo.InvariantCulture)} {Duration.TotalSeconds.ToString(CultureInfo.InvariantCulture)} {FadeOut.TotalSeconds.ToString(CultureInfo.InvariantCulture)} gain {Volume.ToString(CultureInfo.InvariantCulture)}";
return args;
}
}
}