public void NoteOn(NoteOnMessage msg) { Scale scale = new Scale(msg.Note.Family(), Scale.Patterns[scaleToUse]); List<Note> scaleNotes = scale.Traverse(msg.Note, msg.Note+12); float delay = msg.BeatTime+1; for (int i = 1; i < scaleNotes.Count; ++i, delay++) { clock.Schedule(new NoteOnOffMessage(outputDevice, msg.Channel, scaleNotes[i], msg.Velocity, delay, 0.99f)); } scaleNotes = scale.Traverse(msg.Note+12, msg.Note); for (int i = 1; i < scaleNotes.Count; ++i, delay++) { clock.Schedule(new NoteOnOffMessage(outputDevice, msg.Channel, scaleNotes[i], msg.Velocity, delay, 0.99f)); } }