Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

is GM System On message standard?

324 views
Skip to first unread message

Peter Billam

unread,
Jul 29, 2009, 2:51:38 AM7/29/09
to
Greetings folks,

My Roland XV-2020 manual documents a particular SysEx message
called "GM1 System On": F0 7E 7F 09 01 F7
(also a "GM2 System On": F0 7E 7F 09 03 F7 )
which puts the synth into General-Midi mode.
Is this to some extent a standardised message, that other synths
would also understand?

Regards, Peter

--
Peter Billam www.pjb.com.au www.pjb.com.au/comp/contact.html

Clemens Ladisch

unread,
Jul 29, 2009, 7:06:20 AM7/29/09
to
Peter Billam wrote:
> My Roland XV-2020 manual documents a particular SysEx message
> called "GM1 System On": F0 7E 7F 09 01 F7
> which puts the synth into General-Midi mode.
> Is this to some extent a standardised message,

It is defined in the General MIDI specification.

> (also a "GM2 System On": F0 7E 7F 09 03 F7 )

Suprisingly, this is defined in the General MIDI 2 specification.

> that other synths would also understand?

Any synth that claims to support GM must understand it.


Best regards,
Clemens

Peter Billam

unread,
Jul 29, 2009, 7:57:26 AM7/29/09
to
On 2009-07-29, Clemens Ladisch <cle...@ladisch.de> wrote:
> Peter Billam wrote:
>> My Roland XV-2020 manual documents a particular SysEx message
>> called "GM1 System On": F0 7E 7F 09 01 F7
> It is defined in the General MIDI specification.
>
>> (also a "GM2 System On": F0 7E 7F 09 03 F7 )
> Suprisingly, this is defined in the General MIDI 2 specification.
> ...

> Any synth that claims to support GM must understand it.

Excellent. Thanks...

Peter Billam

unread,
Jul 29, 2009, 7:39:08 PM7/29/09
to
On 2009-07-29, Clemens Ladisch <cle...@ladisch.de> wrote:
> Peter Billam wrote:
>> My Roland XV-2020 manual documents a particular SysEx message
>> called "GM1 System On": F0 7E 7F 09 01 F7
>> Is this to some extent a standardised message,
> It is defined in the General MIDI specification.
>> (also a "GM2 System On": F0 7E 7F 09 03 F7 )
> Suprisingly, this is defined in the General MIDI 2 specification.

Are there other SysEx messages that are standardised across synths,
or just these two? If so, is there a list of them somewhere?

(I'd been making the mistake of assuming that the whole SysEx
space was completely proprietary and synth-specific...)

Clemens Ladisch

unread,
Jul 30, 2009, 4:20:51 AM7/30/09
to
Peter Billam wrote:
> On 2009-07-29, Clemens Ladisch <cle...@ladisch.de> wrote:
> > Peter Billam wrote:
> > > ... GM1 System On

> >
> > It is defined in the General MIDI specification.
> >
> > > ... GM2 System On

> >
> > Suprisingly, this is defined in the General MIDI 2 specification.
>
> Are there other SysEx messages that are standardised across synths,
> or just these two? If so, is there a list of them somewhere?

The GM specification also defines "GM System Off", which (re)enables
the device-specific extensions.

GM2 defines the following SysEx messages:
- Master Volume
- Master Fine Tuning
- Master Coarse Tuning
- Reverb Type
- Reverb Time
- Chorus Type
- Chorus Mod Rate
- Chorus Mod Depth
- Chorus Feedback
- Chorus Send to Reverb
- Controller Destination Setting
- Scale/Octave Tuning Adjust
- Key-Based Instrument Controllers

Many synths support all or most of the parameters defines by the
Roland GS and/or the Yamaha XG specifications.

The GM and GM2 specifications can be bought from the MMA; if you don't
want to buy them, look into your synth's manual which should list which
message conform to GM(2).

The GS specification does not exist as such, but you can download a
manual of some SoundCanvas model (e.g., the SC-8820) from Roland's
website.

