[gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- From: Jeff McClintock <jeffmcc@xxxxxxxxxx>
- To: gmpi@xxxxxxxxxxxxx
- Date: Sat, 01 Jan 2005 11:15:02 +1300
Hi,
> Personally, I think using events for smooth control
> signals is generally a very bad idea. It may be ok for
> pre-recorded linear ramps, but it will be hopelessly
> complicated for non-linear functions and real-time
> changing knob-style controls: how do you define the
> events?
Say for example you move your pitch-bend wheel and generate a series of
events. If you applied those directly to an audio signal, you would get
a stair-step effect, many small 'jumps' in the signal.
Surely it's better to interpolate between those events to get a
smoother signal. The simplest method is linear, i.e. small 'ramps'.
We all agree GMPI parameter change events need:
1 - a timestamp (sample-accurate)
2 - the new parameter value
...I'm saying we need an additional hint..
3 - rate (slope) at which to change the parameter value.
I am not talking about the ramps provided by many sequencers to morph a
parameter value over say 8 bars. I'm talking about the fine-grained
interpolation between successive events in a dense stream of controller
change messages.
The 'ramps' are a simple extension of the current practice, a hint to
support better interpolation. They don't prevent arbitrary controller
curves.
> A knob-style control may be seen as a (low frequency)
> signal generator and as such should use a well defined
> sample rate. Let the control publish its sample rate
Yep, that's an entirely reasonable alternative. Though not very
efficient to send a knob's output continuously. Most of the time knobs
don't move.
Best Regards,
Jeff
Crudesoft wrote:
Discussing 4.10. Ramped or Smoothed Events
Personaly, I think using events for smooth control
signals is generally a very bad idea. It may be ok for
pre-recorded linear ramps, but it will be hopelessly
complicated for non-linear functions and real-time
changing knob-style controls: how do you define the
events?
Ramps and linear motion are easy, but what about
non-linear movements, even pre-recorded? You would
have to piecewise approximate to get some usable
events and how to do that in real time? And what about
the precision? Events may be sample-accurate but the
control function will be approximative, a bad
trade-off if you ask me.
Basically there are only two types of controllers,
continuous (knob-style) and discontinuous
(button-style), and they should be handled seperately.
A knob-style control may be seen as a (low frequency)
signal generator and as such should use a well defined
sample rate. Let the control publish its sample rate
(IMHO all generators, control or not, should do that)
and/or make it accept a global control sample rate (as
in CSound). Need more accuracy? Pump up the
control('s) sample rate or let the consumer
interpolate.
A button-style control generates events and the
consumer has to figure out how to respond. If the
consumer wants to do a smooth transition, that's his
problem. These events should be sample accurate.
It may seem a good idea to define a third class of
controls, like predefined function controls that can
be described by a set of control points. But these
functions have to be interpolated anyway, so why not
do it directly at the source instead of letting every
consumer doing it for himself? (And messing things up
due to different function interpolation
implementations per consumer.)
Hints? Clues about trends? "Yeah, well I am going to
do some kind of parabolic rising thing and then at 63%
drop down rather quickly to 10 or so, all in about,
lemmesee, 400 ms I guess."
Crudesoft
----------------------------------------------------------------------
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
- Follow-Ups:
- [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- From: Tim Hockin
- References:
Other related posts:
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- » [gmpi] Re: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
Best Regards, Jeff
Discussing 4.10. Ramped or Smoothed Events
Personaly, I think using events for smooth control signals is generally a very bad idea. It may be ok for pre-recorded linear ramps, but it will be hopelessly complicated for non-linear functions and real-time changing knob-style controls: how do you define the events?
Ramps and linear motion are easy, but what about non-linear movements, even pre-recorded? You would have to piecewise approximate to get some usable events and how to do that in real time? And what about the precision? Events may be sample-accurate but the control function will be approximative, a bad trade-off if you ask me.
Basically there are only two types of controllers, continuous (knob-style) and discontinuous (button-style), and they should be handled seperately.
A knob-style control may be seen as a (low frequency)
signal generator and as such should use a well defined
sample rate. Let the control publish its sample rate
(IMHO all generators, control or not, should do that)
and/or make it accept a global control sample rate (as
in CSound). Need more accuracy? Pump up the
control('s) sample rate or let the consumer
interpolate.A button-style control generates events and the consumer has to figure out how to respond. If the consumer wants to do a smooth transition, that's his problem. These events should be sample accurate.
It may seem a good idea to define a third class of controls, like predefined function controls that can be described by a set of control points. But these functions have to be interpolated anyway, so why not do it directly at the source instead of letting every consumer doing it for himself? (And messing things up due to different function interpolation implementations per consumer.)
Hints? Clues about trends? "Yeah, well I am going to do some kind of parabolic rising thing and then at 63% drop down rather quickly to 10 or so, all in about, lemmesee, 400 ms I guess."
Crudesoft
---------------------------------------------------------------------- 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: GMPI reqs draft 1 (part 2) for review, paragraph 4.10
- From: Tim Hockin