private Note GetNoteNumber(MMLCommand cmd, out double measureLength, MMLLength defaultLength, double currentSpm) { Note note = new Note { Volume = (float)this.volume / 15f, Octave = 1, Type = 'c' }; int noteNumber = Convert.ToInt32(cmd.Args[0]) - 12; int octavesUp = noteNumber / 12; int steps; if (octavesUp != 0) { steps = noteNumber % (octavesUp * 12); } else { steps = noteNumber; } note.Octave += octavesUp; base.Step(ref note, steps); MMLLength mmlLen = this.GetLength("", cmd.Args[1], defaultLength); note.Length = mmlLen.ToTimeSpan(currentSpm); measureLength = 1.0 / (double)mmlLen.Length; if (mmlLen.Dotted) { measureLength *= 1.5; } return(note); }
private Note GetNoteNormal(MMLCommand cmd, out double measureLength, MMLLength defaultLength, int currentOctave, double currentSpm) { Note note = new Note { Volume = (float)this.volume / 15f, Octave = currentOctave, Type = cmd.Args[0].ToLowerInvariant()[0] }; string text = cmd.Args[1]; if (text != null) { if (text == "#" || text == "+") { base.Step(ref note, 1); goto IL_9C; } if (text == "-") { base.Step(ref note, -1); goto IL_9C; } } note.Sharp = false; IL_9C: MMLLength mmlLen = this.GetLength(cmd.Args[2], cmd.Args[3], defaultLength); note.Length = mmlLen.ToTimeSpan(currentSpm); measureLength = 1.0 / (double)mmlLen.Length; if (mmlLen.Dotted) { measureLength *= 1.5; } return(note); }