[gmpi] Re: High level milestone plan (long message)
- From: Jeff McClintock <jeffmcc@xxxxxxxxxx>
- To: gmpi@xxxxxxxxxxxxx
- Date: Fri, 11 Mar 2005 11:19:38 +1300
Hi Ron,
Milestones are good.
That's what I was hoping for with my "Master Plan" post. Can we add
a little more detail? e.g.
> M3: Create a simple volume control plugin (headless) using the base C
> interface, plus command line test harness.
3.a - Create a simple audio 'pass though' plugin. Intention: Spec Audio
buffering and process() function.
3.b. - Add a single parameter "Volume". Intention: Spec Parameter
discovery. Spec basic timestamped event delivery.
Best Regards,
Jeff
Ron Kuper wrote:
In my company we manage software development on a system of milestones.
We take the entire product cycle and carve it up into a series of
periodic checkpoints. This approach helps us manage change and keep on
top of exactly where we are in the project. I'd like to propose we take
a similar approach for GMPI.
But in the context of GMPI, I have 2 other reasons for wanting to work
this way.
Reason 1:
At the MMA meeting at NAMM, it was suggested and generally agreed that
the baseline benefit of GMPI is to provide a kind of universal plugin
wrapper for smaller developers who didn't already have one. The premise
is that bigger companies such as Waves or Native Instruments already
have their own internal framework for "write once, ship many", and that
smaller companies do not.
We've talked about creating wrappers as part of the GMPI SDK. But we've
never really identified a stage of development where we state that
wrappers exist for all popular formats. I believe this needs to be one
of our milestones, and an early one at that.
What's attractive about building wrappers early is that we can do this
without first having to design GMPI's packaging or meta-data
architecture. We can simply create a static library for the GMPI core
object, and then let each specific wrapper handle the format specific
packaging, registration and meta-data issues. Also, we can defer having
to tackle many UI issues, leaving them up to the wrapper for now.
Reason 2:
The area of parameter/voice control poses some challenges and
opportunities. The challenge is we assume that we will be able to
easily wrap GMPI parameters within a VST, AU or DirectX wrapper. But I
expect there to be unexpected details that will trip us up, and these
may only come to light when we start to develop the wrappers.
The opportunity is, there may be some interest in the MMA hardware
community for a parameter discovery and control mechanism such as the
one we are planning for GMPI. It might really help our efforts to get
input from the hardware vendors on this slice of the GMPI protocol. IMO
it would be a huge design win if something like Chris Grigg's proposed
message format could be massaged into something that hardware vendors
would like to use, too. Maybe nailing down the final ultimate parameter
mechanism needs to be another milestone?
Based on these musings, I suggest we phase GMPI implementation using in
the following milestones.
M1: Establish coding standards, create basic skeleton modules for Win,
Mac and *nix. (Currently underway.)
M2: Define base C interface to the GMPI core object. This interface
will not initially address packaging, registration, meta-data or UI.
M3: Create a simple volume control plugin (headless) using the base C
interface, plus command line test harness.
M4: Implement wrappers for VST (PC), VST (Mac), Audio Units and
DirectX. These wrappers will be constructed as projects in the IDE of
choice (TBD) for each platform. These wrappers will be headless. The
projects will statically link to the simple volume control plugin.
M5: Create a simple sine wave synthesizer using the base C interface,
plus command line harness. This synth will be MIDI controllable only.
M6: Update the wrappers that were created in M4 so that they support a
MIDI controllable software synthesizer.
(***) Note that M1-M6 do not require involvement in the MMA. By the end
of M6 we wil have created something very close to a universal plugin
wrapper, and that will be significant achievement onto itself.
Thoughts?
----------------------------------------------------------------------
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: http://www.freelists.org/archives/gmpi
Email gmpi-request@xxxxxxxxxxxxx w/ subject "unsubscribe" to unsubscribe
- Follow-Ups:
- [gmpi] Re: High level milestone plan (long message)
- From: Tim Hockin
- References:
- [gmpi] High level milestone plan (long message)
- From: Ron Kuper
Other related posts:
- » [gmpi] High level milestone plan (long message)
- » [gmpi] Re: High level milestone plan (long message)
- » [gmpi] Re: High level milestone plan (long message)
- » [gmpi] Re: High level milestone plan (long message)
- » [gmpi] Re: High level milestone plan (long message)
- » [gmpi] Re: High level milestone plan (long message)
But in the context of GMPI, I have 2 other reasons for wanting to work this way.
Reason 1:
At the MMA meeting at NAMM, it was suggested and generally agreed that the baseline benefit of GMPI is to provide a kind of universal plugin wrapper for smaller developers who didn't already have one. The premise is that bigger companies such as Waves or Native Instruments already have their own internal framework for "write once, ship many", and that smaller companies do not.
We've talked about creating wrappers as part of the GMPI SDK. But we've never really identified a stage of development where we state that wrappers exist for all popular formats. I believe this needs to be one of our milestones, and an early one at that.
What's attractive about building wrappers early is that we can do this without first having to design GMPI's packaging or meta-data architecture. We can simply create a static library for the GMPI core object, and then let each specific wrapper handle the format specific packaging, registration and meta-data issues. Also, we can defer having to tackle many UI issues, leaving them up to the wrapper for now.
Reason 2:
The area of parameter/voice control poses some challenges and opportunities. The challenge is we assume that we will be able to easily wrap GMPI parameters within a VST, AU or DirectX wrapper. But I expect there to be unexpected details that will trip us up, and these may only come to light when we start to develop the wrappers.
The opportunity is, there may be some interest in the MMA hardware community for a parameter discovery and control mechanism such as the one we are planning for GMPI. It might really help our efforts to get input from the hardware vendors on this slice of the GMPI protocol. IMO it would be a huge design win if something like Chris Grigg's proposed message format could be massaged into something that hardware vendors would like to use, too. Maybe nailing down the final ultimate parameter mechanism needs to be another milestone?
Based on these musings, I suggest we phase GMPI implementation using in the following milestones.
M1: Establish coding standards, create basic skeleton modules for Win, Mac and *nix. (Currently underway.)
M2: Define base C interface to the GMPI core object. This interface will not initially address packaging, registration, meta-data or UI.
M3: Create a simple volume control plugin (headless) using the base C interface, plus command line test harness.
M4: Implement wrappers for VST (PC), VST (Mac), Audio Units and DirectX. These wrappers will be constructed as projects in the IDE of choice (TBD) for each platform. These wrappers will be headless. The projects will statically link to the simple volume control plugin.
M5: Create a simple sine wave synthesizer using the base C interface, plus command line harness. This synth will be MIDI controllable only.
M6: Update the wrappers that were created in M4 so that they support a MIDI controllable software synthesizer.
(***) Note that M1-M6 do not require involvement in the MMA. By the end of M6 we wil have created something very close to a universal plugin wrapper, and that will be significant achievement onto itself.
Thoughts?
- [gmpi] Re: High level milestone plan (long message)
- From: Tim Hockin
- [gmpi] High level milestone plan (long message)
- From: Ron Kuper