Oberheim Cyclone

Hi,

Working on an implementation for the Oberheim Cyclone. SYSEX isn’t documented anywhere so it’s been tricky. I can select parameters for editing, but to set the value, the Cyclone expects a note number. As strange as it sounds, playing a note will change the values of a selected parameter.

I’m hoping to:

  1. Create a LUA enabled button that does nothing more than send a note increment and another LUA enabled button that sends a note decrement.
  2. Create a LUA enabled encoder that sends notes, from 0 to whatever.

If anyone can get me started on how to approach this, I would greatly appreciate your help.

1 Like

I used to own a couple of these back in the day. Fantastic machine, frustrating UI.
At one point, I had sketched out a design for a larger enclosure with additional dedicated controls and larger display to make it easier to edit.

I had a bunch of documentation on the Cyclone and other Perf/X boxes; I’ll see if they’re still on some hard drive somewhere. Do you have any sysex/MIDI information you can share?

what I would try first is to use a CC7 fader, set the type to Virtual, set the MIDI range to 0 and 127 and then add a function in the “LUA Function” section of the control – maybe call it sendNote

Then, go into the LUA editor and try something like this:

function sendNote(valueObject, value)
   -- where the 1, 1 is the port and MIDI Channel; adjust as necessary
   midi.sendNoteOn(1, 1, value, 127)
   midi.sendNoteOff(1, 1, value, 127)
   -- note that if the Cyclone can handle Note On with velocity set to 0, you can use this line instead
   -- midi.sendNoteOn(1, 1, value, 0)
end

The increment/decrement buttons are actually a bit harder since MIDI notes are absolute values and you have to know “incrementing from what starting value” in order to send a new number

1 Like

yes, I wanted to propose exactly the same. Please give it a try and let us know if it works. if it does, we can talk about further steps.

Thanks @oldgearguy @martin

I’ll keep you posted on progress

The basics of the sysex are similar for each Perf/X box, so I was able to glean a bit from the other versions.

The basics of the Sysex command are:
F0
10
08
01
06 (edit)
Low, High
F7

Sorry for the delay @martin and @oldgearguy

Finally figured things out on my end. Here’s the function that works well. I’m in the process of competing the patch and will share once done.

This certainly is making the Cyclone a lot easier to understand and enjoy.

function sendControl(valueObject, value)
local message = valueObject:getMessage ()
local controlID = 0x00 + message:getParameterNumber ()
midi.sendSysex (PORT_1, {16,08,01,06, controlID})
midi.sendNoteOn(PORT_1, 1, value, 127)
midi.sendNoteOff(PORT_1, 1, value, 127)
end

Another revelation and more progress. This seems to have done the trick. Done with that note on/off nonsense.

[
“F0”,
“10”,
“08”,
“01”,
“06”,
“00”,
{
“type”: “value”,
“rules”: [
{
“parameterNumber”: 0,
“parameterBitPosition”: 0,
“byteBitPosition”: 0,
“bitWidth”: 4
}
]
},
{
“type”: “value”,
“rules”: [
{
“parameterNumber”: 0,
“parameterBitPosition”: 4,
“byteBitPosition”: 0,
“bitWidth”: 4
}
]
},
“F7”
]