} // default Color Organ Band /// <summary> /// Create an instance of a color organ band. /// </summary> /// <param name="xmlData"></param> public ColorOrganBand(ColorOrganBand template) { Sequence = template.Sequence; Name = template.Name + " - Copy"; m_id = DateTime.Now.ToString("yyyyMMddHHmmssffffff", System.Globalization.CultureInfo.InvariantCulture); m_colorOrgan = template.m_colorOrgan; m_minBinVariableRange = template.m_minBinVariableRange; m_maxBinVariableRange = template.m_maxBinVariableRange; m_usePeakLevels = template.m_usePeakLevels; m_energySumAvg = template.m_energySumAvg; m_energyPeak = template.m_energyPeak; m_energyMin = template.m_energyMin; m_energyCount = template.m_energyCount; m_clearChannelsOnWrite = template.m_clearChannelsOnWrite; m_frequencyBands = template.m_frequencyBands; m_mapOfFrequencyBands = new Dictionary <string, ColorOrganFrequencyBand>(); foreach (var band in template.m_mapOfFrequencyBands) { m_mapOfFrequencyBands.Add(band.Key, new ColorOrganFrequencyBand(band.Value)); } // end copy frequency bands m_mapOfChannels = new Dictionary <string, ColorOrganChannel>(); foreach (var channel in template.m_mapOfChannels) { m_mapOfChannels.Add(channel.Key, new ColorOrganChannel(channel.Value)); } // end copy channels } // ColorOrganBand(template)
} // ColorOrganBand(xml) /// <summary> /// Create a default color band /// </summary> /// <param name="frequencyBands"></param> /// <param name="newSequence"></param> /// <param name="colorOrgan"></param> public ColorOrganBand(Dictionary <string, FrequencyBand> frequencyBands, EventSequence newSequence, ColorOrgan colorOrgan, bool defaultFrequencyState = true) { m_colorOrgan = colorOrgan; // save the sequence info Sequence = newSequence; m_frequencyBands = frequencyBands; // Set the name for this Color Band m_id = DateTime.Now.ToString("yyyyMMddHHmmssffffff", System.Globalization.CultureInfo.InvariantCulture); Name = "All Frequencies" + m_id; // build the list of frequencies associated with this band buildMapOfFrequencyBands(defaultFrequencyState); // build a list of the current channels foreach (Vixen.Channel channel in Sequence.Channels) { ColorOrganChannel newChannel = new ColorOrganChannel(channel); m_mapOfChannels.Add(newChannel.Id, newChannel); } // end each channel in the sequence } // default Color Organ Band
/// <summary> /// Create an instance of a color organ band. /// </summary> /// <param name="xmlData"></param> public ColorOrganBand(XmlNode xmlData, Dictionary <string, FrequencyBand> frequencyBands, EventSequence newSequence, ColorOrgan colorOrgan) { // save the sequence data Sequence = newSequence; m_colorOrgan = colorOrgan; m_frequencyBands = frequencyBands; // Set the name for this Color Band m_id = DateTime.Now.ToString("yyyyMMddHHmmssffffff", System.Globalization.CultureInfo.InvariantCulture); Name = "All Frequencies" + m_id; // parse the XML file m_id = Xml.GetNodeAlways(xmlData, m_xmlName_id, m_id).InnerText; Name = Xml.GetNodeAlways(xmlData, m_xmlName_name, Name).InnerText; bool.TryParse(Xml.GetNodeAlways(xmlData, m_xmlName_usePeakLevels, m_usePeakLevels.ToString()).InnerText, out m_usePeakLevels); m_minBinVariableRange = float.Parse(Xml.GetNodeAlways(xmlData, m_xmlName_minBinVariableRange, m_minBinVariableRange.ToString()).InnerText); m_maxBinVariableRange = float.Parse(Xml.GetNodeAlways(xmlData, m_xmlName_maxBinVariableRange, m_maxBinVariableRange.ToString()).InnerText); bool.TryParse(Xml.GetNodeAlways(xmlData, m_xmlName_clearChannelsOnWrite, m_clearChannelsOnWrite.ToString()).InnerText, out m_clearChannelsOnWrite); // convert the list of Frequency bands into a list we can use buildMapOfFrequencyBands(false); // mark the frequency bands that are a member of this color organ band XmlNodeList frequencyBandNodes = xmlData.SelectNodes(m_xmlName_mapOfFrequencyBands + "/*"); foreach (XmlNode xmlFrequencyBandNode in frequencyBandNodes) { string frequencyBandName = xmlFrequencyBandNode.InnerText; m_mapOfFrequencyBands[frequencyBandName].Member = true; m_energySumAvg += m_mapOfFrequencyBands[frequencyBandName].Avg; m_energyPeak = Math.Max(m_energyPeak, m_mapOfFrequencyBands[frequencyBandName].Peak); m_energyMin = Math.Min(m_energyMin, m_mapOfFrequencyBands[frequencyBandName].Min); m_energyCount++; } // end build member list // build a list of the current channels foreach (Vixen.Channel channel in Sequence.Channels) { ColorOrganChannel newChannel = new ColorOrganChannel(channel); m_mapOfChannels.Add(newChannel.Id, newChannel); } // end each channel in the sequence // mark the channels that are a member of this color organ band XmlNodeList channelNodes = xmlData.SelectNodes(m_xmlName_mapOfChannels + "/*"); foreach (XmlNode xmlChannelNode in channelNodes) { // is this channel still in the list of channels? if (true == m_mapOfChannels.ContainsKey(xmlChannelNode.InnerText)) { // mark the channel as active m_mapOfChannels[xmlChannelNode.InnerText].Member = true; } } // end build member list } // ColorOrganBand(xml)
public ColorOrganForm(ref ColorOrgan colorOrgan) { InitializeComponent(); // save the reference to the color organ data. m_colorOrgan = colorOrgan; // set up the list using the latest data from populateColorOrganBandSelectList(); numericUpDownStartChan.Maximum = m_colorOrgan.numChans; } // ColorOrganForm
/// <summary> /// Main entry point /// </summary> /// <param name="sequence"></param> /// <returns></returns> public bool Execute(EventSequence sequence) { if (sequence == null) { throw new Exception("Color Organ add-in requires a sequence."); } if (sequence.Audio == null) { throw new Exception("Color Organ add-in requires the sequence to have audio assigned."); } // find out which version of vixen we are running on Process currentProcess = Process.GetCurrentProcess(); #if VIXEN_VERSION_2_1 if ((2 != currentProcess.MainModule.FileVersionInfo.FileMajorPart) || (1 != currentProcess.MainModule.FileVersionInfo.FileMinorPart)) { throw new Exception("Color Organ add-in does not support this version of Vixen."); } #elif VIXEN_VERSION_2_5 if ((2 != currentProcess.MainModule.FileVersionInfo.FileMajorPart) || (5 != currentProcess.MainModule.FileVersionInfo.FileMinorPart)) { throw new Exception("Color Organ add-in does not support this version of Vixen."); } #else #error "Unsupported Vixen build version" #endif ColorOrgan colorOrgan = new ColorOrgan(ref m_dataNode, sequence); ColorOrganForm colorOrganDialog = new ColorOrganForm(ref colorOrgan); colorOrganDialog.ShowDialog(); // output the color organ info // m_dataNode.RemoveAll(); colorOrgan.SaveToXml(ref m_dataNode); colorOrganDialog.Dispose(); return(true); }