Re: so, just what is the intended purpose of "subtype" for an AU plugin?
Re: so, just what is the intended purpose of "subtype" for an AU plugin?
- Subject: Re: so, just what is the intended purpose of "subtype" for an AU plugin?
- From: William Stewart <email@hidden>
- Date: Mon, 15 Mar 2010 17:43:05 -0700
On Mar 12, 2010, at 8:07 AM, Paul Davis wrote:
> On Fri, Mar 12, 2010 at 11:00 AM, Paul Davis <email@hidden> wrote:
>
> [ ... ]
>
> following up on my own email, i realized something just after i sent
> it. the convention in AU land appears to be that a plugin is uniquely
> identified by the triplet of "type-subtype-manufacturer". given that
> most plugins are FX, type is fixed as "aufx", and the manufacturer is
> a given. thus, to uniquely a given plugin from a particular
> manufacturer, subtype has to be a plugin ID, not a "type of plugin".
>
> apple gets away with this for their own plugins because they only make
> 1 of any given type of plugin, or, when there is more than instance,
> they differ in the "type" field, eg:
>
> aufc tmpt appl - Apple: AUTimePitch
> auol tmpt appl - Apple: AUTimePitch
>
> this means that "subtype" cannot possibly play the role described by:
>
>> "In the file system, an audio unit’s loadable code is contained in a
>> bundle. Each such bundle is uniquely identified by a triplet of
>> four-char codes. The type code programmatically identifies what the
>> audio unit is for—such as mixing or audio format conversion—and
>> indirectly specifies the audio unit’s API. The subtype code
>> contributes to the bundle’s identification and indicates more
>> specifically what the audio unit does. For instance, the subtype of a
>> mixer type of audio unit might indicate that it is a multichannel
>> mixer."
>
> was this just a thinko in the design of AU?
There is some confusion in the documentation you cite here.
(1) There is NO direct linkage or requirement that a plugin (audio unit) and a bundle are linked in any way. For instance, I can have several bundles all of which could publish audio units from 'appl'
The real statement here is that the manufacturer field is used to identify any and every plugin from a given manufacturer - for example, 'appl' (regardless of the bundle that is used to distribute them)
(2) The statement on Type is correct. This is true for any plugin - for instance, an 'adec' or 'aenc' type both imply that the plugin implements the AudioCodec API. There is a direct correspondance between the component Type and the API it implements. Having said that, a plugin of a given type could implement additional API that is not required of all plugins of that type. So, the relationship between type and API is one of a core set of API, but this does not limit the plugin to *just* that set of API. So plugins generally provide a discovery call "CanDo" for the component mgr, that can be used if you need to see if a newer or additional API call is implemented by a particular plugin
(3) There is NO CONNECTION at all between the subtype and the bundle's ID
So, what does a subtype do:
An audio plugin (audio unit, codec, etc) has two fields that are required fields to be defined in a given way:
(1) type - based on the plugin type
(2) manufacturer - based on the manufacturer of the plugin
The subtype is completely up to the manufacturer to use - and as a given manufacturer is likely to distribute more than one plugin of a given type, it is the only field that can be used to distinguish one "audio unit effect" from the next. How you (as a manufacturer) decide to use this field is left to your discretion (we have no described requirements for the use of this field)
HTH
Bill
>
> --p
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Coreaudio-api mailing list (email@hidden)
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden