I just want to know how to get the initial state of Yamaha refaceCS controls using CoreMidi. I have gone through video of Yamaha refaceCS web environment where initial state of keyboard populates on sync button click. Is there specific command used to get the initial states of all controls. At present, I am getting value of control on its movement.
If you haven't done that already you should download the datalist manual from here.
You can send a sysex message (BULK REQUEST) to the CS, and it will return a message containing all current parameter values. (BULK DUMP)
It's also possible to send a message that will ask for the setting of one parameter remotely, without the need to move a slider.
It's described in the datalist manual. I used the manual to develop my Reface DX/CS/CP/YC editor panels for Ctrlr.
For example:
To request the current voice parameter data from your Reface CS you need to use this SysEx request:
[code type=markup]
F0 43 2n 7F 1C 03 0E 0F 00 F7
[/code] (hexadecimal values, where n is a midichannel value between 0 and F)
The format of the returned SysEx dump with all values is described in detail in the datalist manual.
Thanks Martin. As you mentioned, I tried following code snippet
var method:MIDICompletionProc = MyMIDIReadDumpBlock //global function
let buffer:UnsafePointer = UnsafePointer([0xF0,0x43,0x20,0x7F,0x1C,0x03,0x0E,0x0F,0x00,0xF7])
var sendRequest = MIDISysexSendRequest(destination: self.virtualDestinationEndpointRef,
data: buffer,
bytesToSend: 10,
complete: false,
reserved: (0, 0, 0),
completionProc: method,
completionRefCon: UnsafeMutableRawPointer(&method))
MIDISendSysex(&sendRequest);
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
In this case my callback completionProc called but MidiReadBlock not invoked. Because of which I am not able to get the message event. There may be error in buffer values or other parameters.
Sorry, I'm afraid I don't know anything about coremidi programming.
Hi Martin,
I have following queries
Q1: If I want to get the state of control "LFO ASSIGN", can I use PARAMETER REQUEST with following format
[0xF0,0x43,0x30,0x7F,0x1C,0x03,0x30,0x00,0x02,0xF7]
The basic difference I found in Parameter Request and Bulk Dump is the third parameter 3n (Parameter), 2n (Dump Request).
Q2: What value passed for "n". I passed 0,1,2. Is there any way to get the channel number.
Q1: If I want to get the state of control "LFO ASSIGN", can I use PARAMETER REQUEST with following format
[0xF0,0x43,0x30,0x7F,0x1C,0x03,0x30,0x00,0x02,0xF7]
Looks OK to me on paper. I cannot test, since I don't own a Reface CS though
The basic difference I found in Parameter Request and Bulk Dump is the third parameter 3n (Parameter), 2n (Dump Request).
Correct.
Q2: What value passed for "n". I passed 0,1,2. Is there any way to get the channel number.
I would try 0. To change the MIDI channels you have to do some magick that can be found in the manual. Something like " while holding this and that key turn on the power". I think also firmware 1.30 is required for that but I'm not sure. The Reface DX has a menu function for it.
There is a way to get the channel number ... if you already know what the channel number is 😮