[gmpi] Re: R: Re: Topic 4: Host Interface
- From: Mike Berry <mberry@xxxxxxxxx>
- To: gmpi@xxxxxxxxxxxxx
- Date: Mon, 31 Mar 2003 19:16:33 -0700
We find that we already have to do variants of this approach to support
VST plugins which quantize their control values. I would make this a
plugin capability that was enumerated, like kPluginWillPreprocessEvents.
This could even be on a per-parameter basis. So if the plugin wanted to
do linked controls, it would declare just the controls involved in the
linkage as requiring preprocessing.
Certainly the ability to preprocess a list of events at one time would
be useful.
Tim Hockin wrote:
occur simultaneously, and the plugin returns an event. The plugin does
not execute this event. This allows the plugin to implement linked
controls, control quantization, and anything else it wants. Because the
control changes does not occur here, the host can create events on any
So the host has to call this method for every frame for which there exists
an event? And the host then needs to interpret and propogate the returned
list of events and propogate that back to all controllers. ick.
If we want to explore that route, how about a 1-call per event target per
timeslice method.
Pass all the events to a plugin->control_events() method. This method can
validate events (or not - this may not be a good idea to allow control
changes to fail), recognize linked controls and generate events for them,
and enchain the passed events. The method can return a list of events that
need to be passed back to controllers - errors or linked-knob changes. The
simplest plugins can do nothing at all for this hook. This also allow for
spontaneous changes of controls.
It really splits the processing of events into pre-processing and
processing. Which may have bad effects and good effects on performance.
Take some stuff out of the DSP path, but duplicate some effort. It should
be safe, too, as I think we can assume that once we reach the boundary
before the next time slice, we know everything that is to happen in that
timeslice.
This is still not very pretty. A plugin may have many event targets - one
for each knob, even. It adds a lot of function calls per-timeslice, which
is exactly where you DON'T want overhead.
----------------------------------------------------------------------
Generalized Music Plugin Interface (GMPI) public discussion list
Participation in this list is contingent upon your abiding by the
following rules: Please stay on topic. You are responsible for your own
words. Please respect your fellow subscribers. Please do not
redistribute anyone else's words without their permission.
Archive: http://www.freelists.org/archives/gmpi
Email gmpi-request@xxxxxxxxxxxxx w/ subject "unsubscribe" to unsubscribe
--
Mike Berry
Adobe Systems
----------------------------------------------------------------------
Generalized Music Plugin Interface (GMPI) public discussion list
Participation in this list is contingent upon your abiding by the
following rules: Please stay on topic. You are responsible for your own
words. Please respect your fellow subscribers. Please do not
redistribute anyone else's words without their permission.
Archive: http://www.freelists.org/archives/gmpi
Email gmpi-request@xxxxxxxxxxxxx w/ subject "unsubscribe" to unsubscribe
- References:
- [gmpi] Re: R: Re: Topic 4: Host Interface
- From: Tim Hockin
Other related posts:
- » [gmpi] R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
- » [gmpi] Re: R: Re: Topic 4: Host Interface
occur simultaneously, and the plugin returns an event. The plugin does not execute this event. This allows the plugin to implement linked controls, control quantization, and anything else it wants. Because the control changes does not occur here, the host can create events on any
So the host has to call this method for every frame for which there exists an event? And the host then needs to interpret and propogate the returned list of events and propogate that back to all controllers. ick.
If we want to explore that route, how about a 1-call per event target per timeslice method.
Pass all the events to a plugin->control_events() method. This method can validate events (or not - this may not be a good idea to allow control changes to fail), recognize linked controls and generate events for them, and enchain the passed events. The method can return a list of events that need to be passed back to controllers - errors or linked-knob changes. The simplest plugins can do nothing at all for this hook. This also allow for spontaneous changes of controls.
It really splits the processing of events into pre-processing and processing. Which may have bad effects and good effects on performance. Take some stuff out of the DSP path, but duplicate some effort. It should be safe, too, as I think we can assume that once we reach the boundary before the next time slice, we know everything that is to happen in that timeslice.
This is still not very pretty. A plugin may have many event targets - one for each knob, even. It adds a lot of function calls per-timeslice, which is exactly where you DON'T want overhead.
---------------------------------------------------------------------- Generalized Music Plugin Interface (GMPI) public discussion list Participation in this list is contingent upon your abiding by the following rules: Please stay on topic. You are responsible for your own words. Please respect your fellow subscribers. Please do not redistribute anyone else's words without their permission.
Archive: http://www.freelists.org/archives/gmpi Email gmpi-request@xxxxxxxxxxxxx w/ subject "unsubscribe" to unsubscribe
---------------------------------------------------------------------- Generalized Music Plugin Interface (GMPI) public discussion list Participation in this list is contingent upon your abiding by the following rules: Please stay on topic. You are responsible for your own words. Please respect your fellow subscribers. Please do not redistribute anyone else's words without their permission.
- [gmpi] Re: R: Re: Topic 4: Host Interface
- From: Tim Hockin