Hello, I have a BCR-2000 and a Yamaha FB-01 and am wondering if anyone has a BCR template for it? I know Royce has posted on here about his template for the TQ-5 so maybe this can be extended to the FB-01?
Thanks for the info Royce. I've been doing some research into the FB-01 Sysex format and indeed it is very different from the other Yamaha 4 op FM synths. The main difference is that the FB-01 Sysex format often represents multiple synth parameters on 1 Sysex string, e.g. Algorithm and Feedback are represented in the same Sysex string.
So for example, if I were to map Algorithm to a BCR knob, in order to generate the right Sysex string when I turn the knob, I'd also have to know the current value of Feedback (which may be on another knob). This sounds a bit more complex than what the BCR Manager "model definition file" format can handle. I guess I'd have to write some code/script to check the value of another knob when figuring out what Sysex string to send. Does this sound like something I could do with BCL?
Hi
Hi
sorry about being so slow to respond. It's been busy.
From what I can see from the sysex specification for the FB-01 should be fairly straight forward to edit using sysex.
From a cursory glance at the manual it doesn't look like it is the same as most other 4-op FM synths like the TQ5, so my editor/BCR patch won't work..
If you are new to sysex perhaps you can get a PC editor like...
https://www.youtube.com/watch?v=tlIhNTxXrN0
or
https://www.youtube.com/watch?v=CJj8YHX54XM
Perhaps the editor program will respond to CC messages like a VST synth.
There is another editor, Sound Quest, and you can set up CC messages to control the parameters.
If nothing else you can use either editor to trap the sysex messages using MidiOx so you see what it is and can directly program the BCR
If you have to write a BCR template yourself....
Grab Mark's editor and the manual from Yamaha Japan
From page 48 of the FB-01 manual
2 byte parameter change by Midi channel
$F0 $43 $1x $15 is the header where x is the instrument midi channel
2 byte parameter change by Midi channel
$F0 $43 $75 $0x $18 + i is the header where x is the midi channel and instrument number (0 to 7 - really the part number)
1 byte parameter change by Midi channel
$F0 $43 $75 $0x $10 $pp $dd
x is the instrument midi channel
$pp is the parameter number from the list
If you go this way post back here and I'll try to help.
All the best
Royce
Thanks for the info Royce.
Thanks for the info Royce. I've been doing some research into the FB-01 Sysex format and indeed it is very different from the other Yamaha 4 op FM synths. The main difference is that the FB-01 Sysex format often represents multiple synth parameters on 1 Sysex string, e.g. Algorithm and Feedback are represented in the same Sysex string.
So for example, if I were to map Algorithm to a BCR knob, in order to generate the right Sysex string when I turn the knob, I'd also have to know the current value of Feedback (which may be on another knob). This sounds a bit more complex than what the BCR Manager "model definition file" format can handle. I guess I'd have to write some code/script to check the value of another knob when figuring out what Sysex string to send. Does this sound like something I could do with BCL?
You can... sort of.
You can... sort of.
I need to use BCL (Behringer Control Language - Mark's BC manual explains all)
The BC responds to value feedback, but only if you program the control with the easy method, that is easypar
$encoder 1
.easypar CC 01 117 0 127 absolute
If a 117 CC on channel 1 comes into the BC, encoder 1's value will change to that value comming in
If you also have
$button 1
.easypar CC 01 117 127 0 increment 1 ;Note max and min bytes are swapped for increment
encoder 1 and button 1 will be in lock step ie turn encoder 1 and button 1's value will change as well. And vice versa.
You are able to add a .tx statement to an easypar and the BC will transmit both the easypar value and the tx
$encoder 1
.easypar CC 01 117 0 127 absolute
.tx $F0 $42 $10 00 00 val $F7 ; made up sysex message
$button 1
.easypar CC 01 117 127 0 increment 1
.tx $F0 $42 $10 00 00 val $F7 ; made up sysex message
Turning encoder 1 or pressing button 1 will output a CC117 on channel 1 and a sysex message.
Example... you have a packed parameter byte of bit5 and 6 for Osc 1 Octave and bits 0 to 4 are Osc 1 coarse tuning
value = 0oot tttt
$encoder 1 ; Coarse tuning
.easypar CC 01 117 0 127 absolute
.tx $F0 $42 $10 00 00 val $F7 ; made up sysex message
$button 1 ; Octave
.easypar CC 01 117 127 0 increment $20 ; steping by $20 counts through the top bits
.tx $F0 $42 $10 00 00 val $F7 ; made up sysex message
The big problem is range.
Although the Coarse tuning wil always be OK, as you go past it's max you will increment the Octave.
Similarly when you go below 0 the Octave will be decremented.
Also there are problems if the range of the value is less than the bits allowed.
For example if the Coarse tuning control had a range of 0 to 24, you still need 5 bits, but 5 bits has the range 0 to 31
The result is not predictable. I just give it a shot and see what happens.
All the best
Royce