Bc2000 (for the BCF2000 & BCR2000) group photo

Yahoo Groups archive

Bc2000 (for the BCF2000 & BCR2000)

Index last updated: 2026-04-28 23:16 UTC

Thread

hello bc2000 people

hello bc2000 people

2016-05-05 by Jason Proctor

hi there

i don't have a BCx2000, but i'm thinking of getting one and hacking its firmware as an alternative to making a hardware editor from scratch.

the objective is to make an editor for the Prophet VS synth, which uses little-endian NRPNs for its parameter control messages. i suspect the VS was developed in the middle of the NRPN standards effort, as regular NRPNs are big-endian and incompatible.

so my question to the firmware hackers on the list is... what is the state of the art? i see checking out the downloads from this page --


-- that we can currently send MIDI, scan switches, and set LED states. does anyone know how to scan a rotary encoder? :-)

looking forward to some fruitful hacking,
Jason


Re: hello bc2000 people

2016-05-05 by sghookings@...

Hi Jason.
The arm chip itself can handle the sigend type we need. I gave up lobbying Behringer and instead put a Arduino Mega as a man in the middle to do all the transforms. Mega wad necessary because it has 4 UARTs - use 1 2 3 not 0 as this can interfere with the flashing process.

This allowed me to midi merge from an 88 keyboard and in my case AKAI Miniak, to read in BCR data and send updates round the loop so that BCR and Miniak were in sync.

If you didn't care about that then perhaps 2 cheap Arduinos looking for NRPNs and transforming the over/underflow could do the trick

Lot easier than hacking a firmware (for me at least).

Regards
Steve Hookings

Re: [bc2000] Re: hello bc2000 people

2016-05-05 by Jason Proctor

hi Steve

thanks for the response.

indeed, i could knock together an NRPN converter on an Arduino (or WebMIDI, Swing, etc) in the blink of an eye, but i like the single-box approach. also i get the feeling that with a few additions to the current firmware hack, writing a native version wouldn't take very long at all.

maybe i'll do the converter while i investigate the native solution...

and btw, on UART zero, if you stick a switch in there that disconnects the MIDI optocoupler (it puts 5v on the line) you can use that one too. regular Ards only have one hardware UART and the switch is necessary in that case.

best regards
Jason






Show quoted textHide quoted text
On Thu, May 5, 2016 at 6:45 AM, sghookings@... [bc2000] <bc2000@yahoogroups.com> wrote:

Hi Jason.
The arm chip itself can handle the sigend type we need. I gave up lobbying Behringer and instead put a Arduino Mega as a man in the middle to do all the transforms. Mega wad necessary because it has 4 UARTs - use 1 2 3 not 0 as this can interfere with the flashing process.

This allowed me to midi merge from an 88 keyboard and in my case AKAI Miniak, to read in BCR data and send updates round the loop so that BCR and Miniak were in sync.

If you didn't care about that then perhaps 2 cheap Arduinos looking for NRPNs and transforming the over/underflow could do the trick

Lot easier than hacking a firmware (for me at least).

Regards
Steve Hookings


Re: hello bc2000 people

2016-05-06 by john.johns@...

Steve,

Do you mind sharing with me how you are using the other UARTS? I am using Arduino - man in the middle - but going to completely unrelated, non-MIDI devices. Any thoughts or tips are appreciated.

Thanks,
John

Re: hello bc2000 people

2016-05-06 by sghookings@...

1 + 2 merge IN

3 reads the BCR out.

1 also sends out to a THRU box (wired round system)
2 sends out to BCR

So flow is merge (and transform) from master and Miniak.
Modify Miniak signed to unsigned.
Send on to BCR - it sees signed and can update state - the chain is broken (so no midi loops).

Alternatively, BCR knob send signed NRPN.
Arduino reads and changes to signed.
These are then sent to Miniak (via Thru box).
It therefore updates synth to reflect BCR value.