The XG specification is available from Yamaha.


Best regards,
Clemens

Peter Billam

unread,
Jul 30, 2009, 4:40:44 AM7/30/09
to
On 2009-07-30, Clemens Ladisch <cle...@ladisch.de> wrote:
>> > Peter Billam wrote:
>> Are there other SysEx messages that are standardised across synths,
>> or just these two? If so, is there a list of them somewhere?
>
> The GM specification also defines "GM System Off", which (re)enables
> the device-specific extensions.
> GM2 defines the following SysEx messages:
> - Master Volume
> - Master Fine Tuning
> - Master Coarse Tuning
> - Reverb Type
> - Reverb Time
> - Chorus Type
> - Chorus Mod Rate
> - Chorus Mod Depth
> - Chorus Feedback
> - Chorus Send to Reverb
> - Controller Destination Setting
> - Scale/Octave Tuning Adjust
> - Key-Based Instrument Controllers
> Many synths support all or most of the parameters defined by the

> Roland GS and/or the Yamaha XG specifications.
> The GM and GM2 specifications can be bought from the MMA; if you don't
> want to buy them, look into your synth's manual which should list
> which message conform to GM(2).

My XV-2020 manual doesn't specify which commands conform to GM(2),
because that might give people the impression that there are parts
of the universe not invented by Roland, but it does document most of
these commands by their _names_, so now that I have the list... :-)

> The GS specification does not exist as such, but you can download a
> manual of some SoundCanvas model (e.g., the SC-8820) from Roland's
> website.
> The XG specification is available from Yamaha.

Thank you Clemens, that's very helpful. There will now be a pause
while I digest all this, and work out what I can do with it...

Thanks, Regards, Peter

Fred Bloggs

unread,
Jul 30, 2009, 5:28:38 AM7/30/09
to
"Peter Billam" <pe...@www.pjb.com.au> wrote in message
news:slrnh6vsbp...@box8.pjb.com.au...

Since at least the late eighties virtually all MIDI devices have been MIDI
spec 1.0 compatible and therefore should understand a GM on message. GM2
didn't come out until 1999 and so only devices designed from this date are
likely to understand it and to support the extra features.

A GM on is always a "good thing" to put at the beginning of a file, as it
will not only reset all controllers on all channels, but also things like
"pitch bend sensitivity", set by RPNs, to the standard 2 semitones. Useful
if the SMF you are playing is following another where this has been changed
for some reason.

It's a good idea to place it right at the beginning of the file before any
assignment of "voices" for each channel. What is generally recommended
practice is to put the "GM on" at 01:01:000 along with other meta events
such as time signature and tempo etc. then wait for some time, typically
200ms (Yamaha spec.), before inserting an "XG on" (F0 43 10 4C 00 00 7E 00
F7) or "GS on" (F0 41 10 42 12 40 00 7F 00 41 F7) if required. So if at
120bpm 4/4 time, at 01:01:240 or thereabouts. If you are setting up special
effects using SysEx commands they would then go next usually separated from
the XG or GS SysExes by 50ms (again Yamaha spec.) and leaving 5 ticks or so
(at 480 ppqn) between each one.

Only then is it recommendable to insert the bank select MSB, LSB and program
change messages in that order separated by a tick from each other and other
controllers such as channel volume, pan and so on.

Recommended practice is therefore to leave a measure for "system setup"
before beginning the music. I insert one measure of 4/4 time at 120bpm
before any musical data as a matter of course these days.

HTH
SysExJohn.


Pete

