Preset file version 2 description

Electra One preset version 2 describes current implementation of the improved Electra preset format. Note, the firmware has not been released yet, it is available only to a group of testers.

The main goal of the version 2 format is to add support for multi-value controls, such as envelopes and provide more flexibility in the preset layout.

We see current status of version 2 as a proposal and we are open to your suggestions on any type of adjustments.

When preset version 2 is released, the editor will be adjusted so that it automatically converts version 1 (current) presets to the new format.

3 Likes

Excellent news, its looking really good aesthetically too, eagerly waiting to be able use all the new functions

The envelopes look fantastic :exploding_head::partying_face:

1 Like

Wow ****. that is dope AF. very much looking forward to this…

Martin,

I am trying to understand your comment above and how it relates to the documentation that I am seeing on your new website.

As I understand it, the firmware in the new electra.one will have the capability to display all the features in the control types, but they are only available if they are pushed up as JSON objects into the electra.one. These features are just not available yet via the web-editor? So I can go ahead and create my displays utilizing these control types or should I wait until the API is fully formalized?

Thank you.

Yes, exactly. The firmware already supports the JSON objects to create new control types. Editor does not support it yet. The support is being added to the editor these days. Pads are on the way.

Some time this week we will also release a simple tool for developers to upload raw JSON to the Electra. This tool will come with an improved API documentation. I would suggest not to make any big presets yet, but feel free to play around with it and test it. I am open to any suggesting regarding the JSON format.

Thanks

3 Likes

@martin
+1 on the json schema , pretty rare to see, but very useful :slight_smile:

are you generating this or maintaining it?

once, I get the electra and start dev, I’d like to edit it and send you a PR for it.

no change to the actual schema, just descriptions and titles, but is so when I generate code from it, the code comes out a little ‘nicer’.

BUT obviously that means the schema has to primary source… since if you generate it from a json file, those changes are going to be lost…
thoughts?

@thetechnobear

the schema is generated. I did, however, make edits to get the descriptions in there. I will dost most likely a few minor changes to the JSON format this week. Once it is done, I would like to regenerate it and then maintain it manually. The generator is meant to do the initial hardwork only. I am more than happy to have somebody sending in PR :slight_smile:

1 Like

Yeah, I kind of assumed that was the case :slight_smile:
( I’ve done similar in the past)

K, let us know when the schema is considered ‘authoritative’ and can be edited:maintained.

@thetechnobear Hah! Im not surprised seeing you here, good stuff!

@martin Out of curiosity have you considered using http://json-schema.org/ to define the JSON schema for validation and description of your JSON objects? I personally haven’t used it yet, but I have kept it in mind if I ever needed to define a JSON driven application.

1 Like

Yup, that’s what we were discussing with @thetechnobear. If everything goes ok, I will publish JSON schemas for both preset and configs later this week.

1 Like

Ah, I missed this crucial file:

Cheers!

Because I am crazy…

So, I asked myself, what would happen if I downloaded the ADSR Demo preset from github, and uploaded it to the Electra.One via the import option on your webtool.

Interestingly, it sort of worked. So I can see the ADSR envelopes and the pop up envelope. The behaviour is odd though… for example:

  1. moving pot 2 for the ADSR graphic changes the attack graphic, but as soon as you change the Attack on pot 2 the ADSR envelope resets. The inverse is also true.
  2. a long press on the ADSR graphic opens the pop-up graphic, but if you change the release graphic value, the decay bar changes!
  3. changing the attack creates artifacting on the ADSR pop up graphic.

I also tried the ADSR Test, ADR demo, Dial Demo, and some others. They all had some sort of visual artifacting or improper behaviour.

I am guessing that the import process alters the .epr content in a manner that incapacitates the new control types and we have to wait for the new json import tool? I did not post this as a bug on github as I figure this was not the intent of the import tool. :slight_smile:

Cheers!

@rockstarartist Not crazy, just a little bit too quick :slight_smile:

The editor does not handle the new control types correctly yet and it results in invalid JSON - in terms of missing attributes. On the firmware side a bit of work on input validation is still needed. That’s what keeps us busy these days :slight_smile:

