void parseFloatParameter(LiveProject.Device device) { var floatParameter = new LiveProject.FloatParameter(); while (reader.Read() && !(reader.NodeType == XmlNodeType.EndElement && reader.Name == "PluginFloatParameter")) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case "ParameterId": floatParameter.Id = getIntValueAttrib(); break; case "Events": if (!reader.IsEmptyElement) { while (reader.Read() && !(reader.NodeType == XmlNodeType.EndElement && reader.Name == "Events")) { if (reader.NodeType == XmlNodeType.Element && reader.Name == "FloatEvent") { var e = new LiveProject.FloatParameter.Event(); e.Time = getDoubleAttrib("Time"); e.Value = (float)getDoubleValueAttrib(); floatParameter.Events.Add(e); } } } break; } } } device.FloatParameters.Add(floatParameter); }
void parseParameterList(LiveProject.Device device) { while (reader.Read() && !(reader.NodeType == XmlNodeType.EndElement && reader.Name == "ParameterList")) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case "PluginFloatParameter": if (!reader.IsEmptyElement) { parseFloatParameter(device); } break; } } } }
void parseVstPreset(LiveProject.Device device) { while (reader.Read() && !(reader.NodeType == XmlNodeType.EndElement && reader.Name == "VstPreset")) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case "Buffer": if (!reader.IsEmptyElement) { parseVstPresetBuffer(device); } break; } } } }
void parseVstPresetBuffer(LiveProject.Device device) { var rawData = new List <byte>(); while (reader.Read() && !(reader.NodeType == XmlNodeType.EndElement && reader.Name == "Buffer")) { foreach (var line in reader.Value.Split('\n')) { var trimmedLine = line.Trim().ToLower(); if (trimmedLine.Length > 0) { for (int i = 0; i < trimmedLine.Length; i += 2) { rawData.Add((byte)(hexTable[trimmedLine[i]] * 16 + hexTable[trimmedLine[i + 1]])); } } } } device.RawData = rawData.ToArray(); }
void parseInnerDeviceChain(LiveProject.Track track) { while (reader.Read() && !(reader.NodeType == XmlNodeType.EndElement && reader.Name == "DeviceChain")) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case "PluginDevice": var device = new LiveProject.Device(); if (!reader.IsEmptyElement) { parsePluginDevice(device); } track.Devices.Add(device); break; } } } }
void parseDeviceVstInfo(LiveProject.Device device) { while (reader.Read() && !(reader.NodeType == XmlNodeType.EndElement && reader.Name == "VstPluginInfo")) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case "FileName": device.PluginDll = getValueAttrib(); break; case "VstPreset": if (!reader.IsEmptyElement) { parseVstPreset(device); } break; } } } }
void parsePluginDevice(LiveProject.Device device) { device.Id = getAttrib("Id"); while (reader.Read() && !(reader.NodeType == XmlNodeType.EndElement && reader.Name == "PluginDevice")) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case "On": while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element && reader.Name == "BoolEvent") { device.Bypass = !getBoolValueAttrib(); break; } } break; case "VstPluginInfo": if (!reader.IsEmptyElement) { parseDeviceVstInfo(device); } break; case "ParameterList": if (!reader.IsEmptyElement) { parseParameterList(device); } break; } } } }