[gmpi] Re: Parameters / controls / GMPI event system - refreshment

  • From: thockin@xxxxxxxxxx
  • To: gmpi@xxxxxxxxxxxxx
  • Date: Sat, 3 Dec 2005 01:17:56 -0800

On Sat, Dec 03, 2005 at 06:33:57PM +1300, Jeff McClintock wrote:
> Sorry Tim,
> You did say: It depends on the patch...
> 
> Guitar patch - re-using a VID cancels previous note.
> Piano patch - re-using VID lets previous note ring.
> 
> The piano, from a keyboard controller. How to get real piano behavior? 
> (truncate prev note's tail).
> 
> (when you hold sustain and hit G4 ...G4...G4...G4 )
> 
> The piano patch should behave like the guitar patch I think?.

Sure.  When you choose a piano patch and you see successive hits of the
same note, you stop the previous voice.  The plugin knows - internally -
that this is correct behavior for a piano patch.  For a polysynth patch,
it might not be the right behavior.

floorf() works when you're in a MIDI compatible mode.  When you're in a
micro-tonal or other tonal mode, you need some other way to know which key
was intended.  You can round to the nearest key by pitch, or you can
require explicit ties or some other mechanism.

I freely admit that this is the flaw in my mental model.  How do you guess
which key a pitch applies to?  Is pitch 60.0 really key 60 or is it key 59
+ bend?

The 1-VPID per-key model solves this, but breaks other more flexible (and
synthetic) useage patterns.

It's late here.  Let me make up some more detailed visualizations
tomorrow.  I'll find some way to animate it, so you can really get what I
am saying.  I think it will help.

Tim

p.s. here's a wacky idea.  Define 1000 base note IDs - like MIDI
note numbers.  Encode the note number in the VPID.  That allows you to
have 4,294,967 VPIDs per note ID, while still guaranteeing that you can
identify which note was intended.  Let's make it easier and say that there
are 1 million VPIDs per note.  So if I press note 60 3 times, I would
see VPID(60,000,000), VPID(60,000,001), VPID(60,000,002).  This solves all
three classes of plugin:

True mono:  ignores the VPID anyway, all VPIDs map to the same voice.

Piano-like:  the upper part of the VPID identifies which "string" was hit,
             the lower part is ignored.

True poly:  treats each VPID as unique.

This is kinda gross, but I don't hate it, actually.

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