The arduino is also used to zone the master keyboard (up to 8 splits or layers), arpegiator (held or latched) and a 16 step sequencer.

I wrote the midi library myself - since then I see there is a decent lib.
I did have some issues with the buffering (fixed in end - only accept sysex from Miniak - read in the 454 program send bytes, update internal state).
Also I had to use the prog mem to store all the Miniak display settings.

Regards
Steve H

Re: [bc2000] Re: hello bc2000 people

2016-05-07 by Jason Proctor

hi John

not sure whether Steve's response answered your question. if you use the Arduino MIDI library, then you can configure multiple instances of the library to talk to the different UARTs very easily. underneath the MID library is just configuring and using the Serial instances connecte to the UARTs - Serial, Serial1, Serial2, etc.


hth
J

Show quoted textHide quoted text
On Thu, May 5, 2016 at 7:55 PM, john.johns@... [bc2000] <bc2000@yahoogroups.com> wrote:

Steve,


Do you mind sharing with me how you are using the other UARTS? I am using Arduino - man in the middle - but going to completely unrelated, non-MIDI devices. Any thoughts or tips are appreciated.

Thanks,
John


Re: [bc2000] Re: hello bc2000 people

2016-05-07 by Jason Proctor

Steve - is there a multiple MIDI shield for the Arduino Mega, or did you make your own?

at the moment my plan is to make a box which has a Mega in it, which has a dedicated MIDI in/out pair for the VS and another to talk to the outside world. the sketch will be configurable to convert CCs or big-endian NRPNs to the VS's odd NRPN format. in addition, the box will have joysticks and pots to edit the mix envelope, feeding the plethora of ADCs on the Mega.

a stretch goal will be having the Mega request patch info from the VS so the BCR's encoders can be initialised to the correct value.




Show quoted textHide quoted text
On Sat, May 7, 2016 at 10:05 AM, Jason Proctor <jason@...> wrote:
hi John

not sure whether Steve's response answered your question. if you use the Arduino MIDI library, then you can configure multiple instances of the library to talk to the different UARTs very easily. underneath the MID library is just configuring and using the Serial instances connecte to the UARTs - Serial, Serial1, Serial2, etc.


hth
J


On Thu, May 5, 2016 at 7:55 PM, john.johns@... [bc2000] <bc2000@yahoogroups.com> wrote:

Steve,


Do you mind sharing with me how you are using the other UARTS? I am using Arduino - man in the middle - but going to completely unrelated, non-MIDI devices. Any thoughts or tips are appreciated.

Thanks,
John



Re: [bc2000] Re: hello bc2000 people

2016-05-08 by sghookings@...

I did this a few years ago. Everything was homemade. If I did it again I might try the Midi library but since I was really into Midi in the early 80s and I was trying to recapture my youth I figured it would be fun to play with some 8 bit processors again.

I probably have the sketches lying around.
I used standard veroboard ... Arduino headers have a strange gap.

I had LCD for feedback of display.
Keypad (and Midi) for data entry

A series of LEDs to display sequencer clock

I was looking to provide most of the Emulator II features also for my ESi - ARP, zoning etc but only 16 note sequencer.

I never found the Arduino to be as fast as I wanted.
But in fairness I figure that even fastLCD library was a limiting factor.
I figure I had too many interrupts going on - even though I keep other polling loops short, plus the 32k got used up quite quickly - the prog mem to store display strings was an overhead too.

Ctrlr came along and I really quite liked this solution too.

Regards
Steve H


---In bc2000@yahoogroups.com, <jason@...> wrote :

Steve - is there a multiple MIDI shield for the Arduino Mega, or did you make your own?

at the moment my plan is to make a box which has a Mega in it, which has a dedicated MIDI in/out pair for the VS and another to talk to the outside world. the sketch will be configurable to convert CCs or big-endian NRPNs to the VS's odd NRPN format. in addition, the box will have joysticks and pots to edit the mix envelope, feeding the plethora of ADCs on the Mega.

