[gmpi] Re: Topic 7: Audio packaging

  • From: "Jeff McClintock" <jeffmcc@xxxxxxxxxx>
  • To: <gmpi@xxxxxxxxxxxxx>
  • Date: Tue, 3 Jun 2003 14:19:45 +1200

> > SynthEdit handles this by sending the plugin an event.. "input number 1
is
> > now silent".

> Either way, this is a detail that we shouldn't even be talking about yet.

Well, Ron suggested buffers should be objects, because we can include a
silence flag.

I'm just saying: Yes silent flag is usefull, but dosn't have to impact
performance by being part of the audio buffer.

Sorry to rant on about this...
I just feel the best thing for raw performance, is give the plugin simple,
direct access to it's audio buffers.  Everything else should be secondary.
If we want to provide silence-flag and process-in-place, cool!, no problem.
Just don't use extra layers of indirection to achieve those goals.  There
are several alternatives that are just as simple.

> We dreamed up a similar thing for XAP.  How does something that outputs
> silence (an attenuator set to 0) tell the downstream plugin?  Does it send
> an event to the host or does it have connections to each downstream port?
> The buffer is a nice place for this, since they are by definition the
comms
> mechanism for downstream plugs.

The plugin sends the host an event "output 1 silent".  The host knows where
that output goes, and sends the downstream plugin "input 1 is silent".
 Each plugin only worries about it's own 'state'.  And the message is only
sent once (not every buffer). So rather than continue to execute, checking
the buffer repeatedly for silence, the plugin 'switches off" saving CPU
untill it receives a new event "input 1 active again".

  What i like about this method, is a basic plugin can ignore these events,
and just carry on processing as usual. (Host provides global zeroed input
buffer either way). There's no harm in providing a zeroed buffer AND a
silence flag. Smart plugins don't access the zeroed input buffer anyhow, so
won't pollute the cache or anything.
  It's a feature that's optional for beginers, but allows advanced
programers to get the maximum performance out of their plugins.

I guess i just don't like buffers-as-objects (but I would say that, coming
from the VST world!).

I'll try not to get too fanatical about it ...  :-)

Best Regards,
Jeff M.





----- Original Message ----- 
From: "Tim Hockin" <thockin@xxxxxxxxxx>
To: <gmpi@xxxxxxxxxxxxx>
Sent: Tuesday, June 03, 2003 9:30 AM
Subject: [gmpi] Re: Topic 7: Audio packaging


> > SynthEdit handles this by sending the plugin an event.. "input number 1
is
> > now silent".
>
> > Should I be telling all my competitors this?, or keep it to myself?
>
>
> We dreamed up a similar thing for XAP.  How does something that outputs
> silence (an attenuator set to 0) tell the downstream plugin?  Does it send
> an event to the host or does it have connections to each downstream port?
> The buffer is a nice place for this, since they are by definition the
comms
> mechanism for downstream plugs.
>
> Either way, this is a detail that we shouldn't even be talking about yet,
I
> think.  Or maybe..Ron?
>


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