Just wondered whether there are any projects yet fiddling with the binary .xy file format of the OP-XY.
So far I made some very basic research and found drum set / patch generator projects but none with a focus on the xy files.
(I really wonder why hardware companies don’t open their file formats or even firmware if there aren’t any security concerns like with smartphones. Personally I’d be willing to pay double the price for a product like a hardware synthesizer if I can expect a creative community to emerge)
I’m a professional software developer, yet with only little background in binary reverse engineering but I guess I can provide a helping hand in case someone needs some support on an existing project.
In case nothing is there yet - anyone else interested in the binary format (in order to be able to modify or maybe even create projects from scratch programmatically)?
You can assume the format is not open source by default simply because the format may not be stable enough at this point to have other developers rely on it.
There are lots of reasons why I’d like to have it:
pure curiosity (I’m quite interested in technical backgrounds)
fiddling with values in ways which are not supported / intended in the UI
auto-generating tracks by scripts or turning midis into OP-XY projects
most important for me as a software developer: transforming from/to a text format would allow me to track, diff, merge, share, pick, etc. stuff as you can do it with open source software (and which is why every non-textual programming language is doomed)
I haven’t done anything with it, but I think it might be possible to make headway by scripting the MIDI CC stuff to slightly vary a track and keep saving files. All the key presses can be scripted on CC 106 I believe. I haven’t found a way to script turning or pressing knobs though which is limiting.
That might be a basis for reverse engineering, but I really wish they would just release a spec for it.
I know this is an old thread, but I’m hoping to rally more folks around this and see if we can get something working.
I’ve started to using Open AI codex as a thought partner to take the demo project files that ship with the device and reverse engineer them. It’s been a bit challenging, because quite a bit rotates even when you make slight tweaks to the file. But I have made a fair bit of headway and had some early success changing the pitch value of note trigs and getting edited files to open. There is a lot of assumptions that aren’t fully grounded yet thought that I need to work through.
It’s a bit painful, because while there is a tantalizing amount of MIDI automation, it’s difficult to fully automate changes and pulling files off the device without a human to press a few buttons on the device. There used to be support for pressing almost any button on the device with MIDI CC 106. They cut that, but you can regress yourself back to firmware 1.0.21 which supports this still. That said, it’s missing just enough to make it difficult to automate. For example you can trigger record and dispatch arbitrary MIDI note data, but then record is permanently latched–screwing up things you’d want to do afterward. Likewise can trigger MTP mode on the device, but can’t intriguer it.
I worked at reverse engineering this for a while, and while it seemed like I was maybe making some progress ultimately I wasn’t able to get to the point where I could write an arbitrary new file with note trigs that I wanted.
It’s difficult to create files by pure automation, so you have to do it by hand. I created a catalog of about 100 files with single changes made to them. I saved the files and detailed notes on what I was able to find so far up at GitHub - kmorrill/xy-format: OP-XY file format reverse engineering in case anyone wants to pickup the breadcrumb trail.