[gmpi] Re: 3.15 MIDI

  • From: Chris Grigg <gmpi-public@xxxxxxxxxxxxxx>
  • To: gmpi@xxxxxxxxxxxxx
  • Date: Mon, 14 Jun 2004 17:42:37 -0700

OK, so in a GMPI synth, how would you be able to distinguish the per-channel parameters from the per-voice parameters? In the addressing and discovery, I mean. (For comparison, MIDI CC's, aftertouch, program, and pitchbend generally apply to all notes on the channel, whereas velocity and pitch are per-note.) Or are you saying that to make a given source control all the notes on a channel, you'd have to send many copies of the the same message, one for each note? Hope not.

-- Chris G.

> point that not all criticisms of MIDI are air-tight. It helps to
unpack them one at a time.

If there's one hole in MIDI, it is stringed instruments. MIDI is good at many things but not these.

Take the guitar.  You can play the same pitch on two strings at the same
time.  MIDI just can't do this.

The solution is simple.  Divorce the note-number from the pitch. You can
then say..

Voice 1, Pitch=64.0, Note-On      // play Middle-A
Voice 2, Pitch=64.0, Note-On      // play Middle-A again at the same time

The second reason is pitch-bending, it's common to bend just one string to
transform a chord, from say major to minor.  You can then address that
'string'..

Voice 1, Pitch =64.1
Voice 1, Pitch =64.2  ...etc

What is a 'voice'?, it represents a string.  More generally, an individual
noise-source.  On a Piano, each key has it's own string/s, so a piano has
exactly 88 voices.  A six-string guitar has 6 voices.
 If you hit the same piano key twice, you cut-off any existing sound on that
key.  Same on a guitar string, therefore a voice is little monophonic
intrument.

 Consider stringed, non-fretted instruments, e.g.
 piano, harp, organs where key index is a natural representation of
 the instrument.

Not a problem....


MIDI models a virtual keyboard instrument.  MIDI has an implicit 128 voices,
that's the most keys you can hold down at once.  Just like the Piano,
playing the same MIDI note number twice cuts-off any previous sound on that
key.
  The point is: MIDI note numbers can map directly to voice numbers.  It's
not complicated.

MIDI:
Note-On, note=64, velocity=100

GMPI:
Voice 64, Pitch=64.0, Velocity=0.8, Note-On

Not so radical after all.  In fact the GIMPI synth will behave *exactly*
like a MIDI synth.  It's easy to convert to GMPI, it's even easy to convert
back to MIDI (in most cases).  Your existing synth code doesn't need much
tweaking.

Things get more interesting when you hook up a guitar controller, you now
only need 6 voices, each represents one string, so the one-to-one
relationship between voice-number and pitch disapears...

Playing a chord..

Voice 1, Pitch 64.0, Note-On
Voice 2, Pitch 67.0, Note-On
Voice 3, Pitch 64.0, Note-On
Voice 4, Pitch 66.0, Note-On

Hexaphonic Guitar Controllers...

http://cnmat.cnmat.berkeley.edu/Research/NIME2002/NIME02WesselWrightSchottPr.html

Hope that alleviates some concerns..

Jeff


----- Original Message ----- From: "Chris Grigg" <gmpi-public@xxxxxxxxxxxxxx> To: <gmpi@xxxxxxxxxxxxx> Sent: Tuesday, June 15, 2004 6:48 AM Subject: [gmpi] Re: 3.15 MIDI


 I think there are some things to say along the lines of Martijn's
 point that not all criticisms of MIDI are air-tight.  It helps to
 unpack them one at a time.  Keeps the heat level down.

 Tim said:
 >Indexing on keys is, IMHO, a limitation.

 It's a model.  Consider stringed, non-fretted instruments, e.g.
 piano, harp, organs where key index is a natural representation of
 the instrument.  This .is. a natural model for these instruments.  It
 also allows for things like resonance on strings not being played,
 etc.


>The semantics of the same "key" >being sent a note-on more than once are not well defined. Callign it a >"key" index makes that operation be nonsensical, when it is really not >nonsensical at all.

 For the instruments above, it's nonsensical to have more than one
 note-process per key.  So you have some good cases for the model, and
 some bad ones.


>You really want to tell a soft instrument about voices, not keys.
>
 Depends on the kind of instrument you want to have, again see above
 examples -- sometimes what you say is true, other times not.
 Besides, 'Voice' itself is quite a limiting concept if what you're
 interested in creating the kind of complex overall behavior that
 interesting real-world physical instruments tend to exhibit.
 Interaction between notes, body resonance, buzzing strings, etc.


>And >even then, the soft instrument may be set up in ways you can't know a >priori. Maybe it is set up to be mono - each ne voice kills the previous >voice. Maybe it is set up to not map it's sound to traditional 12-tone >"keys" at all.

 This is not unique to MIDI, it applies to any conceivable control
 protocol, so were you trying to get to another point here?


>A proper upright bass (or any stringed instrument) does >not really have the notion of a key - it has an infinite number of >pitches, but only one voice ver string.

 As I said, indexing on keys is one model.  Here's a case where it's
 not a natural model.  There are other cases for which it is.  All
 this shows is that no single model does well in all cases.  This is
 one of those 'different is not necessarily the same as better'
 conversations.


>MIDI just does not map to some of these things. You can force it to map >by futzing with pitch-bend, but even that is not perfect. I want to be >able to control a number of parameters per-voice. I just can't do that
in
>MIDI without setting up a channel for each voice.

 So set up a channel for each voice.  What's the problem, since your
 objective isn't prohibited, just slightly cumbersome?


> > could be supported using some other protocol than MIDI. That doesn't >> mean MIDI should no longer be supported. > >Why put MIDI into every plugin? Why not let the hosts be *REALLY* good >at MIDI and let the plugins just not worry about it. Every plugin gets >simpler by that little bit.

 That work has already been done by what, hundreds of plug developers,
 so for them there is no savings.  You'd have to do work to take it
 out.

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