示例#1
0
 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));
     }
 }