Skip to content

Commit ae4d73f

Browse files
2 parents e23b4ca + d2ad55b commit ae4d73f

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

TuneLab/Extensions/Formats/VPR/VocaloidVprProject.cs

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,66 @@ public static ProjectInfo Deserialize(Stream stream)
297297
newClearness.DefaultValue = 0.0;
298298
midiPartInfo.Automations.Add("Clearness", newClearness);
299299

300+
var newExciter = new AutomationInfo();
301+
var exciter = controllers.Cast<JObject>().FirstOrDefault(c => (string?)c["name"] == "exciter")?["events"] ?? new JArray();
302+
303+
if (exciter.Count() > 0 && (int)exciter[0]["pos"] != 0)
304+
{
305+
newExciter.Points.Add(new Point(0, 0));
306+
newExciter.Points.Add(new Point((int)exciter[0]["pos"] - 1, 0));
307+
}
308+
309+
for (int i = 0; exciter.Count() > 0 && i < exciter.Count(); i++)
310+
{
311+
if (i != 0 && (int)exciter[i]["pos"] - 1 != (int)exciter[i - 1]["pos"])
312+
{
313+
newExciter.Points.Add(new Point((int)exciter[i]["pos"] - 1, RangeMapper((int)exciter[i - 1]["value"], -64, 63, -1.0, 1.0)));
314+
}
315+
newExciter.Points.Add(new Point((int)exciter[i]["pos"], RangeMapper((int)exciter[i]["value"], -64, 63, -1.0, 1.0)));
316+
}
317+
newExciter.DefaultValue = 0.0;
318+
midiPartInfo.Automations.Add("Exciter", newExciter);
319+
320+
var newBreathiness = new AutomationInfo();
321+
var breathiness = controllers.Cast<JObject>().FirstOrDefault(c => (string?)c["name"] == "breathiness")?["events"] ?? new JArray();
322+
323+
if (breathiness.Count() > 0 && (int)breathiness[0]["pos"] != 0)
324+
{
325+
newBreathiness.Points.Add(new Point(0, 0));
326+
newBreathiness.Points.Add(new Point((int)breathiness[0]["pos"] - 1, 0));
327+
}
328+
329+
for (int i = 0; breathiness.Count() > 0 && i < breathiness.Count(); i++)
330+
{
331+
if (i != 0 && (int)breathiness[i]["pos"] - 1 != (int)breathiness[i - 1]["pos"])
332+
{
333+
newBreathiness.Points.Add(new Point((int)breathiness[i]["pos"] - 1, RangeMapper((int)breathiness[i - 1]["value"], 0, 127, 0, 1.0)));
334+
}
335+
newBreathiness.Points.Add(new Point((int)breathiness[i]["pos"], RangeMapper((int)breathiness[i]["value"], 0, 127, 0, 1.0)));
336+
}
337+
newBreathiness.DefaultValue = 0.0;
338+
midiPartInfo.Automations.Add("Breathiness", newBreathiness);
339+
340+
var newAir = new AutomationInfo();
341+
var air = controllers.Cast<JObject>().FirstOrDefault(c => (string?)c["name"] == "air")?["events"] ?? new JArray();
342+
343+
if (air.Count() > 0 && (int)air[0]["pos"] != 0)
344+
{
345+
newAir.Points.Add(new Point(0, 0));
346+
newAir.Points.Add(new Point((int)air[0]["pos"] - 1, 0));
347+
}
348+
349+
for (int i = 0; air.Count() > 0 && i < air.Count(); i++)
350+
{
351+
if (i != 0 && (int)air[i]["pos"] - 1 != (int)air[i - 1]["pos"])
352+
{
353+
newAir.Points.Add(new Point((int)air[i]["pos"] - 1, RangeMapper((int)air[i - 1]["value"], 0, 127, 0, 1.0)));
354+
}
355+
newAir.Points.Add(new Point((int)air[i]["pos"], RangeMapper((int)air[i]["value"], 0, 127, 0, 1.0)));
356+
}
357+
newAir.DefaultValue = 0.0;
358+
midiPartInfo.Automations.Add("Air", newAir);
359+
300360
partInfo = midiPartInfo;
301361

302362
if (partInfo != null)

0 commit comments

Comments
 (0)