BC Manager gurus
2013-12-13 by Brent Busby
This is long and unwieldly to explain: If I program a knob on the BCR to adjust a NRPN, it sends the NRPN every single darn time the value changes, rather than just sending the NRPN and stepping the value up and down with Midi CC#6 messages thereafter (which the Midi spec lets you do and save lots of bytes). That means that when I twist the knob, this gets emitted (synth is on Midi channel 9, which is 8 in hex numbered from zero): B8 63 00 B8 62 6E B8 06 0C B8 63 00 B8 62 6E B8 06 0D B8 63 00 B8 62 6E B8 06 0E B8 63 00 B8 62 6E B8 06 0F B8 63 00 B8 62 6E B8 06 10 ...etc, on and on. Basically, looking at this, it sends B8 (Midi CC to channel 9)... then 63 (Midi NRPN LSB)... then zero because the LSB is not used here... Then B8 again (Midi CC to channel 9)... then 62 (Midi NRPN MSB)... then 6E (the actual NRPN we're selecting, 6E hex, 110 decimal)... Then B8 again (Midi CC to channel 9)... then 06 (common vanilla data entry slider CC)... then whatever the current data entry slider value is as the knob turns. That's what we're seeing above. Here's the dilemma: I do understand the intention of Behringer in doing it this way. It makes it so you can turn more than one knob at once, and the receiving synth can still understand all of the data coming into it even though it's having more than one of its parameters adjusted at the same time. To explain, NRPN's allow you to just send the first two lines: B8 63 00 B8 62 6E only once, and then continuously adjust with a stream of the third line by itself. So you would use the six bytes you see above to select a parameter on the synth (such as filter cutoff), and then from there on any incoming data entry slider messages will adjust that parameter without you having to send the six NRPN bytes again. In other words, it remembers the parameter you last selected, and from there, Midi CC#6 can do all the work. But a knob controller wants to be able to let you twist knobs freely and adjust more than one parameter at a time, which would lead to things getting blended to together in the data stream, and it's probably just easier for Behringer to make a NRPN identify itself in full every time a parameter is adjusted just to keep confusion down for the receiving synth, and to encourage better realtime tweaking. However, I'm trying to do this on an Ensoniq ESQ-1, a synthesizer from the late 80's. It was actually one of the very first synthesizers to even support remote editing with NRPN's. As with any bleeding edge feature in anything, its implementation barely works. In the ESQ-1, all of this excessive selecting and reselecting the parameter is just making the data stream thicker and confusing the CPU. Ensoniq probably never imagined that people would someday want to be able to blend streams of multiple NRPN's on the same transmission. After all, that's why the Midi spec says you can just select once and edit with data entry slider CC's afterward -- because they figure you'll do that, rather than sending the full NRPN parameter select for every single byte-step of the parameter's value. We today in our world of knob controllers see the value of doing it, but they probably didn't. This causes the ESQ-1 to behave erratically and sometimes soft-reset itself. The data stream is just too thick, and it can't keep up with it, especially with all the parameter selecting and reselecting and re-re-selecting it's telling the ESQ-1 to do every six bytes or so. So the real question is, is there any way I can use the BC Manager software to program the BCR2000 to send a NRPN once, and then adjust with bare data entry CC#6 messages thereafter, even if this means I lose the ability to twist multiple knobs simultaneously? I realize that the ESQ-1 is one of those synths that won't realtime respond to patch editing anyway (you have to replay the key to hear the changes), but that's fine. I just want remote editing. Sorry about the length of the post. I tried to phrase all of this in a way that conveyed the information more briefly a couple of different times, and generally failed, so at least here you've got all the facts. Basically, I want to setup a knob on the BCR to act like the originally intended use of Midi NRPN's: Send NRPN LSB and MSB. Then send stream of data entry slider (CC#6) messages to adjust until finished with that parameter. Only send another NRPN when I want to twist another dial. Is there any way to do all that (phew!) on the BCR2000? -- + Brent A. Busby + "We've all heard that a million monkeys + Sr. UNIX Systems Admin + banging on a million typewriters will + University of Chicago + eventually reproduce the entire works of + James Franck Institute + Shakespeare. Now, thanks to the Internet, + Materials Research Ctr + we know this is not true." -Robert Wilensky