Here is the final agenda. I think the first handful of topics are pretty much agreed on, so we can begin with topic 1 presently. 1. Audience for and users of plugins Who are our target users/customers? Who are our target developers? What kinds of plugins do people use today, and what will they want to use in the future? 2. Plugin flavors Audio and/or MIDI processors, sure, but what about driver plugins, synthesis components, controllers, visualization plugins, MIDI editors? 3. Cross-platform What processors, O/S, addressing models and programming languages do we need to support? Level of heterogenity on u-controller+DSP systems? 4. Host interface In-process or out-of-process? What kinds of special needs are there in events to/from a plugin? Is the host a plugin too? Can the host be a chain of simpler plugins (sequencer, timeline, automation)? Transport control, UI updates, track information? 5. Threading What kind of realtime guarantees? Does the host provide some kind of threading environment? 6. Time representation Samples or "ticks" or both/neither? How are discontinuities expressed? 7. Audio packaging What do we prefer for interleave, audio sample data types, allocation, timestamping? Are compressed formats like MP3 permitted? Do we prefer O-O packaging a la DirectShow, or raw buffers a la VST? 8. Parameter representation What data type for values, for names? How do we support validation, value distribution? Are parameters presented as a flat list or in some hierarchy? 9. The role of MIDI How important is it? How do we ensure something new is still backwards compatible? How do we represent "note parameters" in the parameter model? 10. Signal routing How is audio and control data communicated between objects? Can plugins produce more/less data than they consume? Do plugins work in "pull" or "push" model? Do we allow plugins inside plugins, full multirate synchronous data flow graph, etc.? 11. DSP state When and how does a plugin reset? How to respond to format changes? What formal "states of life" has a plugin? Are there different levels of initialization? When does which information/functionality exist? 12. Scalability Transport layer + optional protocols, or something more monolithic? What can and cannot be optional for plugins and hosts? Can certain protocols be handled through reusable host side "support modules"? Plugin SDK emulation features for non-optional protocols? 13. Persistence Whose reponsibility? How do we deal with endian issues? What formats are required for data interchange? How are factory preset settings handled? 14. Localization How does the host specify its language? Logical vs. human-readable names? 15. Component packaging Is there a "base level" possible that's still cross platform? How do we support all target platforms? 16. Enumeration (creation, discovery, etc.) Create for use vs. query, what can a plugin do at creation time, RT safety? What kind meta-data does the plugin reveal? How do plugins discover each other? How does the host discover plugins? 17. GUI Can GUI be avoided at this point? What does the interface boundary to the GUI need to be? Should the GUI be isolated from the plugin? Is the relationship between GUI and plugin 1:many, many:1, or many:many? 18. Copy protection How should plugins address DRM streams? How to sign OpenSource plugins? 19. Source code How are headers and host libraries/source licensed? What kind of sample code is required? What coding conventions do we use? What languages is sample code written in? 20. Version Control How do we manage the versioning of GMPI? How do we manage versioning issues with plugins? When a new release of a plugin comes out should it be backwards compatible with earlier versions? i.e. Should DSP binary compatibility in the strict sense be a requirement? Should plugin parameters be compatible across versions? How do we handle enhancements to parameter ranges, etc. What model should be used for version control? ---------------------------------------------------------------------- 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