Currently, MIDI note-ons are converted into AMY note-on events via amy_midi.c:amy_received_note_on(), which issues an amy_event with the note and velocity, and e.synth equal to the MIDI channel.
This is simple and easy, but not flexible. Instead, we could extend the "wire code template" approach used for MIDI Control Change messages in midi_mappings.c to provide a per-channel wire command template that is populated with the MIDI note-on payload (note number and velocity). By default this would do the same thing, but it would allow users to customize more complex behavior.
For instance, the wire code could trigger multiple note-ons to different synths (or possibly different oscs within a single voice, although I'm not sure the current synth note-on mechanism will handle this). This would permit things currently not possible, like note events with complex panning effects. (This scenario was suggested by @Nibroc_64 on Discord.)
Currently, MIDI note-ons are converted into AMY note-on events via
amy_midi.c:amy_received_note_on(), which issues anamy_eventwith the note and velocity, ande.synthequal to the MIDI channel.This is simple and easy, but not flexible. Instead, we could extend the "wire code template" approach used for MIDI Control Change messages in
midi_mappings.cto provide a per-channel wire command template that is populated with the MIDI note-on payload (note number and velocity). By default this would do the same thing, but it would allow users to customize more complex behavior.For instance, the wire code could trigger multiple note-ons to different synths (or possibly different oscs within a single voice, although I'm not sure the current synth note-on mechanism will handle this). This would permit things currently not possible, like note events with complex panning effects. (This scenario was suggested by @Nibroc_64 on Discord.)