Last night I reverse engineered the .xy file format, and am starting to work on an editor that will let you view files you have, make changes, and save back out to your computer for upload. If I get a chance I may also try to build an MTP client that can go all the way to copying it back over to the XY.
I wanted to get some inspiration for what I’m building. What do you most want to edit or see on your .xy files?
I’ve heard some people talk about what a pain it is to understand which project files depend on which presets. That is something we could achieve.
I personally find it a pain to understand how step components are laid down and hold shift as I peak behind keys. So that’s something I’m going to try to make a lot easier in this workflow.
What else do you all hate editing on the device and wish you could do on a computer or phone? What do you think is best left to having fun and doing it on the XY itself?
I didn’t hear much here, so going to just publish the format and keep it updated at GitHub - kmorrill/xy-format: OP-XY file format reverse engineering · GitHub Anyone is welcome to build editors on top of it. I have had good success just using this repo as a tool cli to make the edits I want through command line.
I started reverse engineering as well but couldnt fint the time. So: you are fantastic! I will certainly have a look at it. I am interested im visualizing op-xy-songs, “paint” a song. For that I am interested in the structure and notes of thr song.
anything that you can pull out to visualize the dependencies and structure of a project will be helpful for me.
I have just recently learned how to run a python program from the command line on MacOS. I don’t however have any experience with GitHub so couldn’t figure out how to download your program at 3am this morning. I’ll try again later this week.
This is amazing! My goal is try and allow MIDI import/export from the .xy project format - do you think this is possible with the state of your repo at the moment @kmorrill ?
Yup, I have done this several times. It’s fun to do because it’s fairly trivial for code to take a significant MIDI file and find the repeating parts to help you figure out how to organize across OP-XY’s patterns/scenes/song orientation. When I was making covers before, I had to spend hours figure out how to break it down, and now you can just prompt with Claude/Codex to lay down a file for you very easily. Just clone the repo and Claude/Codex could easily take a MIDI and figure out how to get it into .xy format.
The tool already exists. Just point anything like Claude Code or Codex at the repository above and it will make this in 5 minutes and convert any MIDI file you want to .xy.
@kmorrill Kevin thank you for your amazing work. because of you i was able to build this:
it can:
rename your samples and auto-update every song that used them with the new name
relink samples or presets that moved: it hunts down where a file went and fixes the songs pointing at the old spot, or lets you swap in a different sample entirely
fix long filenames: op-xy silently cuts filenames off at 71 characters and saves them as broken links. the app flags these and renames them, updating every song that used them
see where a sample is used: which projects reference it and how many times, so you know what’s safe to delete
check each song’s memory usage with a visual gauge: the op-xy has a shared sample memory limit, and hitting it means samples won’t load
convert samples: change sample rate, bit depth, or stereo->mono to shrink files and free up that memory (with a filter to find your most bloated samples and see how much space you’d get back)
bundle a song: drops every sample it uses into one folder and rewrites the song to point at it, so you can hand the whole thing to a pal for a collab
preview any sample: see its full info — rate, bit depth, mono/stereo, length, waveform
health-check your whole library: every song shows green / needs-attention / broken, and you can filter down to just the ones with issues
Amazing @nateschmold This and XYBuddy look like very complimentary tools / apps! And yes, big shoutout to @kmorrill for making this possible! I’m looking forward to helping to maintain this repo with all the many firmware updates
Awesome, thanks for this useful tool. I’ve been waiting for something like this for a long time.
Just a small wish: It would be great if the parent page and the status were updated after a link is fixed.
EDIT
Found a small bug: In two of my projects, your app is displaying the wrong tempo. The app shows 13.2 bpm, but the correct tempo is 90 bpm. The OP-XY also shows 90 bpm.
EDIT 2
Does the “presets” tab display all the multisample presets on the machine, or only those that are used in projects? I’m asking because only a small portion of my multisample presets are shown.
What’s the difference between a green and a orange dot in the “songs” tab? I assume that means issues, but when I open some of my orange-tagged projects, I see no issues inside.
Hey! Thanks for trying it out! Is it possible to get a copy of the OPXY file witht he wrong tempo? i can look into why it might be loading incorrectly. There might be a bug where its only showing presets that are used in projects - I’ll double check today!
Is it also possible to send any of your orange dot projects? i can analyze and see if theres a reason theyre still being marked orange. And to confirm - its not related to “long filenames”?
If you can pass me a google drtive link, or even email the xy files to nate@3030.ca - no need to send samples.
And for your request - when you update a link, what is the info that is not refreshing correctly? Ill look at that too, in the meantime, “rescan” should refresh the library but ill try to improve if you can let me know specific of what you want to see
Thanks so much — really glad it’s useful, and appreciate the detailed reports. Went through all of them:
Wrong tempo (13.2 vs 90) — fixed. Those two projects store the tempo in a slightly different spot in the file than every other project I’d seen, and the app was reading the wrong byte. It now reads them correctly as 90. Thanks for catching it! gw genuinely rare, wouldn’t have found it without your files.
FIX button not disappearing after a relink — the current version re-checks the sample and updates both the project page and the songs list right after you fix a link, so the FIX button should now go away on its own. If you still see it, do a hard refresh (Cmd/Ctrl+Shift+R) — the app updates often and your browser may be holding an older copy.
Presets tab only showing some of your multisamples — good catch thank you. It was only listing presets used in a project, so any preset not referenced by a song was hidden. Just changed it: the presets tab now shows every preset in your library
Green vs orange dot in songs — orange doesn’t mean there’s a problem inside the project; it means the app parsed it with a caution flag — usually that the file was saved on a firmware version the app didn’t fully recognize yet, so it used a fallback. That’s why the project itself looks fine when you open it. I just added recognition for a newer firmware family, so a lot of those orange dots should turn green now. Green = parsed totally clean.
All of this is live now — refresh opxy.app and you should see the fixes. Keep the reports coming, they’re super helpful!
You’re welcome. Glad to help to make your great tool even better.
Fixed, thanks. The sample fix dialog now closes automatically. Is that intention? I don’t think that’s bad; I just want to rule out the possibility that it’s a bug.
Fixed. Thanks again . However, I think it would be cool to have both options: presets that are actually used in any project and all the user presets. Maybe as a toggle?
Thanks for the explanation and the fix.
Conclusion:
I’m really happy that I can finally rename samples or folders with a clear conscience. Unfortunately, the OP-XY isn’t very transparent, since it doesn’t show currently which samples are missing.