private static string[] GetWavtoolArgs_SleepR(WavtoolArgs Args) { double PreUttrOverlapsMs = UtauToolUtils.Global_GenerateGlobalPlusTimeMs(Args.ThisPreutterOverlapsArgs, Args.NextPreutterOverlapsArgs); List <string> wavtool_arg_suffix = new List <string> { "\"" + Args.OutputWavfile + "\"", "\"R.wav\"", "0", "" + Args.TickLength.ToString() + "@" + Args.Tempo.ToString() + (PreUttrOverlapsMs >= 0?"+":"-") + Math.Abs(PreUttrOverlapsMs).ToString("########.0##"), //P1,P2,P3 "0", "0", "0", "0", "0", "0", "0", "0", "0" }; return(wavtool_arg_suffix.ToArray()); }
public static string[] GetWavtoolArgs(WavtoolArgs Args) { if (Args.InputWavfile == "{R}") { return(GetWavtoolArgs_SleepR(Args)); } double PreUttrOverlapsMs = UtauToolUtils.Global_GenerateGlobalPlusTimeMs(Args.ThisPreutterOverlapsArgs, Args.NextPreutterOverlapsArgs); long TotalLength = (long)Math.Ceiling(MidiMathUtils.Tick2Time((long)Args.TickLength, Args.Tempo) * 1000 + PreUttrOverlapsMs); double EnvStart = Args.FadeInLengthMs; double EnvEnd = TotalLength - Args.FadeOutLengthMs; SortedDictionary <double, long> TargetEnvlope = new SortedDictionary <double, long>(); double vpcp = (double)Args.VolumePercentInt / 100.0; if (TotalLength == 0) { TargetEnvlope.Add(Args.FadeInLengthMs, 100); TargetEnvlope.Add(TotalLength - Args.FadeOutLengthMs, 100); } else { TargetEnvlope.Add(0, 0); TargetEnvlope.Add(TotalLength, 0); long LastVol = 100; foreach (KeyValuePair <double, long> sortEnv in Args.EnvlopePoints) { if (sortEnv.Key == EnvStart) { if (!TargetEnvlope.ContainsKey(sortEnv.Key)) { TargetEnvlope.Add(sortEnv.Key, (long)(sortEnv.Value * vpcp)); } } else if (sortEnv.Key > EnvStart && sortEnv.Key <= EnvEnd) { if (!TargetEnvlope.ContainsKey(EnvStart)) { TargetEnvlope.Add(EnvStart, (long)(LastVol * vpcp)); } if (!TargetEnvlope.ContainsKey(sortEnv.Key)) { TargetEnvlope.Add(sortEnv.Key, (long)(sortEnv.Value * vpcp)); } } else if (sortEnv.Key > EnvEnd) { break; } LastVol = sortEnv.Value; } if (!TargetEnvlope.ContainsKey(EnvStart)) { if (Args.EnvlopePoints.Count == 0 || TargetEnvlope.Count == 0) { if (!TargetEnvlope.ContainsKey(EnvStart)) { TargetEnvlope.Add(EnvStart, (long)(LastVol * vpcp)); } } else { if (!TargetEnvlope.ContainsKey(EnvStart)) { TargetEnvlope.Add(EnvStart, TargetEnvlope[TargetEnvlope.Keys.ToArray()[0]]); } } } if (!TargetEnvlope.ContainsKey(EnvEnd)) { if (!TargetEnvlope.ContainsKey(EnvEnd)) { TargetEnvlope.Add(EnvEnd, (long)(LastVol * vpcp)); } } } string P2 = Math.Round(Args.FadeInLengthMs, 1).ToString(); string P3 = Math.Round(Args.FadeOutLengthMs, 1).ToString(); string V2 = (TargetEnvlope[Args.FadeInLengthMs] * vpcp).ToString(); string V3 = (TargetEnvlope[TotalLength - Args.FadeOutLengthMs] * vpcp).ToString(); List <string> wavtool_arg_suffix = new List <string> { "\"" + Args.OutputWavfile + "\"", "\"" + Args.InputWavfile + "\"", "" + Math.Round(Args.StartPointMs, 3).ToString() + "", "" + Args.TickLength.ToString() + "@" + Args.Tempo.ToString() + (PreUttrOverlapsMs >= 0?"+":"-") + Math.Round(Math.Abs(PreUttrOverlapsMs), 3).ToString("########.0##"), //P1,P2,P3 "0", P2, P3, //V1,V2,V3,V4 "0", V2, V3, "0", Math.Round(Args.ThisPreutterOverlapsArgs.OverlapMs, 3).ToString(), //P4 "0" }; double lastMs = Args.FadeInLengthMs; foreach (KeyValuePair <double, long> sortEnv in TargetEnvlope) { if (sortEnv.Key >= EnvEnd) { break; } if (sortEnv.Key <= EnvStart) { lastMs = sortEnv.Key; continue; } double dert = sortEnv.Key - lastMs; lastMs = sortEnv.Key; wavtool_arg_suffix.Add(Math.Round(dert, 1).ToString()); wavtool_arg_suffix.Add(((long)(sortEnv.Value * vpcp)).ToString()); } return(wavtool_arg_suffix.ToArray()); }
public static string GetWavtoolArgsStr(WavtoolArgs Args) { return(String.Join(" ", GetWavtoolArgs(Args))); }