Resetting Preset to Default Values BCR2000

10 posts / 0 new
Last post
jtsteph
jtsteph's picture
Resetting Preset to Default Values BCR2000

Hello,

I am new to the B-Control and Mountain Utilities. I have been digging in and am quite excited to put the BCR2000 into use with presets created in B-Control. I am using it to control Isadora, a video performance programming environment.

I have two questions:

- Is it possible to use BC Manager to set default CC values and toggle states for each controller and button?

- Is there a midi command that can be sent to the BCR2000 that will reset the "recall values" of all buttons and controllers to their default values on a given preset?

In the video work I am doing, I will be using the BCR2000 to control video parameters on 4 different video tracks, each assigned to a preset on the BCR2000. The controller is set up with the same CC and Note values on 4 different presets, each with a separate channel (1-4). I would like to be able to reset a given preset to default CC values and toggle states or reset all four presets to default values using a keypress on the BCR2000 or another controller.

Any assistance would be appreciated.

Thank-you!

 

jtsteph
jtsteph's picture

I have figured out the default-value portion of my question above (set the value in the general tab of the edit panel). I am wondering about my second question now - is it possible to either send a single midi message to the BCR2000 or use a button on the BCR2000 to reset the CC and Toggle States to the defaults. The only way I am able to reset them at this point is to turn the BCR2000 off and back on - not a useful solution.

Thanks,

- J

Mark van den Berg
Mark van den Berg's picture

As you mentioned, the buttons and encoders of all 32 presets are reset to their defaults upon startup of the BCR.
But (as far as I know) the BCR doesn't have a "reset to default" command for buttons/encoders.

If you want to reset a single encoder to its default, you can simply assign this default to a button.
For the push encoders (the BCR's top row), you would typically use the corresponding "button" under the same push encoder, in the same encoder group (1-4).
But of course you're talking about restoring complete "scenes" here.

One thing you might try is assign the desired sequence of Control Change and/or Note On messages to a button as "custom output" (as BC Manager calls it); if I remember correctly, the maximum number of bytes you can assign to a button in this way is 125.
The BCR's "snapshot" command helps to create the required sequence of messages: the snapshot command outputs all the current button and encoder values of the selected preset. (See BC MIDI Implementation.pdf, section 23 (in particular 23.4) for in-depth discussion.)
You can perform this snapshot command from the BCR itself: hold EDIT, then press "< PRESET". Alternatively, you can trigger a snapshot via "Receive snapshot" in the MIDI pull-down menu of BC Manager's "B-Controls" window; see section 10 of the BC Manager manual for discussion.
In either case you should capture ("record") the sent messages in BC Manager's "MIDI input messages" window, then copy these MIDI messages to BC Manager's "MIDI message clipboard", and finally paste the messages into the button of your choice via the fourth toolbutton ("Paste MIDI message clipboard") on the button dialog's "custom output" tab.

However, the big problem with MIDI messages defined via "custom output" is that the BCR itself won't update any related buttons/encoders accordingly, at least not internally via "value synchronization", which does happen for "standard output" definitions (cf. section 14.9 of BC MIDI Implementation.pdf).
I think it should work to loop back the "custom output" sequence to the BCR itself: shouldn't the buttons and encoders update accordingly then? I can't remember whether I've ever tried this; but even if it does, it's very cumbersome of course.

So instead of putting a snapshot under a BCR button, it may be simpler to send a snapshot to the BCR from a "third party" application.
If you're interested, I could try to come up with a "Snapshot manager" window in BC Manager: this would allow you to record a snapshot and play it back by pressing a button. Given BC Manager's existing "infrastructure", this shouldn't be too difficult, though still a bit of work. (It might even be possible to generate a sequence (re)setting the defined preset's defaults directly - though this could be a bit more tricky.)

   Mark.

jtsteph
jtsteph's picture

Hi, Mark.

Thanks for taking the time to write up such a detailed and thoughtful response.

it may be simpler to send a snapshot to the BCR from a "third party" application.

I ended up doing something like this. It's crude, but seems to be functioning. I used the "output as table" for the buttons and encoders and created a two column csv file of the controller number and default value. I load this into my programing environement (TroikaTronix Isadora) as an array and then run though it - sending these values back to the BCR2000. I found the sysex code to change presets so I am able to do a total reset of the BCR2000 to default values. It takes about 6 seconds to run through all the reset values for 4 presets.

If you're interested, I could try to come up with a "Snapshot manager" window in BC Manager: this would allow you to record a snapshot and play it back by pressing a button.

This is an interesting idea. Would the resulting "snapshot" be a long Sysex string? If so, this would be a far more elegant solution than my "cc value array playback" procedure.

 

Thanks again.

- Justin

Mark van den Berg
Mark van den Berg's picture

I ended up doing something like this. It's crude, but seems to be functioning. I used the "output as table" for the buttons and encoders and created a two column csv file of the controller number and default value.

