YamahaSynth.com Forums

This is the place to talk about all things related to Yamaha Synthesizers!
  1. Bob
  2. reface
  3. Saturday, 12 November 2016
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
Responses (21)
Accepted Answer Pending Moderation
:) 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!
  1. more than a month ago
  2. reface
  3. # 1
Bad Mister
Yamaha
Accepted Answer Pending Moderation
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
  1. more than a month ago
  2. reface
  3. # 2
Accepted Answer Pending Moderation
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!
  1. more than a month ago
  2. reface
  3. # 3
Bad Mister
Yamaha
Accepted Answer Pending Moderation
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.
  1. more than a month ago
  2. reface
  3. # 4
Accepted Answer Pending Moderation
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
  1. more than a month ago
  2. reface
  3. # 5
Bad Mister
Yamaha
Accepted Answer Pending Moderation
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.
  1. more than a month ago
  2. reface
  3. # 6
Accepted Answer Pending Moderation
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
  1. more than a month ago
  2. reface
  3. # 7
Accepted Answer Pending Moderation
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:
FO, 43, 00, 7F, 1C, 00, 04,  03, 0E, 0F, 00, 60, F7
(=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:
FO, 43, 00, 7F, 1C, 00, 1A, 03, 30, 00, 00
(=11 bytes)

4. Now the most important part:
22 bytes of toneparameter data


5.
checksum, F7
(=2 bytes)

6. Then the footer:
F0, 43, 00, 7F, 1C, 00, 04, 03, 0F, 0F, 00, 5F, F7
(=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
  1. more than a month ago
  2. reface
  3. # 8
Accepted Answer Pending Moderation
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.
  1. more than a month ago
  2. reface
  3. # 9
Accepted Answer Pending Moderation
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!
  1. more than a month ago
  2. reface
  3. # 10
Accepted Answer Pending Moderation
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)
  1. more than a month ago
  2. reface
  3. # 11
Accepted Answer Pending Moderation
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
  1. more than a month ago
  2. reface
  3. # 12
Accepted Answer Pending Moderation
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
  1. more than a month ago
  2. reface
  3. # 13
Accepted Answer Pending Moderation
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
  1. more than a month ago
  2. reface
  3. # 14
Accepted Answer Pending Moderation
Hey Sven - I mis-copied this somehow. They are actually located here:

https://soundmondo.yamahasynth.com/api/v1/voices/12942/

the trailing number identifies the sound. Sorry for the confusion. Thanks.

Bob
  1. more than a month ago
  2. reface
  3. # 15
Accepted Answer Pending Moderation
This is extremely useful info for me :)

I have now written a little commandline script in Python to download and convert the json data from Soundmondo, and save them as SysEx.
I can now do something like

$ soundmondo2syx.py ID


and then will have a clean sysex file that looks something like

ID-name_of_patch.syx


I love this :D
  1. more than a month ago
  2. reface
  3. # 16
Accepted Answer Pending Moderation
As a result of this I have posted a message here:
Free Patches from Soundmondo

:D

Enjoy!
  1. more than a month ago
  2. reface
  3. # 17
Accepted Answer Pending Moderation
That is super cool, Martin! Thank you for sharing it! If I knew anything about python, I'd ask to look but I'm more of a PHP guy. I just need to write something on my mac to parse the sysex file into nonhex digital values for my arduino app and I am all set.

A couple other things I am still struggling with, in case you happened to have the answers:

The command given here in the forum to trigger sysex bulk dump of a patch ( F0 43 20 7F 1C 03 0E 0F 00 F7 )for my CS doesn't seem to do anything. I've tried it on my Mac and iOS apps and I can't seem to capture anything coming back.

Does anyone know the pin config on the 6 pin mini din connector? I want to make a custom cable to my patch bank device.

Thanks again, Martin!
  1. more than a month ago
  2. reface
  3. # 18
Accepted Answer Pending Moderation
Bob wrote:
The command given here in the forum to trigger sysex bulk dump of a patch ( F0 43 20 7F 1C 03 0E 0F 00 F7 )for my CS doesn't seem to do anything. I've tried it on my Mac and iOS apps and I can't seem to capture anything coming back.


Looks OK to me. Be sure Device number/channel is set to channel=1. Are you able send anything at all to your CS succesfully? Try starting with a simple Note-On message, for example

90 3C 64


for a Note-On message on Channel=1, central C, velocity=100. You can hear the result if everything is OK.
  1. more than a month ago
  2. reface
  3. # 19
Accepted Answer Pending Moderation
Hi Martin,

Apologies, I just haven't had a chance to test, as soon as I do I'll post. My hunch it that that command will work, but we'll see. Thanks.

Bob
  1. more than a month ago
  2. reface
  3. # 20
  • Page :
  • 1
  • 2


There are no replies made for this post yet.
Be one of the first to reply to this post!
2021 © Yamaha Corporation of America and Yamaha Corporation. All rights reserved.