public VixenImport(string filename) { var deserializer = new XmlSerializer(typeof(VIX.Program)); VIX.Program sequence; using (TextReader textReader = new StreamReader(filename)) { sequence = (VIX.Program)deserializer.Deserialize(textReader); } this.eventPeriodInMilliseconds = sequence.EventPeriodInMilliseconds; byte[] effectData = Convert.FromBase64String(sequence.EventValues); this.effectsPerChannel = effectData.Length / sequence.Channels.Length; int i = 0; foreach (var channel in sequence.Channels) { var channelIdentity = new VixenChannel(channel.output); AddChannelData(channelIdentity, new ChannelData(channel.Value)); var channelEffectData = new byte[this.effectsPerChannel]; Array.Copy(effectData, i, channelEffectData, 0, channelEffectData.Length); effectDataPerChannel[channelIdentity] = channelEffectData; i += this.effectsPerChannel; } }