private static void ParsePreUtterance(UNote note, string ust, UstLine ustLine) { if (string.IsNullOrWhiteSpace(ust)) { note.Phonemes[0].AutoEnvelope = true; return; } note.Phonemes[0].AutoEnvelope = false; if (!double.TryParse(ust, out double preutter)) { throw new FileFormatException($"Invalid PreUtterance\n${ustLine}"); } note.Phonemes[0].Preutter = preutter; }
private static void ParseVibrato(UNote note, string ust, UstLine ustLine) { try { var args = ust.Split(',').Select(s => float.TryParse(s, out float v) ? v : 0).ToArray(); if (args.Length < 7) { throw new Exception(); } note.vibrato.length = args[0]; note.vibrato.period = args[1]; note.vibrato.depth = args[2]; note.vibrato.@in = args[3]; note.vibrato.@out = args[4]; note.vibrato.shift = args[5]; note.vibrato.drift = args[6]; } catch { throw new FileFormatException($"Invalid VBR\n{ustLine}"); } }
private static void ParseVibrato(UNote note, string ust, UstLine ustLine) { try { var args = ust.Split(',').Select(double.Parse).ToArray(); if (args.Length < 7) { throw new Exception(); } note.Vibrato.Length = args[0]; note.Vibrato.Period = args[1]; note.Vibrato.Depth = args[2]; note.Vibrato.In = args[3]; note.Vibrato.Out = args[4]; note.Vibrato.Shift = args[5]; note.Vibrato.Drift = args[6]; } catch { throw new FileFormatException($"Invalid VBR\n{ustLine}"); } }
private static void ParseEnvelope(UNote note, string ust, UstLine ustLine) { // p1,p2,p3,v1,v2,v3,v4,%,p4,p5,v5 (0,5,35,0,100,100,0,%,0,0,100) try { var parts = ust.Split(new[] { ',' }).Select(s => double.TryParse(s, out double v) ? v : -1).ToArray(); if (parts.Length < 7) { return; } double p1 = parts[0], p2 = parts[1], p3 = parts[2], v1 = parts[3], v2 = parts[4], v3 = parts[5], v4 = parts[6]; if (parts.Length == 11) { double p4 = parts[8], p5 = parts[9], v5 = parts[11]; } note.Expressions["decay"].Data = 100 - (int)v3; } catch (Exception e) { throw new FileFormatException($"Invalid Envelope\n{ustLine}", e); } }
private static void ParseEnvelope(UNote note, string ust, UstLine ustLine) { // p1,p2,p3,v1,v2,v3,v4,%,p4,p5,v5 (0,5,35,0,100,100,0,%,0,0,100) try { var parts = ust.Split(new[] { ',' }).Select(s => float.TryParse(s, out float v) ? v : -1).ToArray(); if (parts.Length < 7) { return; } float p1 = parts[0], p2 = parts[1], p3 = parts[2], v1 = parts[3], v2 = parts[4], v3 = parts[5], v4 = parts[6]; if (parts.Length == 11) { float p4 = parts[8], p5 = parts[9], v5 = parts[10]; } note.phonemeExpressions.Add(new UExpression("dec") { index = 0, value = 100f - v3, }); } catch (Exception e) { throw new FileFormatException($"Invalid Envelope\n{ustLine}", e); } }