Synth Forum

Notifications
Clear all

Sending a Patch to Reface CS via Sysex (not using iOS or SoundMondo)

22 Posts
5 Users
0 Reactions
7,392 Views
 Bob
Posts: 0
Active Member
Topic starter
 

Can someone from Yamaha post an example of a sysex (.syx) file that could be sent over midi and would load a patch into the CS? I have tried capturing the patch sysex output from the iOS app, but when I send it, the reface does not load the patch. Perhaps I need a particular string to "wake" the CS before sending? I have tried everything I can think of at this point, your help would be greatly appreciated. Love my CS, great synth!

Bob

 
Posted : 13/11/2016 3:04 am
 Bob
Posts: 0
Active Member
Topic starter
 

🙂 Bump :p Anyone from Yamaha able to point me in the right direction or have an email of someone from the company I can ask? Thanks!

 
Posted : 16/11/2016 8:19 pm
Bad Mister
Posts: 12303
 

F0 43 20 7F 1C 03 0E 0F 00 F7

Bulk request for refaceCS. See the following article on using the reface via MIDI
reface CS MIDI Primer

 
Posted : 17/11/2016 1:26 am
 Bob
Posts: 0
Active Member
Topic starter
 

Thanks much, I have read this post before and pretty much every other Yamaha doc I can get my hands on but am still unable to send a patch to the CS. I am able to change the midi channel with the command, but that's as far as I can get.

Specifically I am looking to see what a complete sysex message that sends an entire patch to the reface CS would look like.

I have captured the sysex output of the Yamaha iOS app as the patch is being sent to the CS, but when I try to send it from my sysex app, it has no effect on the sound. My Reface receives other midi and CC data fine from this app, so I am perplexed. Any thoughts? Thanks, Mister!

 
Posted : 17/11/2016 4:07 am
Bad Mister
Posts: 12303
 

If you send the Bulk Request message to the refaceCS it will reply with its data. You don't tell us what you have (only what you don't want to do) so, work it out. If you have a sequencer put it in overdub record, send this message, and capture the returning Sysex, that will be the patch settings.

 
Posted : 17/11/2016 8:48 am
 Bob
Posts: 0
Active Member
Topic starter
 

Okay, fair enough. This has been rattling around my brain for so long I forgot to be more detailed in explaining. What I have:

Sending/Receiving Device - An iOS utility (also can use MacOS like Elektron C6) that can capture and send sysex information over usb midi or through a midi interface.

What I'm trying to do: Capture a patch via sysex, and be able to send that captured patch back to the device at a later time.

What I want to do ultimately: Be able to send patches from a midi enabled arduino based device to the RefaceCS during live performances as sysex data.

So:

If I initiate the dump request per the manual, and capture the data, can I just send that exact data back to the Reface CS exactly as is, or do I need to modify it in some way to get the Reface to accept it as a patch? Thank you for your help!

Bob

 
Posted : 17/11/2016 3:36 pm
Bad Mister
Posts: 12303
 

Thank you for providing some context, and although I am not familiar with the tools you mention, it does help with why perhaps you are not getting the bulk request to work.

