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; }
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); }