unread,
Jul 30, 2009, 6:39:44 PM7/30/09
to
>Peter Billam wrote:
>> On 2009-07-29, Clemens Ladisch <cle...@ladisch.de> wrote:
>> > Peter Billam wrote:
>> Are there other SysEx messages that are standardised across synths,
>> or just these two? If so, is there a list of them somewhere?
>
> [Clemens' useful response snipped]


The MMA has a complete list of MIDI messages:

http://www.midi.org/techspecs/midimessages.php

and Table 4 in that details all the (oxymoronically named) Universal
System Exclusive Messages.

The table is not particularly clear about the exact format. It mentions
the "ID" (Non-real-time 0x7E, or Real-time 0x7F) and "SUB-ID"s 1 and 2,
but forgets the third byte ('7F' in the GM Reset 'F0 7E 7F 09 01 F7').
That's the "Channel Code", that *could* be used to specify a particular
SysEx channel (not necessarily a 1..16 MIDI-channel); '7F' means "always
use, regardless of channel".

Another useful source of info is Jeff Glatt's site. His page on
Universal System Exclusives is here:

http://home.roadrunner.com/~jgglatt/tech/midispec/uni.htm

Cheers,
-- Pete --


--
============================================================================
-- www.BINGe.com --
The Decision Engine -- we do all the thinking for you....
If you're on a BINGe, you'll never want to think again.

Pete

unread,
Jul 30, 2009, 7:21:37 PM7/30/09
to
In article <4a7167ce$0$30888$9b62...@news.freenet.de>,
Fred Bloggs <fr...@yahoo.co.uk> wrote:
> [....]

>It's a good idea to place it right at the beginning of the file before any
>assignment of "voices" for each channel. What is generally recommended
>practice is to put the "GM on" at 01:01:000 along with other meta events
>such as time signature and tempo etc. then wait for some time, typically
>200ms (Yamaha spec.), before inserting an "XG on" (F0 43 10 4C 00 00 7E 00
>F7) or "GS on" (F0 41 10 42 12 40 00 7F 00 41 F7) if required. So if at
>120bpm 4/4 time, at 01:01:240 or thereabouts. If you are setting up special
>effects using SysEx commands they would then go next usually separated from
>the XG or GS SysExes by 50ms (again Yamaha spec.) and leaving 5 ticks or so
>(at 480 ppqn) between each one.
>
>Only then is it recommendable to insert the bank select MSB, LSB and program
>change messages in that order separated by a tick from each other and other
>controllers such as channel volume, pan and so on.
>
>Recommended practice is therefore to leave a measure for "system setup"
>before beginning the music. I insert one measure of 4/4 time at 120bpm
>before any musical data as a matter of course these days.

Is all that spacing really still necessary? I noticed that Rob Thomas
in his old "The MIDI Files" book gives a similar recommendation of "one
tick" between control messages, but I've always just piled them up on
each other without encountering any problems. Events will always (unless
the connection is direct USB) get sent at not more than MIDI serial rate,
and surely modern equipment can handle that without a sweat?

And I've just looked at some Yamaha Clavisoft files (for their Clavinova)
and they don't seem to be holding to that 'Yamaha Spec' you mention,
either! They have about 12 or so 9-byte SysExs all at the same tick.
(Interestingly these are preceded by a lot of "Sequencer Specific"
meta-event data -- presumably read by the Clavinova player -- that
*does* have a delay before the pack of SysExs.)

Peter Billam

unread,
Jul 30, 2009, 9:04:16 PM7/30/09
to
On 2009-07-30, Pete <neve...@GOODEVEca.net> wrote:
> The MMA has a complete list of MIDI messages:
> http://www.midi.org/techspecs/midimessages.php
> and Table 4 in that details all the (oxymoronically named) Universal
> System Exclusive Messages.
> The table is not particularly clear about the exact format.

You're not kidding...

> It mentions the "ID" (Non-real-time 0x7E, or Real-time 0x7F) and
> "SUB-ID"s 1 and 2, but forgets the third byte ('7F' in the GM Reset
> 'F0 7E 7F 09 01 F7'). That's the "Channel Code", that *could* be
> used to specify a particular SysEx channel (not necessarily a 1..16
> MIDI-channel); '7F' means "always use, regardless of channel".

I was just about to open another thread to ask about channels...
My xv-2020 manual documents Scale/Octave Tuning Adjust as follows:

Status Data byte Status
F0H 7EH,7FH,08H,08H,ffH,ggH,hhH, ssH... F7

Byte Explanation
F0H Exclusive Status
7EH ID Number (Universal Non-realtime Message)
7FH Device ID (Broadcast)
08H Sub ID#1 (MIDI Tuning Standard)
08H Sub ID#1 (scale/octave tuning 1-byte form)
ffH Channel/Option byte 1
bits 0 to 1 = channel 15 to 16, bit 2 to 6 = undefined
ggH Channel byte 2; bits 0 to 6 = channel 8 to 14
hhH Channel byte 3; bits 0 to 6 = channel 1 to 7
ssH 12 byte tuning offset of 12 semitones from C to B
00H = -64 [cents]
40H = 0 [cents] (equal temperament)
7FH = +63 [cents]
F7H EOX (End Of Exclusive)

My question would be: what do these "Channel" bytes do ?
My original guess would be that they're a bitmask, allowing a
temperament to be set for some MIDI-channels (eg the harpsichord)
but not for others (eg the violin). On this theory,
ff,gg,hh = 7F 7F 7F would change the temperament on all channels
ff,gg,hh = 00 00 00 wouldn't change the temperament on any channel
ff,gg,hh = 00 00 01 would change it on channel 1 ? or 7 ?

OTOH, they might be SysEx channels or something.

AFAICT, my xv-2020 seems to interpret ff,gg,hh = 00 00 01 as
changing just MIDI-channel 1 (out of 1..16) but I haven't tested
it much and could be wrong about this, plus it's only one synth...

Is there an reference for what these "Channel" bytes do ?

> Another useful source of info is Jeff Glatt's site. His page on
> Universal System Exclusives is here:
> http://home.roadrunner.com/~jgglatt/tech/midispec/uni.htm

Regards, Peter

Pete

unread,
Jul 31, 2009, 2:28:58 AM7/31/09
to
In article <slrnh74gog...@box8.pjb.com.au>,

Peter Billam <contac...@www.pjb.com.au> wrote:
>On 2009-07-30, Pete <neve...@GOODEVEca.net> wrote:
>> The MMA has a complete list of MIDI messages:
>> http://www.midi.org/techspecs/midimessages.php
>> and Table 4 in that details all the (oxymoronically named) Universal
>> System Exclusive Messages.
>> The table is not particularly clear about the exact format.
>
>You're not kidding...
(:-/) Deliberate, I suspect, so that one will shell out cash for
the "full" spec... I don't propose to oblige them. (Time that they
realized the value of Open Source!)

