+public class MidiListener {
+ private boolean enabled = false;
+ private final String name;
+
+ MidiListener(MidiInputDevice d) {
+ d.createInput(this);
+ name = d.getName();
+ }
+
+ MidiListener() {
+ registerKeyEvent(this);
+ name = "Keyboard";
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void keyEvent(KeyEvent e) {
+ if (e.getID() == KeyEvent.KEY_PRESSED) {
+ switch (e.getKeyChar()) {
+ case 'q':
+ noteOnReceived(new Note(60, 127));
+ break;
+ }
+ } else if (e.getID() == KeyEvent.KEY_RELEASED) {
+ switch (e.getKeyChar()) {
+ case 'q':
+ noteOffReceived(new Note(60, 0));
+ break;
+ }
+ }
+ }
+
+ public MidiListener setEnabled(boolean enabled) {
+ if (enabled != this.enabled) {
+ this.enabled = enabled;
+ // notify midi UI to update
+ }
+ return this;
+ }
+
+ void controllerChangeReceived(rwmidi.Controller cc) {
+ if (!enabled) {
+ return;
+ }