public NoteRestPanel2(Settings.NoteRest settings, MMLStyle mmlStyle) { InitializeComponent(); this.settings = settings; this.mmlStyle = mmlStyle; }
protected override string GenerateString(Settings settings, SoundModule module) { int len = Length[0]; string str = string.Empty; Settings.NoteRest nrSettings = settings.noteRest; if (nrSettings.UnuseTiedRest || nrSettings.TieStyle == 0 || (!CommandRelation.HasFlag(MMLCommandRelation.TieBefore) || CommandRelation.HasFlag(MMLCommandRelation.PrevControl))) { str += "r"; } str += len.ToString(); int dotlen = 0; for (int i = 1; i < Length.Count; i++) { if (len * 2 == Length[i] && nrSettings.DotEnable && (nrSettings.DotLength == 0 || dotlen < nrSettings.DotLength)) { str += "."; dotlen++; } else { if (nrSettings.UnuseTiedRest) // No Tie { str = str + "r" + Length[i]; } else { if (nrSettings.TieStyle == 0) // Tie and Name { str = str + "&" + "r" + Length[i]; } else // Tie only { str = str + "^" + Length[i]; } } dotlen = 0; } len = Length[i]; } if (!nrSettings.UnuseTiedRest && CommandRelation.HasFlag(MMLCommandRelation.TieAfter) && !CommandRelation.HasFlag(MMLCommandRelation.NextControl)) { if (nrSettings.TieStyle == 0) { str += "&"; } else { str += "^"; } } return(str); }
protected override string GenerateString(Settings settings, SoundModule module) { int len = Length[0]; string str = string.Empty; Settings.NoteRest nrSettings = settings.noteRest; if (nrSettings.TieStyle == 0 || (!CommandRelation.HasFlag(MMLCommandRelation.TieBefore) || CommandRelation.HasFlag(MMLCommandRelation.PrevControl))) { str += Name; } str += len.ToString(); int dotlen = 0; for (int i = 1; i < Length.Count; i++) { if (len * 2 == Length[i] && nrSettings.DotEnable && (nrSettings.DotLength == 0 || dotlen < nrSettings.DotLength)) { str += "."; dotlen++; } else { if (nrSettings.TieStyle == 0) // Tie and Name { str = str + nrSettings.TieCommandCustom + Name + Length[i]; } else // Tie only { str = str + nrSettings.TieCommandCustom + Length[i]; } dotlen = 0; } len = Length[i]; } if (CommandRelation.HasFlag(MMLCommandRelation.TieAfter)) { str += nrSettings.TieCommandCustom; } return(str); }
public int[] GetLength(Settings.NoteRest settings) { var list = new List <LengthElement>(); if (settings.DotEnable) { var temp = new LinkedList <LengthElement>(length); list.Add(temp.First.Value); temp.RemoveFirst(); while (temp.Count > 0) { int prevlen = list[list.Count - 1].Length; LinkedListNode <LengthElement> n = temp.First; while (true) { if (n.Value.Length == prevlen / 2) { list.Add(n.Value); temp.Remove(n); break; } if (n.Next == null) { list.Add(temp.First.Value); temp.RemoveFirst(); break; } else { n = n.Next; } } } } else { list = length; } return(list.Select(x => x.Length).ToArray()); }
private int[][] CreateLengthTable(uint countsPerWholeNote, Settings.NoteRest settings) { // Create length elements var elements = new List <LengthElement>(); int div = 1; int divtri; while (true) { if (countsPerWholeNote % div == 0) { elements.Add(new LengthElement(div, ((int)countsPerWholeNote / div), false)); divtri = div * 3; if (countsPerWholeNote % divtri == 0) { elements.Add(new LengthElement(divtri, ((int)countsPerWholeNote / divtri), true)); } div <<= 1; } else { break; } } elements = elements.OrderBy(x => x.Length).ToList(); // Create length table var table = new LengthContainer[countsPerWholeNote]; table[0] = new LengthContainer(); table[0].AddLengthElement(elements.Find(x => x.Length == 1)); elements.Remove(elements.Find(x => x.Length == 1)); // Remove whole note for (int i = 0; i < elements.Count; i++) { FillLengthTableLoop(table, elements, i, new LengthContainer(), settings); } return(table.Select(x => x.GetLength(settings)).ToArray()); }
private void FillLengthTableLoop(LengthContainer[] table, List <LengthElement> elements, int n, LengthContainer container, Settings.NoteRest settings) { if (elements.Count == n) { return; } LengthContainer newContainer = container.Clone(); int loopcnt = (elements[n].TripletFlag ? 2 : 1); for (int i = 0; i < loopcnt; i++) { newContainer.AddLengthElement(elements[n]); if (newContainer.Gate >= table.Length) { return; } if (table[newContainer.Gate] == null) { table[newContainer.Gate] = newContainer; } else { if (settings.LengthStyle == 0) { if (newContainer.Count < table[newContainer.Gate].Count) { table[newContainer.Gate] = newContainer; } else if (newContainer.Count == table[newContainer.Gate].Count) { if (newContainer.TripletCount < table[newContainer.Gate].TripletCount) { table[newContainer.Gate] = newContainer; } } } else { if (newContainer.TripletCount < table[newContainer.Gate].TripletCount) { table[newContainer.Gate] = newContainer; } } } for (int j = n + 1; j < elements.Count; j++) { FillLengthTableLoop(table, elements, j, newContainer, settings); } if (elements[n].TripletFlag) { newContainer = container.Clone(); } } }
public NoteRestPanel1(Settings.NoteRest settings) { InitializeComponent(); this.settings = settings; }