Trying yo understand the .beatsteppro file schema (exported from MCC)

does anyone understand the .beatsteppro file? is there a schema to decode it?

i’m trying to figure out if i can easily write up some python code to translate a .mid file to a sequence that can be pasted into a .beasteppro file for importing into MCC

{
	"device": "BeatStepPro",
	"version": "2.0.1",

	"112_1": 9,
	"112_2": 65,
	"112_3": 36,
	"112_4": 0,
	"112_5": 127,
	"112_6": 1,
	"112_8": 3,
	"113_1": 9,
	"113_2": 65,
	"113_3": 37,
	"113_4": 0,
	"113_5": 127,
	"113_6": 1,
	"113_8": 3,
	"114_1": 9,
	"114_2": 65,
	"114_3": 38,
        […]
}

i could spend days and days trying to decipher it, but if anyone has any insight to share that would be grand!

Hello !

I can’t explain everything as this is a pretty old product that I don’t know well, but I can give you some insight, hopefully enough for you to try something.

You must use the BeatStepPro parameters definition in order to check what are the parameters ID you need to change. Every BSP parameters that are stored in the .beatsteppro file will be described in BeatStepPro.json in the MCC resources folder.

I recommend you to send a memory to the BSP and get the whole MCC midi console output for analysis. If you succeed to find the SYSEX that are matching theses parameters, it will help you understand the values that you need to use depending of your midi file.
We have 64 steps by SEQ pattern, and they are splitted in 4 groups of 16 steps because of some communication protocol limitations.
I can also say that each midi notes have 4 parameters, the velocity, the gate length, the state (on/off) and its pitch.
For each steps, you will need to find the 4 parameters that are associated to it and modify them.
Don’t forget to set the seq length too.

I can say much more except that it won’t be easy, but that’s doable.

I started working on some Python code to get to this point, and have some very basic functions working to do export from KeyStepPro files. I’m working on import functionality, but the hitch seems to be how to handle dividing the input up into patterns. I’m still figuring out certain aspects of the project and properties files but as I decode them I should be able to determine pattern length on export. Import is going to be trickier as MIDI has no way as far as I can tell to indicate the end of a pattern, so patterns may need to be separated into individual files. This is very much a work in progress.

https://github.com/lesservehicle/arturia2midi

I also want this to have an export function that turns the project and parameters file into a big JSON dump that matches the keys to the parameter ID and description.

Eventually I want to turn this into a full GUI that will let you covert project files and import MIDI into a piano roll and save to project file format.

1 Like

Hello there !

Very nice one !!

It’s always a pleasure to see some open source community development :slight_smile:

I may have a look to this one on my spare time at some point.
I will be very happy to see it growing and accomplish it’s full goals !

I won’t be able to answer to everything, but if you have technical questions around that, feel free to send me a private message and we’ll see if I can help.

Keep up the good work !!
Cheers !