Ansible Earthsea

After merging and adding the preset save/load functionality here’s the binary size info:

   text    data     bss     dec     hex filename
0x1ccf2  0x1cb0 0x4af08  432298   698aa ansible.elf

So if I’m figuring this right we’ve got 0x7E000 - 0x698AA = 0x14756 or about 82 kB left flash, or 16%.
Here’s master for comparison (30% available):

   text    data     bss     dec     hex filename
0x1a5e2  0x18a4 0x3a278  352510   560fe ansible.elf

This approximately doubles the time it takes to save/load presets (from 10 seconds to a little over 20 seconds). That’s probably largely because it almost triples the size of the JSON file, (to about 1 MB) since Earthsea state has a more nested structure/fewer buffers compared to Kria, so the JSON structure is less compact. Branch is here.


this is great - thank you! could you post the hex file, and perhaps folks could help with testing it?

significantly increased time and file size make for a strong argument against including ansible earthsea in the official firmware.

I just wanted to cast my vote in favor of including ansible earthsea. It’s likely my most used ansible app, but not even close to the “only” app I use. :slight_smile:


For me time is not that important as it mostly occurs only in the beginning - but finally having the possibility to save presets to USB before updating the firmware or would be a big thing and I would strongly prefer it to having Earthsea as an Ansible app.

7 posts were split to a new topic: Ansible Development and Beta Firmware Discussion

Yeah I think that a 1MB preset file size is not a huge concern, and a 20 second load time is not maybe the end of the world. I’ve sort of been thinking of the feature as being designed for making backups, but if you had a lot of different presets you needed to load there might be a scenario where you’d want to use it in a performance, in which case that would be a big deal. The current version kind of locks down the outputs while a USB disk operation is underway though. It should also be technically possible to load/save only the presets for a specific app so it’s possible to save time that way – it’s happy to load whatever it’s able to from the JSON file. Having a PC editor for managing presets could help with this, this might be an interesting future project.

All this to say I think it’s pretty nice to have Earthsea included, it more than makes up for the space it uses. With maybe a few tweaks and preprocessor directives it might also be straightforward to make/automate “light” builds that only include a single app if that’s something there’s an interest in.

I hesitated to post the build with master + Earthsea I was using above because I wanted to have a chance to post an updated build combining everything I’ve been working on so that there’s only a single firmware to test. The latest build including Earthsea and everything else is in this thread: Ansible Development and Beta Firmware Discussion


i’m generally in favor of a combined master: more people will as a result use the great code created by the generous people here.

preset load time and size to me are not of concern. preset bank switching to/from USB during performance absolutely was never a feature :slight_smile:


re: merging in Earthsea: what’s the state of the documentation? I wrote a pass quite a while back and it’s in a branch, but I don’t know if it reflects latest state, or needs rebasing against latest Ansible docs. I have a little time this week and am happy to look into it.


@csboling since you already merged earthsea into your branch, do you want to do a pull request? alternatively i could update my branch from yours and submit a pull request, whichever you prefer.

do we want to merge first and then post a new beta, or do testing first? unfortunately due to family circumstances i have very limited time to work on any projects, so won’t be able to test it.

@infovore - that’d be great! as far as i can tell the only changes/additions that are probably not in the doc yet are these: Ansible Earthsea

OK. I will update that in the next day or two, perhaps on a plane tomorrow.


I have a branch with Earthsea merged in and with JSON preset support added for it, I can make a PR tonight. (edit: here)

I’m trying to keep the posted beta build current with master while also including other features in it that are still pending merge. Everything should be tested again once it’s in master I think, but the beta build as-is should be relatively close to the release version, excepting fixes for bugs found by users currently beta testing. We should be able to look at the diff between master and my dev branch after everything’s merged to get a sense of how/where master is different from the beta(s).


I can’t see how this would be possible, but here goes: is there any way to grab the current presets on an Ansible, update Ansible to this new preset-savable, then load the previous presets (Kria) into it? I know, I know…it ain’t gonna work. But man that would be sweet! :sob:

This is possible, see here. It should also be possible to export presets from the 1.6.1 + Earthsea build.

OMG…amazing! Will check it.

UPDATE: can somebody interested in Earthsea documentation / knowledgeable about current functionality check my updated documentation pass which you can read here. (this is my own fork of the docs repo). I’ve added the Teletype documentation and also the notes on skip-to-playback-position, rests, and scales. I’ve not had a chance to update the illustrations because I’m on a trackpad (sat at a gate during delays) but that will happen in due course. But because I’ve not run this firmware on my ansible yet, I don’t know if I’ve described it correctly! But basically this is ready to go with a PR.

(It also includes some of my tidying of the Kria docs - I am hoping nothing will be lost in the ultimate PR, I think it’s all mainly stylistic consistency).


Unless I am missing something… The doc link you posted seems to be missing any mention of ansible earthsea.

Oh god I probably linked to the wrong branch because I have been on transport.

1 Like

That’s it! Found the changes in your aearthsea-docs branch.

Here is the link

Fixed in my original post

1 Like

thank you - looks good!

a couple of minor things: ### Clocking Earthsea is not showing as a header, and in the 2nd paragraph under Highlighting scales on the key map there is a space missing in createyour.