[gmpi] Re: Decision Time: 7.1.2

  • From: Chris Grigg <gmpi-public@xxxxxxxxxxxxxx>
  • To: gmpi@xxxxxxxxxxxxx
  • Date: Thu, 12 Jun 2003 16:58:59 -0700

Tim said:

First, this Profiles discussion is OT.  We're supposed to be gathering
Requirements, yes?

The requirement comes down to a much simpler question: Do we support
multiple datatypes?  If we agree that YES we do, then we eventually need to
decide how.

Tim, I respectfully disagree that the issue of profiles is OT to the issue of what sample data types will be supported. It's still all about requirements.


Your question as proposed is stated so as to imply a single, monolithic, pan-GMPI approach, and as a result would force everybody else to treat the issue in terms like float32 vs float64 across all of GMPI, making it a critical fundamental technology choice, and therefore necessarily a much more charged and contentious choice... but because of our earlier scope decision (including mobile etc.) I doubt we will be any more able to reach agreement than we have been to date -- doomed to fail since, as we've seen, one size simply does not fit all.

Whereas something along the lines of the profiles idea would make it possible to manage those choices at a more granular level of the community, which would simplify and de-escalate the decisions within each profile, sidestepping the how-to-please-everyone-at-once problem. This simultaneously makes it easier to make progress and makes GMPI technically better on each specific platform/application.

If you want to jump to a group decision about sample data types _specifically_ _for_ _DAW_ _applications_, and at the same time say that we would like there to be some mechanism that allows other markets (like mobile) to pick different sample data types, then I would have no objection to that. (I vote for float32 for the time being, with future options TBD at the appropriate times.)

If you want to jump to a group decision about whether a single plug-in should be allowed to have audio pins of different sample data types, then I have no objection to that either. (From what I've heard, I vote for one sample data type per plug.)

But for the reasons stated earlier, I don't see how we can jump to a group decision about what sample data types will be supported globally without either a) making hosts unreasonably complicated and inefficient, and risking market confusion; or b) breaking the earlier scope decision. The other alternative is to incorporate something like profiles into the sample data type requirement, to isolate each market's unique technical requirements.

(It just occurred to me that I have been merely assuming it's obvious that there could be an 'Experimental' or 'Kitchen Sink' profile for research/avant-garde/academic uses, so that the people who really want to could write stuff that works with absolutely any of the audio sample data types. In case seeing that possibility helps any.)

Couple more questions/comments inserted below.

-- Chris G.


However, Profiles have more potential applications, too.

True. For example, they could help address the multichannel formats issue. Did you have further ideas?



> You're right, from the perspective of a plug-in developer who's only
 targeting one market, like DAWs, there is no net difference.  The
 benefit is that profiles allow the same basic GMPI architecture to be
 used in multiple applications and markets, while keeping the
 technical requirements of each individual market out of the way of
 all the other markets.

This is not specific to profiles, of course.

Without profiles, or some moral equivalent thereof, how would the technical requirements of each individual market be kept out of the way of all the other markets?



> If there were some per-plug or per-audio-pin enum property for sample
 datatype, and no profiles, then any GMPI plug-in could use any enum
 value (or maybe set of enum values, depending).  That plug could only
> be used in hosts that support the set of enums it uses. However,

 Whereas, if there were some per-plug or per-audio-pin enum property
 for sample datatype, and profiles -were- used, then each GMPI
> plug-ins would be written with one or more profiles in mind, and
could use -only- the enum values permitted by those profiles. That

The argument sounds nice, but is misrepresented, I think. It's no more difficult or less difficult with either method. If the host has to support more than one profile, it is the same as the host supporting more than one datatype...

I would assume that in the vast majority of cases, especially the most commercially important cases, only one profile would be supported at a time. Likely in regular MIDI+Audio DAWs float 32 alone will be just fine for several years, then at some point float64 would be added, and then there would be two, and eventually float32 might get retired, so you're back to one again. Unless something exotic and new comes along.


And even if it is no more or less difficult for DAW plug-in writers (important yes, only one of our target audiences, remember) to use profiles, again, please try to think bigger than just DAWs and replacing VST, and try to think about the advantages of a long-term stable outer architecture.


...If a Plugin is written with one profile in mind, it only has one datatype.

Well, that assumes the optimal case, but isn't this exactly what people have been clamoring for? They want, for excellent reasons, to have just one sample data type. Absent profiles, how would you do that -and- support mobile in the same framework?



It makes a lot of sense to me to say "When you buy plugin X, you get the
Float32, Float64, AND Int24 versions in one package!  Compare that to
competitor Y who only gives you Float32."

a) That sounds like the too-many choices problem that Vincent expressed so well, and assumes that hosts will go wild with different sample data types inside the GMPI-for-DAWs world, winding up back at a fragmented multi-format plug-in market, avoiding which is a major goal.


b) Nothing about profiles prevents a vendor from selling multi-profile bundles like you describe.


Whereas profiles assume some a priori knowledge about where Int24 is useful.

Exactly, and that's a good thing. The industry defines profiles specifically to -formalize- its highly expert a priori knowledge about what tech choices are appropriate for each platform class, or area of application. Standardization is all about reducing/focusing the scope of the solution space for each plug and host developer, thus reducing risk. While keeping the whole thing under the same GMPI umbrellla.



If I have a very full-featured host, I shouldn't need to declare that I
support 'Mobile Audio' profiles just to get Int24 support.

This position assumes that having a single 'full-featured' GMPI host would be a desirable thing and a good idea, which (given the range of platforms and markets we're trying to encompass) I'm not so sure about, either from a technical POV or a markets POV. I mean, what is the use case for supporting int24 plugs in, for example, Digital Performer? What is the use case in supporting float64 samples in, for example, Mobile DLS instrument banks? What are some examples of a single application where both of these formats would be needed ('a complete generalized GMPI host" isn't a very satisfying answer), and if there are any, are they common cases, or edge cases? "Different jobs, different tools" would probably be my practicality-driven answer.



We're saying the same answer, just different words, I think. Am I wrong?

Well, I surely wouldn't say you're wrong to want what you want, and it's true that if you only look at the end result for DAW plug authors the distinctions mostly resolve down to the same core technical thing in the case of any given single plug... but we can't forget that the problem GMPI is trying to solve takes a much bigger view than that, and I do think the two visions have critical practical differences in terms of requirements definitions, and the community politics of spec development, and how we structure a workable and maintainable spec, and how easy vs. tough we make it for developers to maintain and extend their GMPI codebases in the long run.



Our requirement then is:  Plugins have single I/O datatype for all inputs
and outputs.

I previously asked whether anyone wants to argue in support of more than one sample data type per plug, and so far nobody has. So me, I still think just one sample data type per plug is OK.



How it is done is not yet important, I think.

i really, really wish I could agree, but since without profiles this cascades out directly into deciding what the actual sample datatypes for all of GMPI will be -- where agreement seems impossible -- it seems we have to consider the 'how' as well.



Now gete everyone to agree to that requirement.

Tim


 plug could only be used in hosts that support any of those same
 profiles (typically a host would support only one or two profiles --
 maybe just  float32 and float64 in the case of DAWs), and since the
 number of enum values allowed by a given profile is small (in the
 optimal case, just one), host implementation is significantly
 > simplified.  Full interoperability of plugs and hosts within a given
 > profile is guaranteed, improving customer satisfaction.  And focuses
 > target platform choices for developers.

-- Chris G.


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



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


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