>
>> It mentions the "ID" (Non-real-time 0x7E, or Real-time 0x7F) and
>> "SUB-ID"s 1 and 2, but forgets the third byte ('7F' in the GM Reset
>> 'F0 7E 7F 09 01 F7'). That's the "Channel Code", that *could* be
>> used to specify a particular SysEx channel (not necessarily a 1..16
>> MIDI-channel); '7F' means "always use, regardless of channel".
>
>I was just about to open another thread to ask about channels...

I think I should have avoided the word 'channel' in that context, but
I was following Jeff Glatt's usage. It's generally called "Device ID",
because sometimes you may want to direct a SysEx to a particular *device*
(when you have more than one by the same manufacturer), and you can seloect
a specific target with that. I see 7F referred to as "broadcast", which
makes sense.

That'd be a good guess... (:-))
I think that's exactly right -- 16 bits for 16 MIDI channels. Only
those with corresponding bits set will be retuned. (And 'channel 1'
only, in your last example.)

What I had to read several times (the code was new to me) to get it to
make sense is the line "12 byte tuning offset...". They don't exactly
show it clearly [again!] but there must be a sequence of 12 bytes in that
position, one for the desired shift in each semitone of the scale.


>
>Is there an reference for what these "Channel" bytes do ?

Seems to be really hard to track down references on the web. That
money-grubbing instinct again, I suppose.

Fred Bloggs

