Midi
From Buzztrax
Contents |
MIDI Input
To allow playing notes with midi keyboards we could add support for alsa-sequencer or jack-midi. The midi input could be used to:
- play machines
- record patterns
- play wavetable entries
jack midi
We need to configure the routing:
- have a drop-down list somewhere and lets the user choose where it should go to (wavetable, machine-1, machine-2, dynamic). dynamic would be sending it to what has focus : machine window or wavetable tab
- add an optional JACK MIDI port for each machine which you can enable by right-clicking on machine (context menu)
- add to machine property settings alongside midi/osc output routing, see midi overlays below
- maybe too unflexible
- another idea: define global "ensembles/profiles" which constitute midi note/parameter routing configurations
- list with all entities able to receive midi signals (machines and maybe virtual midi targets for application functionality?)
- complex mappings for e.g. keyboard split or different parameter ranges (lin/exp, abs/rel, ...) are possible in the long run
- profile can be changed at once, per menuitem/hotkey or even midi event?
MIDI Output
jackmidi only makes sense if we use jack as the audiosink. We need to extend the jack gstreamer plugin to expose the jack-client.
jackmidiout/alsamidiout machines
- we could have some internal gstreamer plugins (no pads)
- they have note property and some proerties for CCs
- we can use them like generators (add patterns add them to sequence),
but they would not be connected to anything
TODO
- this probably needs several changes in the code (should they be presented like generators)
- we might want to have fake level meters on them (just pulse on event)
midi overlays
- we could also overlay midi-out on any generator
- we would map the note to the machines note
- we would assign parameter columes to CC (maybe with some min/max scale adjustment)
- allows for easy swapping of buzzmachine/external synth playback
- no "phantom" sink required
- idea: add "Send via... (Midi/OSC channel)" to each machine property page? (same for receive?)
Transport sync
- we should offer jack transport slaving as a playback controller
- http://subversion.jackaudio.org/jack/trunk/jack/example-clients/showtime.c
- http://subversion.jackaudio.org/jack/trunk/jack/example-clients/transport_client.c
- we can do play, pause, stop
- we can seek
- we can also do transport slaving via alsa sequencer via Midi Machine Control.



