private void onChannelMessagePlayed(object sender, Midi.ChannelMessageEventArgs arg) { var command = arg.Message.Command; if (command == Midi.ChannelCommand.NoteOn && arg.Message.Data2 == 0) { command = Midi.ChannelCommand.NoteOff; } switch (command) { case Midi.ChannelCommand.NoteOn: Actions.Add(delegate { Controller.setKeyPosition(arg.Message.Data1, 1); }); break; case Midi.ChannelCommand.NoteOff: Actions.Add(delegate { Controller.setKeyPosition(arg.Message.Data1, 0); }); break; } }
public override void OnInspectorGUI() { PianoController t = target as PianoController; if (GUILayout.Button("Reset Keys")) { t.resetKeys(); } for (int index = 21; index <= 108; ++index) { float angle = t.getKeyPosition(index); angle = EditorGUILayout.Slider(index.ToString(), angle, 0, 1); angle = Mathf.Max(Mathf.Min(angle, 1), 0); t.setKeyPosition(index, angle); } }