I am working on a docs for developers, a part of that is the description of the Sandbox - a tool that allows developers to upload raw JSON files. it is meant to make it easier to test and see stuff, otherwise you would have to compose SysEx messages. The idea is get close to kind of CodePen where I would be able to demonstrate the JSON snippets right from the docs. Feel free to use it, but as mentioned, it is intended for developers and some things are still under development. For example I am adjusting the structure of JSON objects for pads currently. Some of the things are not perfect yet. Any input is welcomed.

Before using the Sandbox, update your firmware to the latest version available at Downloads.

1 Like

Cheers Martin!

No pressure from me. I am just in my discovery phase, trying to understand what I have in front of me and what I can potentially do with the device beyond the initial presets for my MIDI devices that were in desperate need of the electra. :slight_smile:

Ill take a look at the Sandbox. Thank you.

BTW, the electra is gorgeous! The dark grey looks amazing, much better in real life than in the pictures!

2 Likes

Happy to hear you like it. And yes, it is rather hard to make good photos of that finish :slight_smile:

Let me know if Sandbox works for you and if yo were able to load and use the example files from github. Thx!

1 Like

Sandbox works and so do the examples i have tested. Ill get to more of them in the coming days (I need to focus on finishing presets for my instruments to make art!)

I am currently merging some of those examples into some of my presets to see how they work out.

I definitely agree with you as to the questionable-usability of the dial-based indicators, but I guess to each their own.

An interesting one the ADSR… I prefer to have the ADSR shape after the ADSR attributes. That way the first two knobs just don’t affect Attack(I know thats changeable). Initially, I thought that positioning was determined by the ID of the control type. But it is actually the bounds array object… that is very nice! That allows for dynamically scaling and changing the bound areas based on possible future features. This is very exciting!

am I correct in saying that patch requests are always currently done by sending sysex?
this makes sense, given a dump would usually be a binary stream of data.

however, the octatrack will send all parameters on receipt of CC 61
(“Send request, 0 = all audio CC” - user manual p138)

perhaps other midi msgs could be supported… or even just a raw midi byte stream might be easier?
(given this is pretty low level stuff)

of course, for now, we can workaround this on the OT by placing a button on the UI, rather than using the dedicated patch request button.


also is the instrument definition likely to change for v2…
(I don’t see any documentation for this in the developers docs, but it seems easy enough to figure out)

1 Like

Yeah, it is sysex only now. I did not know that OT has the dump controls initiated by the receipt of a CC message. My Rhodes Chroma also supports parameters dump, but initiated with a sysex message. Adding support for more types of messages makes sense. There is also another idea around: make it possible to assign custom functions to the hardware buttons. That could provide a solution too.

And yeah, I am trying to stay away from raw messages. They do provide solution to many things, but they kind of remove the structure. I get your point about this being rather low-level though.

I have been slower with documenting this. Even though I keep it fully-backward compatible (in firmware), I have made some changes to the format there too. Once I am happy with it, I will make the docs public. I am not sure now, however, if the instrument files work ok in the nw web editor - I will check with @Tomas.

1 Like

starting to write some code…

Ive found an issue with the schema not matching the web editor preset files
the web editor has potId under an inputs sub tree
e.g.

      "id": 3,
      "type": "fader",
      "name": "VOLUME",
      "color": "FFFFFF",
      "bounds": [
        340,
        40,
        146,
        56
      ],
      "pageId": 1,
      "controlSetId": 1,
      "inputs": [
        {
          "potId": 3,
          "valueId": "value"
        }
      ],

the schema has it directly in the control

                {
                    "id": 3,
                    "type": "fader",
                    "name": "CC14",
                    "color": "F49500",
                    "bounds": [
                        340,
                        40,
                        146,
                        56
                    ],
                    "pageId": 1,
                    "controlSetId": 1,
                    "potId": 3,
                    "values": [
                        {
                            "id": "value",
                            "message": {
                                "deviceId": 1,
                                "type": "cc14",
                                "parameterNumber": 3,
                                "min": 0,
                                "max": 512
                            },
                            "min": 0,
                            "max": 512
                        }
                    ]
                },

could you possibly to get the schema inline with the web editor? (by regenerating it)
@martin @Tomas?

cheers
Mark

edit : Ive manually updated the schema for now if you are interested let me know, and I’ll send a PR