I will step back a little bit for a moment. I had three goals when I designed the original preset JSON format:
- to be able to compose and parse SysEx messages of the majority of synths
- to be able to generate MIDI implementation documentation out of the JSON
- generate the preset JSON programatically
if the 3rd point was not part of the goal, the Lua scripting could be used for all SysEx messaging. What I wanted to achieve, however, was to make working with SysEx accessible to non-tech users. We are obviously not there yet
There is a line of work that follows that goal though. @tomas released the preset versioning yesterday. It is quite a big change. One of the next steps in the editor is to add an embedded JSON editor for the Patch and SysEx data. When this is done, the irritating need to export and import presets that are manually edited should be minimized. Once the JSON editor is there, I would like to change it, so that users can choose between editing JSON as a text or using something more intuitive.
ok, the intuitive way… imagine the following workflow:
- you open our “future” SysEx patch dump editor in the app.electra.one.
- It will ask you to type in the bytes to request the patch dump.
- so you do so and you hit “send request”.
- if the request bytes are correct, the web app will receive the SysEx dump from the connected synth and will save the request bytes to the patch object in the JSON
- now, with the SysEx patch dump received, the received bytes can be show in the form of an indexed table. The display would include Dec, Hex, Binary, and ASCII representation of each byte. Next to that, there would be an option to register a new parameter on the screen.
- so you create the parameter, eg. a filter Cutoff
- now, you could selected the cutoff parameter and assign the bits and bytes from the SysEx dump to it.
- you could also, re-request the SysEx dump to see changes if you change the parameter on the synth.
- once you feel the parameter is mapped correctly, you would save it to the JSON patch and would move onto the next parameter.
- the SysEx bytes assigned to the parameters would be highlighted in a way. To give you an indication what is used already and if everything is covered.
I am very sure that above could easily produce the the patch JSON.
If I were to take this further, I can imagine having an extra logic that could detect common patterns such as nibbelized bytes, packed bytes, etc. One would help the “learning” process by tweaking the parameters on the device. Or even the editor could do the tweaking.
All this is also closely related to another hidden gem - the instrument file. The preset file format was made and designed to describe the studio or rig setup. Say, I have Virus B, MKS-50, P5, DP/4, and MX-1 in my rig. So, I could have a preset where I have controls for all these devices and I can control them from there. That is why the preset has all that stuff around devices. The instrument JSON file, on contrary, is a description of the MIDI implementation of a particular MIDI device. It describes the parameters, patch requests, responses, defines the list of values, etc.
When creating a preset, one can start from the scratch and define everything in the preset. Another option is to load the instrument files for the devices I own, and simply drag and drop the controls to the preset layout. All the technical info would be taken out of the instrument file definition.
The time restrictions and also the ease of creating presets kind of pushed the Instrument files to the back. They are supported by the editor but there are basically no tools to create them. The good thing is that it is possible to generate Instrument files out of existing presets.
If I go back to the original topic, I would like to say that @oldgearguy said it right. Some education and better docs/tutorials are needed. Majority of my time still goes to making the firmware faster, more stable, and easier to use. I am also working in parallel on the opensource API that would other software developers a way to help me or develop their own Electra applications. But I will try to find some moments to write something every now and then. I heard @Flyweight’s offer to take part on that and I saw his new github account :). I am sure we will find a way to make something. Anybody else is welcomed to join. Pls, note that all the documentation on docs.electra.one is available on the github and can be edited and PRed.
And the very last comment. Quite a while back, @Ramyt talked to me and he was very enthusiastic about Electra as kind of a device to learn stuff. His input was one of the many that led to adding the Lua extension to the firmware. From this perspective Electra can be actually seen as a device to program, script, learn programming, and have fun in the domain of MIDI. It is not only about presets and mapping parameters, current firmware already provides a way to invent and add things such as MIDI LFOs, triggering notes, seqences, and lot more.