The files that I linked you to work when you playback this MIDI file from a sequencer. If that same sequencer is set to (overdub) record, it will naturally receive the bulk dump of the refaceCS current configuration. By attaching the short .mid file at the top of your DAW each session would also document both the MIDI Channel setting and the patch settings as they are when you record. This way weeks later when you reconnect your CS it guarantees it returns as you expect. I use a .mid fle to contain the data - you are using a Sysex utility (sorry I'm not familiar with it)

If you are not using a DAW, or a MIDI sequencer able to playback and capture the bulk data, then you have to be creative. As far as I know, once you have this bulk data you should be able to return it to the reface and it should respond. So check that you are sending the data back properly.

 
Posted : 17/11/2016 6:09 pm
 Bob
Posts: 0
Active Member
Topic starter
 

Hmm, so maybe I should consider going .mid route instead? I'll give a few things a shot and let you know how it goes. Thanks very much for you help!

Bob

 
Posted : 17/11/2016 7:15 pm
Martin
Posts: 0
Eminent Member
 

The .mid route is one way to do it. But SysEx should also work without problems. It should be possible to transmit the SysEx data that your iOS (or OSX, or Windows, or Linux, or Android) SysEx dump utility receives from your Reface CS back to the Reface CS without modification, and it should work.

Have you used this utility with other MIDI gear succesfully?
If you have captured data from the Reface CS and it doesn't recognize/load these data when the same date are sent back to the Reface CS then there could be something wrong with the capture of the data in the app: It could be a bug in your app. If so send the developer of the app a bug report, so that he can fix it. Or find another app that works correctly.

A correct Reface CS sysex file has a size of exactly 61 bytes. Very small, and it should not give problems with any app or device. If you have a Hexadecimal editor/viewer you can examine the file. Some things are easy to check. Let's suppose the midi channel is set to 1.

1. Total size should be exactly 61 bytes

2. It should start with the header: [code type=markup]FO, 43, 00, 7F, 1C, 00, 04, 03, 0E, 0F, 00, 60, F7[/code] (=13 bytes) (Note: the Byte Count (6th+7th byte) is 04, not 00 like the reface_en_dl_cs.pdf manual says! This is an error in the manual. A similar error is also in the Reface DX data sheets. I have not checked the other Reface models)

3. Then the Tone data, starting with: [code type=markup]FO, 43, 00, 7F, 1C, 00, 1A, 03, 30, 00, 00[/code] (=11 bytes)

4. Now the most important part: [code type=markup]22 bytes of toneparameter data[/code]

5. [code type=markup]checksum, F7[/code] (=2 bytes)

6. Then the footer: [code type=markup]F0, 43, 00, 7F, 1C, 00, 04, 03, 0F, 0F, 00, 5F, F7[/code] (=13 bytes)

Let's check the size: 13 + 11 + 22 + 2 + 13 = 61 bytes.

When using a MIDI sequencer / DAW really the same data are sent to the Reface CS. But MIDI/sequencer files add timing information to the raw SysEx data. A good SysEx utility usually adds some time delays for example after each F7 byte. But with a modern synth like the Reface CS and with such a small 61 bytes datasize it should not really be a problem if it doesn't.

Let us know if/when you can find and/or solve your SysEx dump problems. It might help other iOS / Reface users.

For testing you can download some examples of Yamaha CS SysEx patchdata here: CS-examples.zip

 
Posted : 22/11/2016 8:59 am
 Bob
Posts: 0
Active Member
Topic starter
 

WOW! I'm sorry I didnt see this earlier, I thought the thread had stalled, my apologies. Super excited to try this out and thank you for taking the time to spell this out for me.

 
Posted : 19/03/2017 11:16 pm
 Bob
Posts: 0
Active Member
Topic starter
 

Well, Martin. I think we've figured it out! There needs to be a pause between the lines, my iphone utilities were not allowing it time to "digest". Once I added a 90 millisecond pause in my Arduino code, I was successfully able to transmit a patch. Took quite a lot of time to get this to work, but I think I'm finally going to be able to build what I want to now.

That being said, a few more questions:

How can I get patches from the synth, soudmondo, or the iOS app in the sysex format that you sent me? I've tried to download them from the site with no success. Also they seem to have a lot extra bytes (probably the name etc?) when I monitor them through a midi utility.

Also, are the first 13 bytes and the last 13 bytes always the same? Are the middle 35 bytes the actual sound data? As you know, arduino's have pretty limited memory so I need to conserve wherever I can.

Martin, thanks very much. I've been trying to crack this for some time, so I really appreciate it!

 
Posted : 22/03/2017 5:35 am
Martin
Posts: 0
Eminent Member
 

Bob wrote:

Well, Martin. I think we've figured it out! There needs to be a pause between the lines, my iphone utilities were not allowing it time to "digest". Once I added a 90 millisecond pause in my Arduino code, I was successfully able to transmit a patch.

Yes, a small pause between blocks is a good idea.

How can I get patches from the synth, soundmondo, or the iOS app in the sysex format that you sent me?

Use a dunprequest. Read Bad Mister's first reply posted on November 16, 2016.
Another option: If there is a QR code image visible, I have written a tool, written in Python, to convert the QR code images to SysEx files.

I've tried to download them from the site with no success. Also they seem to have a lot extra bytes (probably the name etc?) when I monitor them through a midi utility.

What exactly did you download from the website? I can't tell what's in it from your message, I would need to see such a file myself.

Also, are the first 13 bytes and the last 13 bytes always the same? Are the middle 35 bytes the actual sound data? As you know, arduino's have pretty limited memory so I need to conserve wherever I can.

Yes, the header and footer are not changed, except when the sysex MIDI receive/transmit Channel is changed. I always keep channel=1 when doing SysEx bulk dumps to keep things simple. The actual voiceparameters are only 22 bytes. (point 4. in my description in my previous message)

 
Posted : 24/03/2017 11:18 pm
 Bob
Posts: 0
Active Member
Topic starter
 

Okay, many thanks Martin! If I can find a way to get the file out of my midi listening utility on my ipod I'll send it along. That's cool about your QR code reader, would be fun to try it. Weirdly, I looked into the Yamaha site and this is what the file info looks like:

{"id":12773,"user":"https://soundmondo.yamahasynth.com/api/v1/users/2328/","name":"BetweenSpaceCutoff","reface":"CS","description":"Play with the speed. An innerspace organ/fx.","snapshot":"https://soundmondo.yamahasynth.com/media/snapshots/1490237647.png","data":{"sysex":[{"11":96,"10":0,"12":247,"1":67,"0":240,"3":127,"2":0,"5":0,"4":28,"7":3,"6":4,"9":15,"8":14},{"24":87,"25":47,"26":71,"27":1,"20":48,"21":117,"22":55,"23":0,"28":72,"29":103,"1":67,"0":240,"3":127,"2":0,"5":0,"4":28,"7":3,"6":26,"9":0,"8":48,"11":127,"10":0,"13":1,"12":64,"15":50,"14":126,"17":3,"16":0,"19":98,"18":35,"31":0,"30":0,"34":247,"33":124,"32":0},{"11":95,"10":0,"12":247,"1":67,"0":240,"3":127,"2":0,"5":0,"4":28,"7":3,"6":4,"9":15,8:15}]},"social":{},"background":null,"tags":["FX","Pad",SFX],"created":"2017-03-23T02:54:06.948057Z","updated":"2017-03-23T02:54:07.334208Z"}

Maybe json encoded sysex? Also interesting it's decimal instead of hex. I found I had to pass values ad decimal from my Arduino libraries also. Thinking I could convert the above format if need be. Thanks again for your help!

Best,

Bob

 
Posted : 27/03/2017 3:21 pm
 sven
Posts: 0
New Member
 

Hello Bob

I have the same type of sysex problem with my CS.

Could you explain the details of what you did when you "looked into the Yamaha site"? How did you get the file info?

BTW, the info is the sysex data for your CS voice, it's just formatted differently. Let me know if you would like an explanation how to convert it into a more understandable format. The explanation is a bit lengthy.

Glad to hear that you got your Arduino code to work.

/Sven

 
Posted : 30/03/2017 3:01 pm
 Bob
Posts: 0
Active Member
Topic starter
 

Hi Sven,

I just kind of looked around and noticed that if you know the ID of sound (which you can find by clicking it) then the sounds seemed to reside in this area:

https://soundmondo.yamahasynth.com/api/v1/users/2328/

and by adding the "2328" after users, that seems to bring up sound 2328

still a bit kludgey, but since I couldn't seem to cleanly grab the sysex via midi, it was my only means of getting a look.

If sysex isn't working for you, definitely break up the transmission as listed by Martin above. Once I added 90ms pauses between segments, it seemed to work. Also be sure you are sending on channel 1.

Hope this is some help!

Best,

Bob

 
Posted : 30/03/2017 5:13 pm
Page 1 / 2
Share:

© 2024 Yamaha Corporation of America and Yamaha Corporation. All rights reserved.    Terms of Use | Privacy Policy | Contact Us