Archive of the former Yahoo!Groups mailing list: MOTM

previous by date index next by date
previous in topic topic list next in topic

Subject: Re: [motm] Midi MSB/LSB

From: Eric Brombaugh <ebrombaugh@...>
Date: 2009-03-20

MIDI commands are sent as groups of 1, 2 or 3 8-bit bytes. The top bit of every byte is a flag which indicates if it is a status or data byte. A pitch wheel command sends a 14-bit value as a sequence of three bytes: a status byte that says it's a pitch wheel command, followed by two data bytes. Since the top bit of each data byte is already used as the status/data flag, seven remain so two bytes gives 14 bits. The first of the two data bytes is the MSB (most-significant byte), and the second is the LSB (least significant byte).

Continuous controller commands are always three bytes long: the status byte indicating it's a continuous controller command, followed by two data bytes. One of the data bytes indicates which CC# it is, the other contains the 7-bit data for that CC. If you want more than 7 bits you'll need to concatenate two CC#s together in your MIDI decoder as is done in some synths.

Eric

--- On Thu, 3/19/09, ithaib <ithaib@...> wrote:

From: ithaib <ithaib@...>
Subject: [motm] Midi MSB/LSB
To: motm@yahoogroups.com
Date: Thursday, March 19, 2009, 10:15 AM

Hi all,

I was wondering if someone could explain MSB/LSB and how I can use it. I've been googling it and I don't quite get it.

I'm building a 16 channel MIDI controller to control continuous controller messages. Now, MIDI messages are 7-bit, right? So, how does Pitch work? From what I understand it's a 14 bit message. The data is recorded on 2 channels and takes advantage of MSB and LSB, right? Otherwise we would hear the note stepping up and down and not doing it smoothly...

So is this something that's set up in the sequencer that's receiving the messages or is it the controller that's sending the messages? I want to be able to record 14 bit controller data on any channel - basically have all the pots act just like pitch data but on different continuous controller channels. Possible?

I hope this is not confusing. I'd really appreciate any insights...

Thanks,
Ithai