Hmm yes, this doesn't seem "optimal", having to resort to csv files...

I found the sysex code to change presets so I am able to do a total reset of the BCR2000 to default values. It takes about 6 seconds to run through all the reset values for 4 presets.

So you are sending full BCR2000 preset definitions to the BCR?
Can't you simply send Control Change messages containing the proper defaults?

This is an interesting idea.

I'll see if I can come up with a basic snapshot manager in BC Manager in a day or two.
Which operating system are you on: macOS or Windows?

jtsteph
jtsteph's picture

I should refine my question - Would the resulting "snapshot" be a long Sysex string or .mid file? Either of these would easy to trigger in Isadora.

Mark van den Berg
Mark van den Berg's picture

Quoting from BC MIDI Implementation.pdf, section 23.4:

The Snapshot Send function makes the BC send any standard and/or custom output defined for the elements of the temporary preset.

So a snapshot (as output by a BCF/R2000) is a sequence of MIDI messages, the types of which totally depend on the preset in hand.
If the preset only contains elements defining Control Change messages, the snapshot will simply be a sequence of Control Change messages.
But of course if certain elements define SysEx messages (via "custom output"), these will also be included in the snapshot. (Note that formally speaking this rules out a snapshot being represented as "a long Sysex string".)

It totally depends on the recording application how you can process the snapshot's messages.
A standard DAW should indeed allow you to put the messages into a MIDI file. (However, note that a MIDI file adds time stamps to the MIDI messages. Strictly speaking these time stamps aren't part of the snapshot as such, and if you're not careful (concerning tempo settings etc.), these time stamps might come back to bite you when you play the file back.)
By contrast, as I described before, in BC Manager you can process the snapshot "internally", by copy-pasting them to a button's "custom output".

jtsteph
jtsteph's picture

Hi, Mark.

Thanks again. As you can likely tell, I am not a MIDI expert, so please forgive my rudimentary understanding. I am using these controllers for live video manipulations.

BC Manager you can process the snapshot "internally", by copy-pasting them to a button's "custom output".

 I assume this would send the midi out to my system and that I would then feed it back to BCR2000?

In any event, I would love to try this. It is a more elegant solution than reading through a CSV file. I am windows based here.

Best,

- Justin

Mark van den Berg
Mark van den Berg's picture

I assume this would send the midi out to my system and that I would then feed it back to BCR2000?

The particular procedure I was talking about here works as follows:

  1. You design a preset and upload it to the BCR.
  2. Optional: you push buttons and twist encoders on the BCR to alter their default values.
  3. In BC Manager's "MIDI input messages" window you press Record.
  4. You make the BCR send the current button/encoder values to BC Manager, either by pressing EDIT + "< PRESET" on the BCR or by executing MIDI -> "Receive snapshot" in BC Manager's B-Controls window. Any messages in the snapsot should appear in the "MIDI input messages" window.
  5. After transmission of the snapshot has ended: in the "MIDI input messages" window, you execute Edit -> "Copy to MIDI message clipboard".
  6. On the "Custom output" tab of the dialog box of a button, you execute "Paste MIDI message clipboard". Thus, the messages constituting the snapshot become part of the "custom output" definition of the button.
  7. Send the button definition to the BCR.
  8. Press the button on the BCR to send its messages to a receiving device/application.

Note that the button to which you assign the snapshot doesn't have to be in the original preset.
And related to this: since a custom output definition doesn't trigger value synchronization on the BCR, pressing the button containing the snapshot messages doesn't update the "original" buttons/encoders on the BCR itself.
So this procedure is intended for building a collection of buttons (e.g. in a single preset), each button triggering a full "scene" (i.e. set of parameters) on a receiving device/application.
But this isn't what you are after. (Perhaps unless you can somehow reroute the custom output of the button to the BCR itself.)

What you want, is to record a snapshot containing a preset's defaults, and then send this snapshot back to the BCR (and to Isadora as well?).
In fact, if I understand you correctly, you want to reset four presets in one go: this makes things more complicated, because the BCR must be temporarily switched to each of these presets in turn. (See section 19.3 of BC MIDI Implementation.pdf for the three ways of selecting a preset on a BCR via MIDI.)
I'm still working on a snapshot manager in BC Manager that automates this whole process as much as possible, but my original estimate of "a day or two" was a bit optimistic, so don't hold your breath...

Mark.

jtsteph
jtsteph's picture

Hi, Mark.

I am back at this today and have sorted out a workflow. 

- Use the Midi Input Messages window to record the snapshot output of the BCR2000:  EDIT + "< PRESET"

- Save the snapshot as a midi file with the all times zero option

- Use isadora's "play midi file" to play it back to the BCR at the same time as I reset the values in Isadora.

- Use a counting loop to work through resetting all the presets  (I am using 8 at the moment)

I have done some tests and everything seems to be working well. Thanks for pointing me in the right direction. This workflow is easy enough to be very useful.

Best,

- Justin