a stretch goal will be having the Mega request patch info from the VS so the BCR's encoders can be initialised to the correct value.




Show quoted textHide quoted text
On Sat, May 7, 2016 at 10:05 AM, Jason Proctor <jason@...> wrote:
hi John

not sure whether Steve's response answered your question. if you use the Arduino MIDI library, then you can configure multiple instances of the library to talk to the different UARTs very easily. underneath the MID library is just configuring and using the Serial instances connecte to the UARTs - Serial, Serial1, Serial2, etc.


hth
J


On Thu, May 5, 2016 at 7:55 PM, john.johns@... [bc2000] <bc2000@yahoogroups.com> wrote:

Steve,


Do you mind sharing with me how you are using the other UARTS? I am using Arduino - man in the middle - but going to completely unrelated, non-MIDI devices. Any thoughts or tips are appreciated.

Thanks,
John



Re: [bc2000] Re: hello bc2000 people

2016-05-10 by Jason Proctor

Steve, thanks for the info. i will likely do something similar.

as for the Arduino header, i think it's off by half to stop you putting it on backwards! :-S


Show quoted textHide quoted text
On Sun, May 8, 2016 at 3:46 AM, sghookings@... [bc2000] <bc2000@yahoogroups.com> wrote:

I did this a few years ago. Everything was homemade. If I did it again I might try the Midi library but since I was really into Midi in the early 80s and I was trying to recapture my youth I figured it would be fun to play with some 8 bit processors again.


I probably have the sketches lying around.
I used standard veroboard ... Arduino headers have a strange gap.

I had LCD for feedback of display.
Keypad (and Midi) for data entry

A series of LEDs to display sequencer clock

I was looking to provide most of the Emulator II features also for my ESi - ARP, zoning etc but only 16 note sequencer.

I never found the Arduino to be as fast as I wanted.
But in fairness I figure that even fastLCD library was a limiting factor.
I figure I had too many interrupts going on - even though I keep other polling loops short, plus the 32k got used up quite quickly - the prog mem to store display strings was an overhead too.

Ctrlr came along and I really quite liked this solution too.

Regards
Steve H


---In bc2000@yahoogroups.com, wrote :

Steve - is there a multiple MIDI shield for the Arduino Mega, or did you make your own?

at the moment my plan is to make a box which has a Mega in it, which has a dedicated MIDI in/out pair for the VS and another to talk to the outside world. the sketch will be configurable to convert CCs or big-endian NRPNs to the VS's odd NRPN format. in addition, the box will have joysticks and pots to edit the mix envelope, feeding the plethora of ADCs on the Mega.

a stretch goal will be having the Mega request patch info from the VS so the BCR's encoders can be initialised to the correct value.





On Sat, May 7, 2016 at 10:05 AM, Jason Proctor <jason@...> wrote:
hi John

not sure whether Steve's response answered your question. if you use the Arduino MIDI library, then you can configure multiple instances of the library to talk to the different UARTs very easily. underneath the MID library is just configuring and using the Serial instances connecte to the UARTs - Serial, Serial1, Serial2, etc.


hth
J


On Thu, May 5, 2016 at 7:55 PM, john.johns@... [bc2000] <bc2000@yahoogroups.com> wrote:

Steve,


Do you mind sharing with me how you are using the other UARTS? I am using Arduino - man in the middle - but going to completely unrelated, non-MIDI devices. Any thoughts or tips are appreciated.

Thanks,
John




Re: [bc2000] Re: hello bc2000 people

2016-05-11 by john.johns@...

Thanks to all. Right now my project is evolving into converting the MIDI stream to an Ethernet stream. The Ethernet device needs to be checked or pinged twice a second to maintain a connection. The way we have the loops set up seems to create an occasional data corruption, especially if and encoder is turned fast. I am using the an LCD shield with jumpers on the MEGA. I would not have made it this far without your help.

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.