-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Progress reverse engineering OPZ #1
Comments
@patriciogonzalezvivo you can double check, but I'm pretty sure sysex have the same structure as the project files. Have a look at my wiki on that: https://github.com/lrk/z-po-project/wiki/Project-file-format |
Thanks @lrk ! definitely there are similarities. Notice that when changing the track quantize or note length one of the bytes match the "track chunk" byte offset https://github.com/patriciogonzalezvivo/opz/blob/main/src/OPZ.cpp#L151 that you point out on your documentation: https://github.com/lrk/z-po-project/wiki/Project-file-format#track-chunk |
Yes @lrk I can confirm that when changing the note length and quantize, it provides the address on memory of the pattern properties, consisting on 16 structs of the same track properties. one for every track |
Making solid progress reverse engineering the OP-Z into a library 'libopz' and creating a terminal companion. But seam there are some messages I’m missin… Any idea how to sniff midi between a iOS and the OP-Z?. Here is the library so far (with some examples like this ncurses companion app https://github.com/patriciogonzalezvivo/libopz ) |
I used Bome MIDI Translator, set it up to forward BLE midi to and from the OP-Z and the app will connect to it fine. |
Progress update, figurate how to get the entire patterns data and now I'm moving towards parsing the notes according to the data on the wiki https://github.com/lrk/z-po-project/wiki/Project-file-format#note-chunk I'm using this example code to print all tracks on a pattern This is how I'm mapping the notes to the tracks const size_t opz_notes_offset_track[] = { 0, 2, 4, 6, 8, 12, 16, 24, 28, 29, 30, 31, 35, 41, 47, 51 };
size_t offset = _step * 55 + opz_notes_offset_track[_track]; This is how the index table look like
From which I then can access different note properties: Notes Duration
Notes Note
Notes Velocity
Notes Age
@lrk do this looks ok to you? Do you know of a simpler way to get know what steps are active in each track? |
Hi! I want to thank you for the valuable documentation here. With it I manage to make some progress decoding the SYSEX messages from the OP-Z. Like for example:
My final goal is to be able to print the pattern do you happen to have an example on how to decompress the SYSEX 0x09 message for patterns using zlib?
The text was updated successfully, but these errors were encountered: