Hi,
I’ve been reading through the manual and came across Tempo MSB & Tempo LSB in the MIDI section, but “MSB” and “LSB” are nowhere explained (I don’t think). What do they mean?
Same question for “NRPN MSB register”
Thanks.
Hi,
I’ve been reading through the manual and came across Tempo MSB & Tempo LSB in the MIDI section, but “MSB” and “LSB” are nowhere explained (I don’t think). What do they mean?
Same question for “NRPN MSB register”
Thanks.
It’s a tricky one to explain and to be fair, the documentation does a good job.
MSB = Most significant Bit
LSB = Least significant Bit
Before I can explain the NRPN register, you need a bit on an understanding of what MIDI is - or more specifically MIDI CC. MIDI CC (control change or continuous change) is way to send changes to a MIDI device for things like volume, balance, sustain etc. Each one of these ‘parameters’ has an ID and a value - you send a value to a specific ID to change that parameter.
For example CC 7 is volume - send 127 and you’ll get full volume. Why 127? Because that’s the maximum size of a byte of data.
So what if we need more values than just 127? Well, we send the command to 2 MIDI CC parameters; this gives us 127*127 possible values. To make these big numbers we send 0-127 to one MIDI CC - this is the MSB value, then we send 0-127 to another (the LSB). The MSB and LSB are combined to make the large number.
So what if we need to change a parameter that’s not part of the standard MIDI CC parameters? That’s where the NRPN register comes in. Sending values to NRPN register (MIDI CC 98+99) lets you select a custom control parameter; manufacturers are free to come up with their own parameters. Then you send a value for this selected parameter to to MIDI CC 6 (MSB) and optionally MIDI CC 38 (LSB). You can also increment and decrement using MIDI CC 96 +97.
From what I read in the Beatbuddy MIDI spec, they’re not using the NRPN to select a parameter; they’ve simply hardcoded it to control the value of the tempo parameter instead of first selecting the parameter, then sending a value for it. I could be wrong, but that’s how I read it.
Hope that explains things.
Hey thanks!