Message
Re: Well, how about an old ensoniqs VFX and sysex control???
2008-05-24 by rpcfender
> Please take a look at the doc I uploaded.
> Tell me if it is possible.
Yes it is a very clear sysex implimentation
> Then, if you can get me started a little, I will press on ahead.
The sysex for changing as parameter starts with the header
$F0 $0F $05 $00 - This is always the start for the Ensonic VFX
next byte is the base Midi channel $00 to $0F
then the command number. For changing a parameter it is $01
So a header for parameter when on channel 1
$F0 $0F $05 $00 $00 $01
You need to determine the address offset in the parameter list.
Section 3.1.2 says
Command type (parameter $01)
Voice number 0 to 5
Parameter Page 0 to 31
Parameter slot 0 to 5
$F0 $0F $05 $00 $00 $01 $Voice $Page $Slot
The next bit is a bit confusing.
There are 2 8-bit data bytes, but Midi data bytes can only be 7-bit so the 2 bytes are broken up and sent as 7 bits
HHHHLLLL 8-bits of data becomes
0000HHHH
0000LLLL
The value appears to really be 16bit (2 8-bit bytes a high byte and a low byte)
So...
HHHHLLLL hhhhllll is the 16 bit number sent like this
0000HHHH
0000LLLL
0000hhhh
0000llll
The BCR can only cope with 14 bit values, but can handle them broken up like this.
You will need to send the following .tx message to the BCR
.tx $F0 $0F $05 $00 $00 $01 $Voice $Page $Slot val12.13 val8.11 val4.7 val0.3 $F7
of course the $Voice $Page $Slot have the correct numbers instead of the words.
Use section 5 Parameter Page and Slot Definition
As an example lets use the Filter#1 Cutoff as it is fairly straight forward (top of pp 12)
The Filter pages are 12 and 13, so for Filter#1 we use 12.
The Cutoff is in slot #1 and has a range of 0 to 127 - as this is less than 14bits we are OK.
In our example we will use voice# 1 which is number 0
Here is the .tx statement.
.tx $F0 $0F $05 $00 $00 $01 0 12 1 val12.13 val8.11 val4.7 val0.3 $F7
The numbers after val are the bit positions in a 14 bit number, val8.11 = bits 8 9 10 & 11
With the BCR you can mix hexadecimal and decimal numbers ($ for hexadecimal)
One of the particular problems you face (and I do with my Emu Morpheus) is that a few old synths used negative numbers
Page 2 slot 4 is the Filter#1 Modulation amount and the values go from -127 to 127.
For values less than 13 bit numbers there is a tricky way to get around this, but not if the values are 16bit as is your machine.
eg of negative range
3 = $03
2 = $02
1 = $01
0 = $00
-1= $FF
-2 = $FE
-3 = $FD
in 16 bit numbers
3 = $0003
2 = $0002
1 = $0001
0 = $0000
-1= $FFFF
-2 = $FFFE
-3 = $FFFD
which to us $FFFF etc. are greater than 14 bit numbers so for parameters like this you can only use the positive side of their range (0 to 127)
Now after saying all this, I don't have a VFX to test this on so I hope I am correct but you might need to experiment a little .
Get a copy of my editor (I'm sure you can do this in Mark's editor but I am not familiar enough with it) and copy (cut and paste) this code below into the script and send it to the BCR.
It just goes into the edit buffer so no presets will be changed unless you save it.
$rev R1
$preset
.init
$encoder 49
.showval on
.mode 1dot
.resolution 96 96 96 96
.default 100
.minmax 0 127
.tx $F0 $0F $05 $00 $00 $01 0 12 1 val12.13 val8.11 val4.7 val0.3 $F7
$end
Hope this helps. Let me know how you get on.
All the best
Royce
Attachments
- No local attachments were found for this message.