Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }