Exemple #1
0
        public override void SetKeyOn(partPage page, MML mml)
        {
            Note n = (Note)mml.args[0];
            byte noteNum;
            int  arpNote = page.arpFreqMode ? 0 : page.arpDelta;

            if (page.bendWaitCounter == -1)
            {
                noteNum = (byte)GetNoteNum(page.octaveNew, n.cmd, n.shift + page.keyShift + arpNote);
                if (!page.beforeTie)
                {
                    page.beforeBendNoteNum = noteNum;
                }
                //if (!page.beforeTie)
                //    page.beforeBendNoteNum = -1;
            }
            else
            {
                noteNum = (byte)GetNoteNum(page.bendStartOctave, page.bendStartNote, page.bendStartShift + page.keyShift + arpNote);
                page.beforeBendNoteNum = noteNum;
            }
            page.tblNoteOn[noteNum] = true;

            MIDINote mn = new MIDINote();

            mn.page        = page;
            mn.mml         = mml;
            mn.noteNumber  = noteNum;
            mn.velocity    = (byte)(n.velocity == -1 ? page.velocity : n.velocity);
            mn.length      = page.tie ? -1 : page.waitKeyOnCounter;
            mn.beforeKeyon = null;
            if (page.beforeTie)
            {
                mn.beforeKeyon = true;
                if (page.beforeBendNoteNum != -1)
                {
                    noteNum       = (byte)page.beforeBendNoteNum;
                    mn.noteNumber = noteNum;
                }
            }
            mn.Keyon = true;
            page.noteOns[noteNum] = mn;
        }
Exemple #2
0
        public override void SetKeyOn(partWork pw, MML mml)
        {
            Note n = (Note)mml.args[0];
            byte noteNum;

            if (pw.bendWaitCounter == -1)
            {
                noteNum = (byte)GetNoteNum(pw.octaveNew, n.cmd, n.shift + pw.keyShift);
            }
            else
            {
                noteNum = (byte)GetNoteNum(pw.bendStartOctave, pw.bendStartNote, pw.bendStartShift + pw.keyShift);
            }
            pw.tblNoteOn[noteNum] = true;

            MIDINote mn = new MIDINote();

            mn.pw         = pw;
            mn.mml        = mml;
            mn.noteNumber = noteNum;
            mn.velocity   = (byte)(n.velocity == -1 ? pw.velocity : n.velocity);
            noteOns.Add(mn);
        }