Two new Ruby libraries that add wrappers or ALSA and WinMM have allowed me to do this and since this is the biggest bc2000 community I figured I would show you guys.
Now, the simplest example would be:
bcr2000 = BControl::BCR2000.new
# We have to set this manually, no auto-detect here.. yet
bcr2000.id = 1
bcr2000.output_device { |d| d.name == "BCR2000" }
# Now the juicy stuff
bcr2000.open
bcr2000.select_preset(5)
bcr2000.close
Code is here: https://gist.github.com/917499
The example is for Windows, but if you wan to use in Linux then replace the line require 'midi-winmm' with require 'alsa-rawmidi'
When paired with MIDI Yoke or some other virtual MIDI device, you can script MIDI actions for your DAW.
For example, you could write a script that detects a specific note was played within your DAW and have it change presets for you.
Any significant updates will be posted here.