#763 sharpens the distinction between note-ons received via MIDI and amy.send(.., vel=1) note-ons.
My problems there could be solved by having a second command, amy.send_midi() that mirrors the kwargs of amy.send(), but delivers note-ons via the MIDI mechanism (with the specific implication that they are captured by any midi_note_cmds that have been set up.
But this could be a nice way to generate MIDI commands for sending out as well. Instead of midi_send([0x90, 0x40, 0x7F]), you could amy.send_midi(synth=1, note=64, vel=1).
The same mechanism could both route to internal synths and send MIDI bytes out the MIDI interface. In the spirit of "MIDI Thru", it could do both at the same time, although we could add flags to select only one or the other.
We could have channel=X as an alias for synth=X, and we could add kwargs for control=, value=, and program= to pythonically wrap different kinds of MIDI messages.
#763 sharpens the distinction between note-ons received via MIDI and
amy.send(.., vel=1)note-ons.My problems there could be solved by having a second command,
amy.send_midi()that mirrors the kwargs ofamy.send(), but delivers note-ons via the MIDI mechanism (with the specific implication that they are captured by anymidi_note_cmds that have been set up.But this could be a nice way to generate MIDI commands for sending out as well. Instead of
midi_send([0x90, 0x40, 0x7F]), you couldamy.send_midi(synth=1, note=64, vel=1).The same mechanism could both route to internal synths and send MIDI bytes out the MIDI interface. In the spirit of "MIDI Thru", it could do both at the same time, although we could add flags to select only one or the other.
We could have
channel=Xas an alias forsynth=X, and we could add kwargs forcontrol=,value=, andprogram=to pythonically wrap different kinds of MIDI messages.