On Mon, May 28, 2012 at 10:49:06PM -0400, David Robillard wrote:
I'd say
that the standard case here is to *keep* all the MIDI controller
settings, not reset them. Just imagine that you're running a reverb
which forgets all settings when you briefly deactivate it in order to
listen to the dry signal. That would essentially render such a plugin
totally useless. Or am I missing something here?
It does seem like the most reasonable thing to do.
I agree.
This issue raises some other questions on how plugins could/should
handle MIDI input. I offer the following for your consideration and
comments.
The four cases outlined below are in fact points on a continuous
scale, with (1) and (4) being the extremes. The interesting range
is between (2) and (3).
1. The host accepts MIDI input, selects on port, channel, controller
number (e.g. by providing a 'learn' function), and converts selected
messages to control port values. The plugins are never aware that their
input is from MIDI.
2. As above, but the selected data is presented to the plugin either
in MIDI format, or via some more generic 'event delivery' mechanism.
The difference with (1) is that the plugin knows it is dealing with
events.
3. The host provides the MIDI ports, but offers all it gets to any
interested plugin. The plugin performs selection on port, channel
and controller number.
4. The plugin provides its own MIDI input, completely independent
from the host.
Some initial comments:
* One could argue that (3) and (4) lead to a lot of non-trivial
code and development effort being duplicated or repeated for
each plugin. But that need no be the case: the plugin SDK could
offer services that would make this (almost) as easy for the
plugin developer as (1) or (2).
* In (1,2) the selection of port/channel/controller are part of
the host configuration, this data would normally be stored in
the host's session file and the plugins are never aware of it.
In (3,4), the selection criteria become part of the plugin's
configuration, and could be included in e.g. plugin presets.
That makes a difference for the user - but I'm uncertain as
to which would be best.
* I'd expect (1,2) for e.g. individual modular synth modules,
it would feel strange if each individual one would implement
(3,4). OTOH, it wouldn't feel so odd if e.g. a Linuxsampler
or Yoshimi plugin would do that. [*]
* My tentative conclusion would be that a plugin standard
should provide both (2) and (3), and maybe something in
between those.
Comments invited !
[*] Some tricky questions to disturb your sleep:
We now have a few plugins that are in fact complete multitimbral
instruments. Suppose someone would first add LV2 support to AMS
(it can use plugins as if they were native modules), then turn
the complete AMS itself into an LV2 plugin.
- Should AMS then be able to load itself ???
- What impact would that have on the things discussed above ???
Ciao,
--
FA
A world of exhaustive, reliable metadata would be an utopia.
It's also a pipe-dream, founded on self-delusion, nerd hubris
and hysterically inflated market opportunities. (Cory Doctorow)