Spokane, Washington, USA
RY30 sysex
StoreTags: ry30, sysex, reverse enginee, bulk dump
Author: license on August 24 2006
Viewed 3054 times. 2 people liked this blog. You can rate it below if you haven't already.
People who enjoyed reading this: sohcahtoa, energygiant
--> So, basically the tags spell it out. I'm wondering if anyone knew much about the RY30 dump format. Nobody on Google seems to. Any data on Yamaha dumps would be handy too. I found a couple links with a little info but nothing juicy yet.

I got a couple hex editors and I'm trying to hack it out on my own. I also called Yamaha expecting to get laughed at. The guy said he'd see if any of the engineers could send some documentation, I guess that's something.

It feels a lot better to be doing this kind of programming and hex-hacking stuff again than it did to spend the last 2 months struggling to even make a basic beat. Hm. Maybe this will be a nice little break.
Read license's other blogs.license's Recent Blogs
Comments

You could try looking at the RM50 manual. The RM50 is a rack-mounted ry30 with a few extra features, so it might use some of the same sysex commands.

The only Yamaha sysex I know is the TX81z, which is dead simple.

F0 43...
Recent blogs: AOL Data Release  

Interesting, thanks. It says basically the same thing as the RY30 except the placemarker string is "LM__0087ML" whereas the RY30's is "LM__0017__". Still, the nitty gritty is just referred to as "data" and doesn't go into any detail
The second byte of the dump, 43, also appears in the RY30, though, and somewhere I read that the second byte is supposed to be specific to a machine. So maybe this is a specific type of dump, and somewhere out there is the spec for this type of dump. Might be just those two. Hm.

What I'm most worried about is that there's some kind of data compression going on. I read somewhere that this machine was first manufactured in 1985 so that seemed kind of unlikely for a drum machine. But when I was looking at how names of sounds affected the dump, two somewhat distant bytes (x0F17 and x1006) were being affected instead of one, and one was being incremented while the other was decremented. Although in compression you'd probably expect the opposite, 2 bytes into 1, right?

Update: Incremented again, and this time the 2nd bit looks like some kind of checksum, especially since it is the last byte before the chunk size/placemarker. I'm sure this stuff is pretty boring to most EMers so maybe I ought to just keep this in my notes.

43 is Yamaha's manufacturer byte. All Yamaha's use it after the sysex start byte (F0). Every manufacturer has one. Here's a partial list.

Calculating checksums sucks. You might try emailing the guy who runs the Deep Synthesis page. He's got a RY30 editor, so he probably has some better sysex specs.
Recent blogs: AOL Data Release  

that 2-byte sound name change may be because it's a japanese machine, ie - not using ascii
as for the rest - no clue, sorry
Recent blogs: Digitech EQ, Some Old Sh1t, RIP Klock  

i want a t shirt that says: F0-FF!

Update: they were indeed checksums.
Checksums in the dumps are calculated from the LM 0017 string to 3 bytes before the next one and they = 128 - ((sum of bytes) % 128).

when writing the data for that bloody sine wave i did i had to do a checksum at the end of each data packet that involved calculating the xor of every byte in the packet- luckily i had a scientific calculator that could do xor but it was like if i pressed the wrong button at any time itd fail (but i wouldnt know til i tried to dump it back to the sampler(then id have to do the whole thing again))
this is why im not a computer programmer- fuck that shit - nice idea but......

Argh! fucking annoying, mang! yeah programming takes out a lot of headache, actually. most of it is just hairpulling at the kind of frustration you're talking about. the nice part about programming is that once you solve one problem, you (supposedly) don't have to solve it again.

the ry30's actually polite. I did a test and I forgot to edit the checksums. the transmission actually got to it fine and it responded as expected. it gave me was an error message but otherwise everything was fine. I'm still working on the voices, though, I'll tackle patterns (my ultimate goal) after I get that done.

Yamaha was no help at all. Back to reverse engineering.

I'm glad you are looking into this sysex! I have an rm50 manual I can check for sysex info detailed in there.

I learned some tiny new aspect to the ry30 (first time in many years now!)-- if you are near 99% of memory capacity and are trying to add and delete events (btw, non-zero Pitch/Pan/balance/etc event data is *additional*, not built in to a note occurance in the sequencer it turns out!) you can add an event that maxes the memory out, but be unable to go into step or realtime record mode ("memory full!" error occurs) and you are FORCED to delete one of your patterns in order to be able to reenter a real or step record mode.
IOW, you can fill the memory such that you can't get into step record mode at all!!

Oh man, that's nuts! I thought memory was allocated per-pattern, because I have maxed out a pattern to the point where it told me it wasn't going to take any more, but then I could go right on to the next pattern and keep recording. I believe it was 360 "events", pitch/pan/decay/filter/balance as you said counting as an event. Maybe there's both a limit to pattern size AND overall memory.

As you might've guessed, I put this project away for a while, hopefully not indefinitely but I need to learn some MIDI programming before I can make this really worthwhile.

I think I'm gonna try this out again.
I also think it'd be more useful as a MMT8<->RY30 translator, if possible. and if I could play demo sequences, etc.
I need to learn some MIDI shits first, though. I don't even really know where to begin.


Register / login
You must be a member to reply or post. signup or login