Hi everyone.
Long time user of the Yamaha CS1X and lately I decided to use the few user performance presets I' ve created and really like, along with other controllers, old synths and Bome Translator software as a sysex to midi cc translator for communication between the gear.
I only use it for few.
The note on-off and all the connections between the gear work well.
I have all the manuals of the CS 1X and apparently what I need to know is on pages 21 and 25 of the DATA LIST manual.
The mesages I want to transmit from CS1X are sysex messages and the format of the internal parameters changes is in section (3-6-3-4) CS1X NATIVE PARMETER CHANGE on page 21 and the data to fill the message are on MIDI DATA TABLE. I repeat I use it in the PERFORMANCE USER MODE.
For ex. the 'filter cutoff freq.' data are on section MIDI Parameter Change table ( Current Performance Layer).
The sysex will be an outgoing midi message (from the translator to the CS1X) and it will be controlled by an incoming cc 9 midi message (from the controller to the translator) on channel 2.
I have some questions for experienced CS1X or other Yamaha sysex midi equipment users.
A) I would like to know if in order to communicate between the cs1x and the translator with sysex I should activate the sysex dump switch-button. Is it a bulk dump or a single dump?
According to the tables (by combining both tables) in the CS1X DATA LIST, the sysex for the CS1X FILTER CUTOFF FREQ parameter should be:
F0 43 1n 4B 60 0L 11 xx F7
there is also a byte size nr 1 which would be 01 but the first table form doesn't include it.
L apparently is the layer nr according to the second table, and in my case is the first layer, so it's 1
The n is the device nr. (in my current case 1) and the second xx is for the value data and can stay xx for all values 9bome tranlsator prefers pp instead of xx).
B) In case I don't have to do any extra switching for sysex communication, it seems that I can't get the correct working format
Without being certain that I'm correct I would go for something like
F0 43 11 4B 60 01 11 xx F7
(device nr 1 , first layer, all values no byte size)
or if I had to include the byte size something like
F0 43 11 4B 60 01 11 xx 01 F7
(device nr 1 , first layer, all values, byte size 1)
but they don’t work.
F0 43 11 4B 60 01 11 01 xx F7 doesn’t work either.
Apparently the Sysex doesn’t include a midi channel, but I guess it communicates with the incoming’s cc channel.
C) I don't know what would the message be in case I wanted device nr 14 for example or device nr. all, instead of device nr1.
D) I don't know if I have to use the byte size nr (the data list says "For parameters with data size of 2 or 4, transmit the appropriate number of data bytes") or if the L - layer nr assumption is correct. Could you please advice if you are in the know?
And finally, hopefully I 'm reading the right data the correct way. Do I look at the correct tables for my case?
If you haven't got the answer could you please direct me to the best possible yamaha technical support email address for midi and older gear?
Thanks in advance
F0 43 11 4B 60 01 11 xx F7
Any reason why you didn't use as the 3rd byte 10 instead of 11? Typically devices are going to be setup as Device n=0 by default and you don't need to change that unless you have multiple CS1X devices on the same MIDI bus.
Also, I don't know about layers either, but the 6th byte (after 60 hex) is shown as "01" which indicates the second layer. The first layer would be indicated by 00 (L=0 is the first layer).
The key here is that at the MIDI byte level - values are "zero based" and often documentation is "one based". The same is true for MIDI channels. MIDI channel 1 is represented by a 0 (a control change aka CC message is encoded by the byte Bn where n=the MIDI channel and MIDI channel 1 (1 based) is represented as n=0 (zero based) in the MIDI byte. B0 is a CC to Channel 1, B1 is a CC to Channel 2, B2 is a CC to Channel 3 ... BF is a CC to Channel 16 ("F" in hex is 15 decimal).
What can be confusing is that sometimes documentation will document parameters as 0-based (what MIDI expects) and sometimes it won't and you need to subtract one from the documentation representation when translating to MIDI hex values. It's not consistent because things like MSB and LSB are usually expressed already 0-based whereas things like PC are often expressed as 1-based. There is some amount of experience required to sort this out properly without shotgunning values +1 or -1 randomly.
Current Yamaha Synthesizers: Montage Classic 7, Motif XF6, S90XS, MO6, EX5R
Very clear and thorough reply Jason. Thank you so much for your time.
Just to clarify something are sysex transmited only on channel 1?
Yes I'm sending (transmitting) to the CS1x.
Apparently the device nr. can be 0 and I can use all on the cs1x.
For the layer nr. since I'm using layer 1 I have to experiment between 1 and 0, but from another source it seems like 1 is the correct layer value for layer 1.
Instead of a legal hex value couldn't I use just xx since I want ANY value?
Can I find the IDENTITY REQUEST SysEx in the data list?
Kind regards
SysEx does not have a MIDI channel. Some MIDI data goes over one (or more) of the 16 available channels. Some do not designate any channel. System Exclusive does not designate a channel.
SysEx is transmitting on the MIDI bus. If a device connected "picks up" on SysEx messages that agree with its format (MIDI Implementation details) then the SysEx will apply. If the messages do not match, they are ignored.
The data list shows:
(3-6-1-2)IDENTITY REQUEST(Receive only)
F0H 7EH 0nH 06H 01H F7H
(n = Device No. However, the CS1x can receive without the device Number setting)(3-6-1-3)IDENTITY REPLY(Transmit only)
F0H 7EH 7FH 06H 02H 43H 00H 41H ddH ddH 00H 00H 00H vvH F7H
dd;Device Number Code CS1x:10 02
vv;TG Support Level CS1x:01(XG)
My mistake - 60 00 is the Performance Common area and base address 60 01 XX is the first layer. So layers are 1-based since 0 is reserved for the Performance Common.
It may be better to target base address 60 01 04, which is pitch in semitones. This will be easy to hear. The data following 04 should be 0x41 for +1 semitone or 0x3F for -1 semitone (and up/down from 0x40 which is no shift).
The parameter you picked may be influenced by other settings - so it'd be good to pick a setting that changes the sound in a more obvious manner.
Make sure you are in Performance mode and not Multi (Part) mode. The parameters assigned to 60 0L=1..4 XX are targeting the 4 Layers aka Voices of Performance mode. There's another entire memory region for targeting Multi-Mode Parts (which allows up to 16 Parts).
Either that, or use the right memory region for the mode that you are in.
Current Yamaha Synthesizers: Montage Classic 7, Motif XF6, S90XS, MO6, EX5R
Success. Jason Thank you so much
By just using the format F043104B ..........F7 I managed to set up the correct parameter to the fader I wanted with a value of xx (pp in the case of bome's translator). And the address for the filter cut off freq is the one I mentioned with layer 01.
ps. Had a routing problem with trans;lator. Now all sorted.
Thanks for the great help.