[gmpi] Re: Generalized Music Plugin Interface list is now onl ine

  • From: David Olofson <david@xxxxxxxxxxx>
  • To: gmpi@xxxxxxxxxxxxx
  • Date: Wed, 12 Feb 2003 05:57:00 +0100

On Wednesday 12 February 2003 01.23, Michael Gogins wrote:
[...]
> Give me a limit, and I'll come up with a meaningful musical example
> that breaks it.

Those will probably come in handy later. You don't have to work very 
hard to convince *me* that double controls should be supported, 
though. :-)


[...]
> (instrument #, time, duration) and arbitrary user-defined fields.
[...]

Sounds a lot like XAP and PTAF. We don't have the duration field, 
though, since it doesn't make much sense in real time applications. 
Plugins could still provide a control for it though, and maybe it 
should even be hinted so sequencers can handle it automatically. 
(Note events in sequencers generally do have duration info, but it 
cannot be expressed in MIDI in any standard way, AFAIK.)


[...more Csound...]
> If the instrument number is a fraction,
> a later event with the same value for instrument number is "tied"
> to the first event, thus skipping re-initialization of the
> instrument instance and enabling ties, legato, and such that
> musicians do every day but most software just doesn't get. Your
> cookie idea is perhaps somewhere in the same space.

Actually, cookies are for control addressing. In short, it allows 
plugins to decode all control events with a single level switch() and 
direct indexing.

However, we have another mechanism called VVIDs (Virtual Voice IDs) to 
address voices in polyphonic synths. It's very similar to PTAFs voice 
ID system, only each XAP VVID comes with a host managed uint32_t that 
a synth may use in any way the author finds sensible.

Normally, a synth would use the VVID entry to store the index of the 
physical voice allocated when it receives a request to "bind" a VVID. 
For further voice control events, voice look-up is just a matter of

        addressed_voice = synth->voices + host->vvids[ev->vvid];

rather than searching and/or using hash tables to find voices for 
every control event. Point dead (stolen) voices at a dummy voice 
struct to avoid extra conditionals.

Ties, legato, glisando etc is handled by just playing multiple notes 
on the same VVID, instead of picking a new VVID or rebinding the VVID 
for each new note. This is pretty much like running each voice of a 
poly synth as an independent mono synth.


//David Olofson - Programmer, Composer, Open Source Advocate

.- The Return of Audiality! --------------------------------.
| Free/Open Source Audio Engine for use in Games or Studio. |
| RT and off-line synth. Scripting. Sample accurate timing. |
`---------------------------> http://olofson.net/audiality -'
   --- http://olofson.net --- http://www.reologica.se ---


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