[gmpi] Re: Topic 7: Audio packaging

  • From: "Vincent Burel" <vincent.burel@xxxxxxxxxx>
  • To: <gmpi@xxxxxxxxxxxxx>
  • Date: Fri, 23 May 2003 16:00:34 +0200

----- Original Message -----
From: "David Olofson" <david@xxxxxxxxxxx>
To: <gmpi@xxxxxxxxxxxxx>
Sent: Friday, May 23, 2003 3:07 PM
Subject: [gmpi] Re: Topic 7: Audio packaging


> On Friday 23 May 2003 14.26, Vincent Burel wrote:
> > An other important point concerning audio package.
> >
> > GMPI has to fix the constraint concerning the In/Out pointers :
> > - is it possible to recieve egual input pointer ? (e.g. lpin1 ==
> > lpin2) - is it possible to recieve egual ouput pointer ? (e.g.
> > lpout1 == lpout2) - is it possible to recieve out pointer egual to
> > in pointer ? (e.g. lpout1 == lpin1)
> >
> > these questions are important also for the host. Some algorithm ,
> > in some cases can use some in/out buffer as temporary buffer, In
> > other case some algorithm optimization requires to know exactly
> > what can be the scenario with in/out pointer values.
>
> Yes...
>
> I have this obsession with "context IDs". :-) It's what XAP uses to
> describe to a host which event sources and targets live together in
> inner loops, and it's a very simple and very powerful solution.
> Events always come in timestamp order, and no one has to actually
> sort them, ever; only merge when multiple source contexts are sending
> to the same target context.
>
>
> I think something similar could be used to turn the "inplace broken"
> concept into something that's actually usefull for more than the
> simplest I/O layouts, and plugins with multiple inner loops. (A synth
> with separate outputs, for example.)
>
> Just mark each channel/pin/whatever (ie one mono audio stream in or
> out) with a context ID. Same IDs means same inner loop, provided that
> loop is in-place safe.
>
> If a plugin is *totally* in-place broken, each audio input or output
> will will have it's own plugin unique context ID. This tells the host
> that there must be one unique buffer connected to each pin, or weird
> things will happen.
>
> If you have a plugin where each input is paired with an output, and
> each pair is in-place safe, just mark the input and the output in
> each pair with the same context ID. Now the host will know that it's
> ok to reuse buffers, as long as reuse involves only ins and outs with
> the same context ID. It's also possible to see exactly which output
> "belongs" to which input.
>
> Finally, if the plugin somehow, for each sample index or for the whole
> buffers, ensures that all input samples are read before any output
> samples are overwritten within a group of input and output pins, it
> can use the same context ID for all pins in that group.
>
>
> Please note that I came up with this just now, and haven't thought all
> that much about it. There might be holes in it.

i've asked to fix it, means just write it in the documentation and reply by
YES or NO to the 3 questions below.
- is it possible to recieve egual input pointer ? (e.g. lpin1 == lpin2)
- is it possible to recieve egual ouput pointer ? (e.g. lpout1 == lpout2)
- is it possible to recieve out pointer egual to in pointer ? (e.g. lpout1
== lpin1)

i don't want to deal with different cases . it's too much . I just want to
know the exact constraints. Otherwise Host manufacturers or Plug-in
developpers could get excellent idea which could cause trouble with some
algorithm and generate compatibility problem with different host ! :-)

Vincent Burel



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