BCR2000 ignores CCs to set knobs even with .deadtime 0

8 posts / 0 new
Last post
Pistor's picture
BCR2000 ignores CCs to set knobs even with .deadtime 0

In my software that I use to talk to the BCR2000 I specify a set of BCR knobs that are linked to parameters of the software, so that when I turn the knobs, the parameters are updated and vice versa. This works but the following doesn't:

When a knob is not assigned to a parameter, I want to set it to 0 on the BCR. So that it's essentially "locked" to 0 (as visual feedback that this knob does nothing). 

So whenever I receive a CC msg with a CC that's not assigned to a parameter, I send a CC msg back with the same CC number but value 0.

But the BCR2000 doesn't set the encoder to 0, it seems to ignore the message.

My software sends the feedback message immediately upon receiving the CC message, so I set the .deadtime to 0.

But it's still not working :/

Do you have any idea why?


Mark van den Berg
Mark van den Berg's picture

How have you set up your encoders?
An element (e.g. encoder) on a B-Control only responds according to its "standard output" definition (".easypar" in BCL), So if an element only has a "custom output" definition (".tx"), the element doesn't respond.

Pistor's picture

I only use easypar, basically all my encoders look like this:

$encoder 1
  .easypar CC 1 0 0 127 absolute
  .showvalue on
  .mode 1dot
  .resolution 144 144 144 144
  .default 0

Maybe I should be more clear: I _can_ set all encoders (which I do e.g. at program start) but when I try to set them immediately after receiving a CC message from them, the BCR ignores my midi message that I sent to it to set the encoder value. So to me it seems like even with .deadtime 0 the actual deadtime is not 0 but some higher value. Do you think that's possible? Or have you tested it successfully with immediate feedback before and it worked?
Btw, setting a Button to On (vel 127) immediately after it was released (receiving a note on with vel 0) works! But it says in the docs, the .deadtime only affects faders (BCF) and encoders. So this is another factor that makes me think that the real effective deadtime is not 0.

What do you think?

Btw, this is my complete global setup:

  .midimode U-1
  .startup last
  .footsw auto
  .rxch 1
  .txinterval 2
  .deadtime 0

Mark van den Berg
Mark van den Berg's picture

I've emulated your setup by tweaking BC Manager's "MIDI controllers" window: when the window receives an encoder's CC message, the window immediately sends a corresponding CC message with velocity 0 back to the BCR.
The result: when DeadTime is 0, the encoder always accepts the 0 message:

  • The LED goes to the "0" position.
  • The BCR's display doesn't show any received value, but this is normal behavior. (So the "visual feedback" you're striving for is impossible in this respect. All you'll ever get is the LED returning to 0.)
  • The ultimate proof that the encoder has accepted 0: when I perform a Snapshot Send from the BCR afterwards (by holding EDIT, then pressing "PRESET <"), the BCR outputs a CC message with velocity 0. (Make sure you've disabled all the other BCR elements in preset 0, or their values will also be sent!)

So if your BCR does not return 0 when you perform a Snapshot Send afterwards, there's something wrong with your software routine, or your routine is quicker than mine and indeed too quick for the BCR, even with DeadTime 0.
Are you sure that the BCR's DeadTime is actually 0? You can check this on the BCR itself: enter Global Setup mode ("EG") by holding EDIT and pressing STORE, then press push encoder 7. (Of course you leave Global Setup mode by pressing EXIT.)
And does it make a difference if you build in a delay of a few milliseconds?

Hope this helps,

Pistor's picture

I didn't mean that I wanted the BCR to display the value that my program sends, by "visual feedback" I mean the LEDs on the knob going to 0 like a locked door.

Hmm, I think my actual .deadtime on the BCR was 100, (checked in BCL Editor). Then I sent a ".deadtime 0" manually from the BCL Editor and what I wanted to do was working (setting it to 0 if the knob isn't mapped to a param).

But in my generated .bcl file that I imported, then copied to preset 1, then sent to the BCR, it said ".deadtime 0", does the BC Manager not send the $global part of the bcl file? Only the $preset part? Do I have to load my .bcl file into the BCL Editor if I want to send the whole .bcl file?

Btw, what is the difference between "MIDI->Receive Global Setup" and "Load->Global Setup" in the BCL Editor?

Mark van den Berg
Mark van den Berg's picture

There are several ways to send a global setup from BC Manager to a B-Control:

  • Preferred method: "Global setups" window: MIDI -> Send
  • B-Controls window: MIDI -> "Send all data" (of course this also sends all presets)
  • B-Controls window: MIDI -> "Send modified data" (of course this only works if the global setup has been changed, as indicated by the asterisk in the "Global setups" window; and of course this also sends any changed presets)
  • "BCL editor" window: write a "$global" section, then run MIDI -> Send

Sending one or more presets from the Presets window to the B-Control does not send the global setup.

In the BCL editor window:

  • MIDI -> "Receive global setup" makes the B-Control send its global setup to BC Manager; the received data will be shown in the "Global setups" window, but will not appear as text in the BCL Editor. So this operation is identical to MIDI -> Receive in the "Global setups" window. See section 20 of the BC Manager manual for further explanation.
  • Load -> "Global setup" retrieves the global setup being maintained by BC Manager (as shown in the "Global setups" window) into the BCL editor window as a BCL block.

Hope this helps,

Pistor's picture

Thanks, that clears it up. So the fastest way to send my whole .bcl file including $global section is to open it in the BCL Editor and send it from there, right?

(I only use one preset (so one $global and one $preset section), and I disabled all the special keys on the BCR and use them as normal buttons, I emulate virtual pages / modes in software).


Btw, is it true that the BCR2000 is not being manufactured anymore? It seems very hard to get in Europe right now. I wanted to get another one in case my current one breaks (I bought it 2nd hand and the case was already broken near the display), but the online shops don't have it anymore, and on ebay I only see it listed in the US (which would incur additional 19% VAT). Any idea where the BCR is still being sold (in Europe)?

I did a lot of online research about available midi controllers before I bought the BCR, and I couldn't find anything that is as powerful. The most important thing for me was the ability to set the encoder values from my software through midi feedback (so that I can emulate virtual pages/modes), which most midi controllers don't have. And the large number of knobs.

Mark van den Berg
Mark van den Berg's picture

So the fastest way to send my whole .bcl file including $global section is to open it in the BCL Editor and send it from there, right?

The BCL editor window is primarily a hacking tool, so I usually discourage people from using it.
One big danger is that it can create mismatches between the state of the B-Control and BC Manager - as you've discovered concerning the global setup area.

So in principle it would be safer to use File -> Open or Import from the B-Controls window.
(Note that these operations only overwrite those areas in BC Manager that are actually defined in the file (except that preset 0 always gets overwritten if the file contains a memory preset). So if your file only contains the global setup and preset 0, only those will be overwritten.)
But of course you would then have to perform two send operations to the BCR: one for the global setup and one for preset 0. (Unless you can get away with "Send all data" or "Send modified data" from the B-Controls window.)
So for you the simplest method may indeed be Open + Send from the BCL editor window.

is it true that the BCR2000 is not being manufactured anymore?

This is new to me, but I've just checked one of the biggest online shops here in the Netherlands, and they don't have it in stock any more either, so you may well be right.