[gmpi] Re: Ramps

  • From: Jeff McClintock <jeffmcc@xxxxxxxxxx>
  • To: gmpi@xxxxxxxxxxxxx
  • Date: Sun, 09 Jan 2005 22:31:51 +1300

> But how do you send a ramp for a MIDI event that happened on the last sample of a buffer?

As per the diagram. Look closely. Each green ramp is sent *after* the MIDI event. The result, excellent reconstruction.

http://www.synthedit.com/gmpi_ramps.gif

purple blobs = MIDI CC event.
Orange line = treating them as point updates.
Green line = converting to ramps.

I'm not diagreeing about the handling of point updates, handle them as fast as practical.

I'm saying don't treat real-time as point events, the result is rubbish. Each MIDI event causes a rapid transition to the new value. (as per the orange line on the left diagram).

I suspect you are not comfortable with the small latency introduced by ramps. The inevitable result of obeying the rules of sampling theory. The alternative, jagged, stepped output (and also lagged), is far worse.

Best Regards,
Jeff

Tim Hockin wrote:
On Sun, Jan 09, 2005 at 09:46:04PM +1300, Jeff McClintock wrote:

"When dealing with realtime inputs, you have to send them exactly as you
get them, or the host ends up coloring the control stream."


Yes.  And it's true.  It's not necesarily a bad thing that the host colors
them, but it DOES.  As if you're writing a host, I sure hope there's a way
for me to turn that coloration off.


You're saying treat realtime updates as point updates. You also said point updates should transition as fast as posible without glitching.


I'm saying that realtime updates *are* point events, withsome historical
trend.  The host can use the historical trend information to smooth the
input.  I'm fine with that.  But the host had better let me say to a
plugin "change to value Y as fast as possible".  And plugins need to be
able to do that.  And they might choose to do fast interpolation to do
that glitch-free.


I'm saying no. Don't send realtime updates as point events, send them as ramps. By sending them as point events, you turn what should be a smooth knob movement into a series a jerky point updates.


When you can send ramps, that's right.  But how do you send a ramp for a
MIDI event that happened on the last sample of a buffer?  How do you ramp
a single MIDI event with no historical trend?  etc.

Again, I'm not disagreeing re: ramps, just making sure we agree that it's
not perfect for realtime input.  Better than point events, but not perfect
and with some dark corners.

----------------------------------------------------------------------
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: //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.

Archive: //www.freelists.org/archives/gmpi
Email gmpi-request@xxxxxxxxxxxxx w/ subject "unsubscribe" to unsubscribe

Other related posts: