fluid-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: MIDI Bank Select proposal (was Re: [fluid-dev] Re: Son of ticket #65


From: jimmy
Subject: Re: MIDI Bank Select proposal (was Re: [fluid-dev] Re: Son of ticket #65)
Date: Fri, 6 Aug 2010 16:10:24 -0700 (PDT)

> Date: Fri, 6 Aug 2010 07:52:14 +0200
> From: Pedro Lopez-Cabanillas <address@hidden>
> 
> On Friday, August 6, 2010, Elimar Green wrote:
> > > I want to remark the above quotation from the SF2
> specification. SF2 bank
> > > numbers for melodic channels are numbers in the
> range 0 to 127, 7 bits.
> >
> > That is only for General MIDI (GM) compatibility
> though.  
> 
> No. General MIDI (GM) doesn't use banks, CC#0 and CC#32 are
> ignored in GM mode 
> by all standards compliant devices.
> 

GM1 was ambiguous, but GM2 does use CC#0 and CC#32.

Maybe we can try to dig into GS and XG specs to setup the specific mode for 
them.  Many GS/XG midi files should already have some GS-reset or XG-reset 
sys-ex messages at the start of the MIDI sequence.  From what I remember (web 
searches), Timidy already list the detection of GM/GS/XG mode as one of the 
features.  Otherwise, GM1 was ambiguous so if we want, we may find a way to 
allow customized configuration for specific device(s) with regards to MSB, LSB, 
ProgChange handling.

Perhaps we can also have a GM2 mode for this, which is straight forward.  From

   http://en.wikipedia.org/wiki/General_MIDI_Level_2 

It has some good info on specific GM2 bank selects (CC#0 and CC#32) before a 
ProgramChange to select instrument voice, separately similar info for selecting 
GM2 drumkit.

>>>
Program and bank change events

General MIDI 2 compatible synthesizers access all of the 256 instruments by 
setting cc#0 (Bank Select MSB) to 121 and using cc#32 (Bank Select LSB) to 
select the variation bank before a Program Change. Variation bank 0 contains 
full GM sound set.
<<<


My take of GM level-1 is that it specified a minimum requirements, not 
forbidding, but allowing for additional expansion for vendor enhanced features.

I think GM level-2 is similar, again quoting form wikipedia page above:

>>>
General requirements

    * Number of Notes: 32 simultaneous notes
    * MIDI Channels: 16
    * Simultaneous Melodic Instruments - up to 16 (all Channels)
    * Simultaneous Percussion Kits - up to 2 (Channel 10/11)
<<<

Systems with 64/128/256 notes polyphony will meet the "Number of Notes" 
requirements, and not disqualified because they have more than 32-notes 
polyphony.

My take with bank changes for GM level-1 is similar, the specs for GM level-1 
does leave room for enhancements, that's all.  Of course, different vendors 
have their own implementation(s), sometimes deliberately, so that they won't 
get sued by their competitor(s).  That's why we see mumbo jumbo in MSB, LSB 
when crossing brand-names.

Within the same brand, things are fairly consistent (except when company 
merged).  They may change because they have to, with newer/better 
design/implementation goals moving forward (from Organ, FM-synth, 
MIDI-keyboard, Analog Synth, Digital Synth, Sampler, Workstation, Arranger...)

Of course, if a MIDI files/sequences recorded on one device (or using one 
soundfont) being played by a different device (using a different soundfont), it 
may not have the appropriate instrument voice(s), and/or drumkit.  In such 
situation, we should print out a warning, and fallback to some sane/safe 
(similar, if possible) instrument voice or drumkit.  Our only common 
denominator is GM1 sound set as a required set of features.

Jimmy








reply via email to

[Prev in Thread] Current Thread [Next in Thread]