Downloaded the offline app. Looking forward to trying out the features. @martin I see how to grab public library presets and import, but what about my private online presets? Is it only via import project?
Having fun with the AI feature of the offline editor. Building a preset just got a lot faster! What’s the best way to report things that the AI agent has found about the firmware that it didn’t like/expect? Not sure if it is the agent making wrong assumptions or its a feature of the firmware that could be improved. @martin you can be the judge of that. In building an extended ARP preset the Claude agent found a couple of bugs in its lua script.
Fixed a real bug uncovered while wiring up the new controls: the firmware clamps a control’s message minimum to 0 even when the project correctly declares a negative one, which meant
toMidi()— previously used indiscriminately for every control, including Swing — silently remapped bipolar fader values onto the wrong, non-negative range (swing at the “0% / centered” position was actually evaluating as +40, and every negative swing value was being read as positive). I split the config reader intocfgList()(index→label translation, still needed for Pattern/Octaves/Sync/routing lists) andcfgValue()(a straight, unmangled display-value read for every proportional fader: Tempo, Gate, Swing, Chance, and the two new Transpose controls), and re-pointed every call site accordingly — this was a pre-existing defect in Swing, not something introduced by Transpose, but it only became visible once the Transpose tests demanded exact arithmetic.
Found another instance of the same class of bug: the firmware stores a list item’s negative
valueas an unsigned 16-bit wraparound (e.g.-2becomes65534), sotoMidi()on the new Octave list returns huge positive numbers instead of negative ones. FixingcfgList()to un-wrap that.Clean. Transpose Octave is now a 5-item list (-2, -1, 0, +1, +2 Oct) instead of a fader, so it’s picked exactly rather than hunted for on a dial. Converting it surfaced a third instance of the same firmware quirk: a list item’s negative label value comes back from
toMidi()wrapped as an unsigned 16-bit number (−2 reads as 65534), so I added the standard two’s-complement unwrap tocfgList()— this makes negative-valued lists safe in general, not just for this one control.
Also, “ParameterMap::forget: cannot remove file” cache messages appear on every preset. Seems harmless but unneccessary?
All three are wrong assumptions, stemming from one particular misunderstanding. I made changes to the embedded AI reference to prevent it. The change will be part of next offline app release.
I think I was too focusd on the sharing aspect of that, will adjust it to allow sync of private projects too.
@martin What does this mean?
The reply was cut off before it finished - the turn reached its output limit. Nothing was changed. Try again, or ask for a smaller step.
Getting it frequently for what seem to me like pretty small tasks. $ spent each time.
Is it possible to connect to an OpenAI account? I have access to most LLMs via work but the API key they provide is for OpenAI models.
I think you can use openAI’s codex.
There is a “safety” limit that stops the work to prevent excessive charges. I was not able to reach that during my work
I will change it so that it warns you but it will not stop it - because it is actually quite a silly idea.
Would you be willing to share (PM) URL or project Id and examples of prompts that ran into that issue?
Yes. I’ve gone a bit mad with asking the AI agent to do things
. I think sometimes the timeout happens because for some reason the E1 and the app lose connection. The agent says there is not a prob at their end, and when I exit I see the app reporting that the E1 is not connected. But I have not systematically tested that. I think sometimes it times out just because I have given it too big a task. Breaking into smaller tasks often avoided repeating the timeout. Anyway, a warning would be useful. Maybe also a hard timeout option that the user can set?
So far I have used it to build a pretty sophisticated ARP and chord/harmonizer engine with chord shapes/inversions, and SATB choir-type harmonization that I can use with any synth rather than relying on the synths often limited set of built-in ARP and Chord tools. The biggest advantage I see is the fact that it can load the preset and conduct tests directly versus me constantly cutting and pasting.
Please share. Pretty please ![]()
I will post to public library when finished. Still working on a few ideas and making sure there aren’t any UI or musical bugs. It’s only 1 page but close to 1600 lines of code. One nice thing is that the agent can conduct a battery of functional tests (currently 80) on the preset before signing off on a change. But it is not a musician.
AI assistant added some labels and AI tells me the controller’s screen font has no glyph for ♮ (U+266E) or ♯ (U+266F) at all, so they render as nothing. Can that be changed @martin? We found a workaround. But the symbols would be useful.
Here you go. Still some things to test and add but lets call this a working draft. Electra One App
Let me know if you get it working OK. In terms of what it does there is a fairly detailed description. But the TLDR version is: If you have a poly synth and one finger then you can make chord voicings or 4-part harmonies, and run them through an ARP that has various rhythmic options. Its only 2 pages of controls but close to 2500 lines of lua. Absolutely not possible without
. Enjoy!
Sweet, thanks a lot!
I’ll try to find some time during the week, and let you know.
Use this version. It is the latest. A few bug fixes and better user guide. Electra One App
Just tried to open it, and am getting this:
Broken project. Remove it or contact support.
The preset could not be read: Missing or insufficient permissions
But no hurry - it’s late, I still have work to do. Perhaps tomorrow I’ll give it (another) try.
Sorry. Try this link Electra One App