unread,
Jul 31, 2009, 6:36:33 AM7/31/09
to
"Pete" <neve...@GOODEVEca.net> wrote in message
news:PL-dnVDQmKCctu_X...@lmi.net...

>
> Is all that spacing really still necessary? I noticed that Rob Thomas
> in his old "The MIDI Files" book gives a similar recommendation of "one
> tick" between control messages, but I've always just piled them up on
> each other without encountering any problems. Events will always (unless
> the connection is direct USB) get sent at not more than MIDI serial rate,
> and surely modern equipment can handle that without a sweat?
>
> And I've just looked at some Yamaha Clavisoft files (for their Clavinova)
> and they don't seem to be holding to that 'Yamaha Spec' you mention,
> either! They have about 12 or so 9-byte SysExs all at the same tick.
> (Interestingly these are preceded by a lot of "Sequencer Specific"
> meta-event data -- presumably read by the Clavinova player -- that
> *does* have a delay before the pack of SysExs.)
>
> -- Pete --

You're quite right to question whether it's still necessary, and the answer
is "sometimes", which I know isn't exactly helpful. My personal experience
driving external hardware i.e. not a card, is as follows.

Scenario 1: loads of SysEx data in an SMF and too small a recieve buffer in
a h/w synth or music module, result a "buffer overflow" message. The problem
went away when the data was respaced. The module in question was a Yamaha
MU128.

Scenario 2: Editing a file for someone to insert a "GM on", as the file was
in a "set" for a gig and the previous file made some alterations to things
like "pitch bend sensitivity", all the voice assignments were at 01:01:000.
The sequencer CWPA9 screwed up where in the file it inserted it so some
voices sounded and others didn't. Moving the bank select MSB, LSB and
program to after the GM on fixed that.

Scenario 3: Someone sent me an edited file where the MSB and LSB bank select
came after program change in the file, in fact they were all on the same
tick, the result was that the MIDI standard voice was assigned instead of
the GS version of the voice. Putting them back in the correct sequence a
tick apart sorted the problem.

However if you're talking about soft synths, VST instruments, etc. then
there seem to be less problems. But then you almost certainly won't be
sending big SysExes to them.

My experience is not so much how you send the data (USB, MIDI or "to host"
cable), but the size of the MIDI receive buffers in the hardware. The advice
to leave 200ms after the GM on, is to allow the hardware to reset the
controllers on up to 64 channels of MIDI. My own MU1000 allows for this (64
channels) via USB 1.1, or via its "to host" cable. The SC8850 does too. It
takes, I guess, a fraction of a second to go round putting default values in
all the CCs and things you can set via RPNs, NRPNs, etc.

I imagine if you are sending a GM on to a soft synth then the result is
almost instantaneous. My advice is always to try reducing the intervals if
you like, but expect to be caught out occasionally. A 4/4 measure at 120bpm
is only 2 seconds long and mosy gigging musicians can wait that long before
the count in IMHO.

What dya reckon?
SysExJohn.


Fred Bloggs

unread,
Jul 31, 2009, 7:03:10 AM7/31/09
to
"Pete" <neve...@GOODEVEca.net> wrote in message
news:9fGdnQLPFJa3Eu_X...@lmi.net...

In fact I do own a complete copy of the specification, paid for it, don't
expect it to be free, just as I expect people to pay for the courses that I
run. I need to earn money to pay for food, heating, run a car and so on.
That's how the world has always worked, and since we don't live in a
communist state I expect to pay for the next version when it comes out. BTW
the spec is about an inch thick. Sorry about being money grubbing.

However, if you go to the MMA web site you will find that many addenda are
available to download or to view for free. Find where the main spec is
situated and look for addenda, you will find a section on MIDI tuning. The
one byte form is part of the GM2 spec.

In the one byte form you can detune each note C to B (hence 12 bytes) in
each MIDI channel by +/- 63/64 cents from ET. If you can find a synth that
supports the 2 byte version then you can get even finer resolution.

Try here: http://www.midi.org/techspecs/midituning.php have fun reading it.

SysExJohn


0 new messages