Yahoo Groups archive

Emu XL-7 & MP-7 User's Group

Index last updated: 2026-04-29 00:09 UTC

Message

LSB/MSB & Bank Switching - part 1: bits and bytes

2003-12-03 by steve_the_composer

> --- In xl7@yahoogroups.com, erik_magrini@B... wrote:
> If you can send bank select messages, you can send MSB/LSB values
> too (same thing, different name from what I understand).  As for
> the implementation, I honestly have no idea.  I'm guessing Steve
> can  help us out here?  Anyone know what the bank selects are for
> the various ROMs?

Thanks for the opportunity to feel useful again.  (At least I hope 
this is useful.)  I will back up quite a bit to get everyone on board 
who wants to be on board.  Apologies to those who know this and/or 
have no use for this.

It is OK to skip to part 2.  It should stand on its own.

BTW: robotchas is right. B=Byte. (Bit = Binary Digit, that is 1 or 0)

=====================================================================
PREVIEW:
I.  LSB/MSB
   A. Basics of Bits, Bytes and Hexidecimal numbers
   B. MIDI numbers: commands and data
   C. THE BOTTOM LINE (see part 2: Selecting E-MU presets)
=====================================================================
I.  LSB/MSB
   A. Basics of Bits, Bytes and Hexidecimal numbers

A byte is a number represented by 8 bits.

0 0 0 0 0 0 0 0   = 00 in hexidecimal (base 16) and decimal (base 10)
0 1 1 1 1 1 1 1   = 7F in hex; 127 in decimal

1 0 0 0 0 0 0 0   = 80h 128d
1 1 1 1 1 1 1 1   = FFh 255d
--the highest number that can be represented by an 8-bit byte is 255.

256 = 2 hundreds + 5 tens + 6 ones or
2 x 10^2 (2 x 10x10) + 
5 x 10^1 (5 x 10) +
6 x 10^0 (6 x 1)

1001b = 09h 09d  (BTW, 1/2 byte = nybble)
1 x 2^3 (1 x 2x2x2) = 08
0 x 2^2 (0 x 2x2) = 00
0 x 2^1 (0 x 2) = 00
1 x 2^0 (1 x 1) = 1
--the highest number that can be represented by an 4-bit nybble is 15 
(0Fh)

HEX: 0 1 2 3 4 5 6 7 8 9 A B C D E F

=====================================================================
   B. MIDI numbers: commands and data

MIDI commands are 80h - FFh (128-255)
80 -> 8F signify note-off commands
--here, the 8 is the most significant NYBBLE (MSN)
--the least significant NYBBLE (LSN) represents the midi channel [- 1]
--the most significant NYBBLE (MSN) represents the command

90 -> 9F signify note-on commands

Since 80 - FF are commands, data can only go from 00 to 7F.
Hence, 127 is the highest value of a MIDI data byte.

92  40  7F  tells anyone receiving MIDI data the following:

9 (MSN)   "HEY, listen up! [80 or higher] a note-on is coming!"
2 (LSN)   "It's on channel 3"

40 = the note number (in theory note numbers can go from 00-7F)
7f = velocity

For On/Off MIDI commands 00-3f = off, 40-7f = 0n.  Hence if you have 
a sequence whose note on values are all 64 (40h), it was made on a 
non-velocity sensitive synth. 

PRESET CHANGE STUFF:

C0 -> CF signify program/patch/preset change (1 data byte follows)
CA 20 tells the MIDI chain:
"HEY, change the patch on channel 11 to patch[preset] 32!"
--20h = 2 x 16 = 32
--20h = C-1 on a synth that goes from A-1 to H-8
--20h = 3-0 on a synth that goes from 1-1 to 8-8

Thus, with Program/Patch/Preset Change commands, you can only select 
128 presets (from 00->7F, 0-127).
=====================================================================
   C. THE BOTTOM LINE (see part 2: Selecting E-MU presets)

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.