[gmpi] Re: MIDI: Proposed Reqs (try #2)
- From: Chris Grigg <gmpi-public@xxxxxxxxxxxxxx>
- To: gmpi@xxxxxxxxxxxxx
- Date: Wed, 7 Jul 2004 09:46:28 -0700
What is you position w.r.t the status of the native GMPI and MIDI
(OSC, watever) source?
ie. which are compulsory and which optional.
- Steve
?? - This thread is about requirements. Like I said:
As written, this is all orthogonal to the stapling issue.
If you really need some expansion on that, then: I'm tending to agree
with whoever suggested that stapling can be seen as an optimization
(i.e., the system works w/o stapling, but is needlessly inefficient),
and if stapling is an optimization, then it isn't really a
requirements issue.
So, do you have any comments on the proposed MIDI requirements?
-- Chris G.
3.15. MIDI
Req. 68: NO DRAG ON PURE GMPI - In general, none of the following
MIDI requirements should be met by handicapping the abstract design
of other, non-MIDI-related, 'pure GMPI' requirement areas; in
particular, MIDI's well-known limitations in terms of integer field
sizes, message model, etc. should not be taken as bounds on GMPI per
se.
Req. 69: EXTERNAL MIDI IN & OUT - It must be possible for hosts to
control plugs from arbitrary MIDI 1.0 HW instrument controllers, HW
control surfaces, and SW outside the GMPI graph (though the in-graph
data need not necessarily be in pure MIDI 1.0 format). This
includes but is not limited to playing notes, adjusting parameters,
host-side ad hoc 'click-and-wiggle' controller mappings, and System
Exclusive communication. It must also be possible for plugs to
communicate to arbitrary external MIDI devices (including other SW
outside the GMPI graph) by effectively emitting MIDI 1.0 for the
host to route to destinations outside the GMPI graph (though the
in-graph data need not necessarily be in pure MIDI 1.0 format).
Plugs must not need to use platform native MIDI I/O APIs to achieve
this, it must be possible using only the GMPI API.
Req. 70: MIDI I/O BY PLUGS - It must be possible for plugs to
effectively behave as MIDI 1.0 receivers and/or senders (though the
in-graph data need not necessarily be in pure MIDI 1.0 format) using
only the GMPI API.
MORE: One option is to allow for MIDI->GMPI (& vice versa)
converter plug-ins.
Req. 71: MIDI HW PROXIES - It must be possible for a GMPI plug to
act as a proxy for a connected hardware MIDI device in the studio
(though the in-graph data need not necessarily be in pure MIDI 1.0
format) using only the GMPI API.
Req. 72: HW/SW STUDIO ROUTING/MANAGEMENT - It must be possible to
effectively route MIDI 1.0 connections (though the in-graph data
need not necessarily be in pure MIDI 1.0 format) between proxied
MIDI HW devices and/or other GMPI plugs in the same GMPI graph,
using only the GMPI API.
MORE: This is meant to promote host functionality like the
Environment in Logic.
Req. 73: MIDI-ORIENTED MUSIC PROCESSORS - It must be possible to
effectively generate and process MIDI 1.0 streams (though the
in-graph data need not necessarily be in pure MIDI 1.0 format) with
GMPI plug-ins, using only the GMPI API. E.g. transposers,
channelizers, splitters, strummers, etc. that operate on just a
control stream, not audio; or e.g. generators like software LFOs.
Req. 74: SINGLE EVENT DELIVERY MECHANISM - To preserve
sample-accurate timing and simplify automation state repeatability,
there must not be a separate message routing system for
MIDI-originated events; all MIDI-originated events must be
communicated to plugs, and from plugs to other plugs or the host,
via the same control signal system described in sections 3.8.
Events, 3.11. Parameters, and 3.12 Control I/O (though the in-graph
data need not necessarily be in pure MIDI 1.0 format).
Req. 75: SINGLE EVENT CODING - To simplify automation state
repeatability, in addition to representing all pure GMPI event
types, the GMPI event system must also be able to represent all MIDI
1.0 messages absolutely without loss of information (message content
and time) (though the in-graph data need not necessarily be in pure
MIDI 1.0 format). An initial proposal for a single, common event
coding intended to meet the needs of both MIDI 1.0 and all expected
pure GMPI messages has been drafted <link>.
Req. 76: DEFINED TRANSCODING - GMPI must include a single, clear,
universal rule set for losslessly transcoding incoming MIDI 1.0
messages to GMPI events, and for transcoding (with managed loss)
outgoing GMPI events to MIDI 1.0 messages. Transcoding must occur at
the MIDI 1.0 message level, not the individual MIDI byte level.
MORE:
* Depending on the eventual design of the pure GMPI note
representation event(s), the relationship between MIDI messages
and GMPI events may not necessarily always be 1:1.
* For outgoing
GMPI events that are transcoded to MIDI 1.0, the rules will need
to exactly specify what truncation, rounding, etc. operations are
needed when converting float or other high-resolution GMPI
values to MIDI 1.0's limited integer fields.
* System Exclusive
messages must always be passed verbatim, with no transcoding.
Req. 77: MIDI-PARAMETER MAPPING - Plugs with MIDI-driven parameters
(in the sense of section 3.11 Parameters) must be able to expose to
the host an arbitrary MIDI-messages-to-parameters map. The map must
be changeable at runtime, for example when the parameter set changes.
Req. 78: MIDI AND ACTORS - For plugs with MIDI-driven parameters (in
the sense of section 3.11 Parameters) where changes to one parameter
via MIDI automatically produce changes in other parameters, all such
links must be correctly modelled by the plug's Actor component (per
section 4.21 The Parameter Pre-Processor Model).
..end..
----------------------------------------------------------------------
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
- References:
- [gmpi] MIDI: Proposed Reqs (try #2)
- From: Chris Grigg
- [gmpi] Re: MIDI: Proposed Reqs (try #2)
- From: Steve Harris
Other related posts:
- » [gmpi] MIDI: Proposed Reqs (try #2)
- » [gmpi] Re: MIDI: Proposed Reqs (try #2)
- » [gmpi] Re: MIDI: Proposed Reqs (try #2)
- » [gmpi] Re: MIDI: Proposed Reqs (try #2)
- » [gmpi] Re: MIDI: Proposed Reqs (try #2)
- » [gmpi] Re: MIDI: Proposed Reqs (try #2)
- » [gmpi] Re: MIDI: Proposed Reqs (try #2)
- » [gmpi] Re: MIDI: Proposed Reqs (try #2)
- » [gmpi] Re: MIDI: Proposed Reqs (try #2)
- » [gmpi] Re: MIDI: Proposed Reqs (try #2)
- » [gmpi] Re: MIDI: Proposed Reqs (try #2)
- » [gmpi] Re: MIDI: Proposed Reqs (try #2)
- » [gmpi] Re: MIDI: Proposed Reqs (try #2)
- » [gmpi] Re: MIDI: Proposed Reqs (try #2)
- » [gmpi] Re: MIDI: Proposed Reqs (try #2)
- » [gmpi] Re: MIDI: Proposed Reqs (try #2)
- » [gmpi] Re: MIDI: Proposed Reqs (try #2)
- » [gmpi] Re: MIDI: Proposed Reqs (try #2)
- » [gmpi] Re: MIDI: Proposed Reqs (try #2)
What is you position w.r.t the status of the native GMPI and MIDI (OSC, watever) source?
ie. which are compulsory and which optional.
- Steve
3.15. MIDI
Req. 68: NO DRAG ON PURE GMPI - In general, none of the following MIDI requirements should be met by handicapping the abstract design of other, non-MIDI-related, 'pure GMPI' requirement areas; in particular, MIDI's well-known limitations in terms of integer field sizes, message model, etc. should not be taken as bounds on GMPI per se.
Req. 69: EXTERNAL MIDI IN & OUT - It must be possible for hosts to control plugs from arbitrary MIDI 1.0 HW instrument controllers, HW control surfaces, and SW outside the GMPI graph (though the in-graph data need not necessarily be in pure MIDI 1.0 format). This includes but is not limited to playing notes, adjusting parameters, host-side ad hoc 'click-and-wiggle' controller mappings, and System Exclusive communication. It must also be possible for plugs to communicate to arbitrary external MIDI devices (including other SW outside the GMPI graph) by effectively emitting MIDI 1.0 for the host to route to destinations outside the GMPI graph (though the in-graph data need not necessarily be in pure MIDI 1.0 format). Plugs must not need to use platform native MIDI I/O APIs to achieve this, it must be possible using only the GMPI API.
Req. 70: MIDI I/O BY PLUGS - It must be possible for plugs to effectively behave as MIDI 1.0 receivers and/or senders (though the in-graph data need not necessarily be in pure MIDI 1.0 format) using only the GMPI API.
MORE: One option is to allow for MIDI->GMPI (& vice versa) converter plug-ins.
Req. 71: MIDI HW PROXIES - It must be possible for a GMPI plug to act as a proxy for a connected hardware MIDI device in the studio (though the in-graph data need not necessarily be in pure MIDI 1.0 format) using only the GMPI API.
Req. 72: HW/SW STUDIO ROUTING/MANAGEMENT - It must be possible to effectively route MIDI 1.0 connections (though the in-graph data need not necessarily be in pure MIDI 1.0 format) between proxied MIDI HW devices and/or other GMPI plugs in the same GMPI graph, using only the GMPI API.
MORE: This is meant to promote host functionality like the Environment in Logic.
Req. 73: MIDI-ORIENTED MUSIC PROCESSORS - It must be possible to effectively generate and process MIDI 1.0 streams (though the in-graph data need not necessarily be in pure MIDI 1.0 format) with GMPI plug-ins, using only the GMPI API. E.g. transposers, channelizers, splitters, strummers, etc. that operate on just a control stream, not audio; or e.g. generators like software LFOs.
Req. 74: SINGLE EVENT DELIVERY MECHANISM - To preserve sample-accurate timing and simplify automation state repeatability, there must not be a separate message routing system for MIDI-originated events; all MIDI-originated events must be communicated to plugs, and from plugs to other plugs or the host, via the same control signal system described in sections 3.8. Events, 3.11. Parameters, and 3.12 Control I/O (though the in-graph data need not necessarily be in pure MIDI 1.0 format).
Req. 75: SINGLE EVENT CODING - To simplify automation state repeatability, in addition to representing all pure GMPI event types, the GMPI event system must also be able to represent all MIDI 1.0 messages absolutely without loss of information (message content and time) (though the in-graph data need not necessarily be in pure MIDI 1.0 format). An initial proposal for a single, common event coding intended to meet the needs of both MIDI 1.0 and all expected pure GMPI messages has been drafted <link>.
Req. 76: DEFINED TRANSCODING - GMPI must include a single, clear, universal rule set for losslessly transcoding incoming MIDI 1.0 messages to GMPI events, and for transcoding (with managed loss) outgoing GMPI events to MIDI 1.0 messages. Transcoding must occur at the MIDI 1.0 message level, not the individual MIDI byte level.
MORE:
* Depending on the eventual design of the pure GMPI note
representation event(s), the relationship between MIDI messages
and GMPI events may not necessarily always be 1:1.
* For outgoing
GMPI events that are transcoded to MIDI 1.0, the rules will need
to exactly specify what truncation, rounding, etc. operations are
needed when converting float or other high-resolution GMPI
values to MIDI 1.0's limited integer fields.
* System Exclusive
messages must always be passed verbatim, with no transcoding.Req. 77: MIDI-PARAMETER MAPPING - Plugs with MIDI-driven parameters (in the sense of section 3.11 Parameters) must be able to expose to the host an arbitrary MIDI-messages-to-parameters map. The map must be changeable at runtime, for example when the parameter set changes.
Req. 78: MIDI AND ACTORS - For plugs with MIDI-driven parameters (in the sense of section 3.11 Parameters) where changes to one parameter via MIDI automatically produce changes in other parameters, all such links must be correctly modelled by the plug's Actor component (per section 4.21 The Parameter Pre-Processor Model).
..end..
---------------------------------------------------------------------- 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.
- [gmpi] MIDI: Proposed Reqs (try #2)
- From: Chris Grigg
- [gmpi] Re: MIDI: Proposed Reqs (try #2)
- From: Steve Harris