public string xTimingsOutX(xTimings timings, xTimings.LabelTypes labelType, bool indent = false) { string label = ""; string level0 = ""; string level1 = " "; string level2 = " "; if (indent) { level0 = " "; level1 = " "; level2 = " "; } xEffect effect = null; StringBuilder ret = new StringBuilder(); // <timing ret.Append(level0); ret.Append(xTimings.RECORD_start); ret.Append(xTimings.TABLE_timing); ret.Append(xTimings.SPC); // name="the Name" ret.Append(xTimings.FIELD_name); ret.Append(xTimings.VALUE_start); ret.Append(timings.timingName); ret.Append(xTimings.VALUE_end); ret.Append(xTimings.SPC); // SourceVersion="2019.21"> ret.Append(xTimings.FIELD_source); ret.Append(xTimings.VALUE_start); ret.Append(timings.sourceVersion); ret.Append(xTimings.VALUE_end); ret.Append(xTimings.RECORD_end); ret.Append(xTimings.CRLF); // <EffectLayer> ret.Append(level1); ret.Append(xTimings.RECORD_start); ret.Append(xTimings.TABLE_layers); ret.Append(xTimings.RECORD_end); ret.Append(xTimings.CRLF); for (int i = 0; i < timings.effects.Count; i++) { effect = timings.effects[i]; ret.Append(level2); ret.Append(xTimings.RECORD_start); ret.Append(xEffect.TABLE_Effect); ret.Append(xTimings.SPC); // label="foo" ret.Append(xEffect.FIELD_label); ret.Append(xTimings.VALUE_start); switch (labelType) { case xTimings.LabelTypes.None: // Append Nothing! break; case xTimings.LabelTypes.Numbers: ret.Append(effect.xlabel); break; case xTimings.LabelTypes.NoteNames: label = ""; if (effect.Midi >= 0 && effect.Midi <= 127) { //label = SequenceFunctions.noteNames[timings.effects[i].Midi]; label = xUtils.noteNames[effect.Midi]; } ret.Append(label); break; case xTimings.LabelTypes.MidiNumbers: ret.Append(effect.Midi.ToString()); break; case xTimings.LabelTypes.KeyNumbers: ret.Append(effect.Midi.ToString()); break; case xTimings.LabelTypes.KeyNames: label = ""; if (effect.Midi >= 0 && effect.Midi <= 24) { label = SequenceFunctions.keyNames[effect.Midi]; } ret.Append(label); break; case xTimings.LabelTypes.Letters: ret.Append(effect.xlabel); break; case xTimings.LabelTypes.Frequency: label = ""; if (effect.Midi >= 0 && effect.Midi <= 127) { label = SequenceFunctions.noteFreqs[effect.Midi]; } ret.Append(label); break; } ret.Append(xTimings.VALUE_end); ret.Append(xTimings.SPC); // starttime="50" ret.Append(xEffect.FIELD_start); ret.Append(xTimings.VALUE_start); ret.Append(timings.effects[i].starttime.ToString()); ret.Append(xTimings.VALUE_end); ret.Append(xTimings.SPC); // endtime="350" /> ret.Append(xEffect.FIELD_end); ret.Append(xTimings.VALUE_start); ret.Append(timings.effects[i].endtime.ToString()); ret.Append(xTimings.VALUE_end); ret.Append(xTimings.SPC); ret.Append(xEffect.RECORD_end); ret.Append(xTimings.CRLF); } // </EffectLayer> ret.Append(level1); ret.Append(xTimings.RECORDS_done); ret.Append(xTimings.TABLE_layers); ret.Append(xTimings.RECORD_end); ret.Append(xTimings.CRLF); // </timing> ret.Append(level0); ret.Append(xTimings.RECORDS_done); ret.Append(xTimings.TABLE_timing); ret.Append(xTimings.RECORD_end); return(ret.ToString()); }
private void ExportSelectedxTimings(string fileName) { // Get Temp Directory int writeCount = 0; bool allInOne = optMultiPer.Checked; string lineOut = "<timings>"; string fileBaseName = Path.GetDirectoryName(fileName) + "\\" + Path.GetFileNameWithoutExtension(fileName); string exten = ".xtiming"; // Save Filename for next time (really only need the path, but...) fileTimingsLast = fileName; txtSaveNamexL.Text = ShortenPath(fileName, 100); heartOfTheSun.fileTimingsLast = fileTimingsLast; if (optMultiPer.Checked) { heartOfTheSun.saveFormat = 2; } else { heartOfTheSun.saveFormat = 1; } mruTimings.AddNew(fileName); mruTimings.SaveToConfig(); // Get path and name for export files if (allInOne) { writer = BeginTimingsXFile(fileName); writer.WriteLine(lineOut); writeCount++; } // BARS AND BEATS //if (chkBars.Checked) //if (doBarsBeats) if (chkBarsBeats.Checked) { if (transBarBeats != null) { if (transBarBeats.xBars != null) { if (transBarBeats.xBars.effects.Count > 0) { if (!allInOne) { writer = BeginTimingsXFile(fileBaseName + " - " + transBarBeats.xBars.timingName + exten); writeCount++; } lineOut = xTimingsOutX(transBarBeats.xBars, xTimings.LabelTypes.Numbers, allInOne); writer.WriteLine(lineOut); } } } if (chkBeatsFull.Checked) { if (transBarBeats.xBeatsFull != null) { if (transBarBeats.xBeatsFull.effects.Count > 0) { if (!allInOne) { writer = BeginTimingsXFile(fileBaseName + " - " + transBarBeats.xBeatsFull.timingName + exten); writeCount++; } lineOut = xTimingsOutX(transBarBeats.xBeatsFull, xTimings.LabelTypes.Numbers, allInOne); writer.WriteLine(lineOut); } } } if (chkBeatsHalf.Checked) { if (transBarBeats.xBeatsHalf != null) { if (transBarBeats.xBeatsHalf.effects.Count > 0) { if (!allInOne) { writer = BeginTimingsXFile(fileBaseName + " - " + transBarBeats.xBeatsHalf.timingName + exten); writeCount++; } lineOut = xTimingsOutX(transBarBeats.xBeatsHalf, xTimings.LabelTypes.Numbers, allInOne); writer.WriteLine(lineOut); } } } if (chkBeatsThird.Checked) { if (transBarBeats.xBeatsThird != null) { if (transBarBeats.xBeatsThird.effects.Count > 0) { if (!allInOne) { writer = BeginTimingsXFile(fileBaseName + " - " + transBarBeats.xBeatsThird.timingName + exten); writeCount++; } lineOut = xTimingsOutX(transBarBeats.xBeatsThird, xTimings.LabelTypes.Numbers, allInOne); writer.WriteLine(lineOut); } } } if (chkBeatsQuarter.Checked) { if (transBarBeats.xBeatsQuarter != null) { if (transBarBeats.xBeatsQuarter.effects.Count > 0) { if (!allInOne) { writer = BeginTimingsXFile(fileBaseName + " - " + transBarBeats.xBeatsQuarter.timingName + exten); writeCount++; } lineOut = xTimingsOutX(transBarBeats.xBeatsQuarter, xTimings.LabelTypes.Numbers, allInOne); writer.WriteLine(lineOut); } } } } // NOTE ONSETS if (transOnsets != null) { if (chkNoteOnsets.Checked) { if (transOnsets.xOnsets != null) { if (transOnsets.xOnsets.effects.Count > 0) { if (!allInOne) { writer = BeginTimingsXFile(fileBaseName + " - " + transOnsets.xOnsets.timingName + exten); writeCount++; } xTimings.LabelTypes lt = xTimings.LabelType(cboOnsetsLabels.Text); lineOut = xTimingsOutX(transOnsets.xOnsets, lt, allInOne); writer.WriteLine(lineOut); } } } } /* * if (chkTranscribe.Checked) * { * if (transOnsets.xTranscription != null) * { * if (xTimes.xTranscription.effects.Count > 0) * { * WriteTimingFileX(xTimes.xTranscription, fileName); * WriteTimingFile4(xTimes.xTranscription, fileName); * WriteTimingFile5(xTimes.xTranscription, fileName); * writeCount+=3; * } * } * } * if (chkPitchKey.Checked) * { * if (xTimes.xKey != null) * { * if (xTimes.xKey.effects.Count > 0) * { * WriteTimingFileX(xTimes.xKey, fileName); * WriteTimingFile4(xTimes.xKey, fileName); * WriteTimingFile5(xTimes.xKey, fileName); * writeCount += 3; * } * } * } * if (chkSegments.Checked) * { * if (xTimes.xSegments != null) * { * if (xTimes.xSegments.effects.Count > 0) * { * WriteTimingFileX(xTimes.xSegments, fileName); * WriteTimingFile4(xTimes.xSegments, fileName); * WriteTimingFile5(xTimes.xSegments, fileName); * writeCount += 3; * } * } * } * * */ //} if (allInOne) { lineOut = "</timings>"; writer.WriteLine(lineOut); } writer.Close(); pnlStatus.Text = writeCount.ToString() + " files writen."; }