Ansible Development and Beta Firmware Discussion

This thread is for feature discussion, sharing builds and/or code snippets, and user feedback / bug reports / questions about in-progress development on firmware for the Ansible eurorack module.

You can get release firmware here, and official documentation is here. The source code is here. For changes that have been accepted for the next firmware version, but are not in release builds yet, see in the Ansible repo.

To contribute to the docs, or to find documentation of in-development features, see the docs repo here.

Here is a post with some step-by-step info on updating from an older version while keeping your presets.

Some apps for Ansible also have their own threads: Ansible Earthsea - #510 by tehn // Ansible Kria Feature Requests - #195 by freqout

Current build

The following files are beta builds for the next version.
ansible.hex (380.1 KB - 2021/08/08 - 4bb07a2)

In-development features and bug fixes

These issues have been fixed since the v3.1.1 release.

  • Kria’s probability page could crash the module when the scale or pattern page is selected. The probability mod page has no (intended) effect on these pages, so the ability to access the probability page from scale and pattern pages has been removed.
  • With metapattern mode engaged, selecting new loop endpoints on the loop mod page would crash the module.
  • Arc apps were not sending commands to ii followers on note events.
  • Kria and Earthsea now support 256-key grids.

These issues are known and being worked on, ETA unknown.

  • Bugs in the JSON preset deserializer cause some preset files to not be loadable from USB, especially presets saved with newer/beta versions.

Reported bugs that need help reproducing

  • Glitch where ratchet steps are skipped or otherwise incorrect, report 1, report 2
  • Partial module crash: Grid continues refreshing, but does not respond to input; mode key does not respond to short/long presses correctly; pitch CVs change but triggers are stuck. Your exact symptoms may be different. This one has a bit of a history: thread, github issue, videos. If this affects you please describe what if any I2C you are using and how you are clocking Ansible.

this is huge effort, amazing work! thank you.

will reply more later, but for now a quick thought: would it make sense to store presets to USB for the currently running app only? i guess if you switch between different apps regularly you’d want a complete save… maybe with preset buttton pressed when USB is inserted it could be app only save, otherwise it saves everything?

perhaps a new general thread for ansible development and feature discussion, similar to what we have for teletype?


:star_struck: Amazing work, I’ll be sending you presets later this weekend and will get to beta testing!

1 Like

Are the ANS.x ops intended to be cross-app ops?

Thanks for pulling this together. Exciting!

Yes, all Grid or Arc apps should accept them. This allows Teletype to remotely change apps on the fly and simulate device interactions, so you could in principle use Levels with just Teletype and Ansible with no Arc plugged in.


What!? Holy smokes!!

First of all, thank you very much for this amazing effort.
I did a quick play with the latest build and with the saving routine.
I found a couple of things that might be bugs in KRIA ( i mainly use KRIA):

  1. when in octave page and in duration pagei do not have visual feedback (cannot see the led lit up for the octave changes neither for the durantion lenghts)
  2. when in trigger and in ratcheting, if I dial in some ratchet steps and then delete them, the lights keep going on that pattern even if the leds are not lit.
    I will keep playing with it tomorrow, I love the new features!!!
1 Like

Thanks for checking it out!

Weird, like nothing lights up at all on those pages? Is this after loading presets from disk?

Not sure if this is what you’re describing, but the idea is that once you’ve turned on gates, you’re able to easily toggle them back off to create rests within a note. The keys stay lit at a lower brightness to indicate that those subdivisions are active, but won’t have a trigger played during them. You can clear everything back down to a single subdivision with an active trigger (the initial state) by holding the dimly lit key beneath the first trigger toggle for a couple seconds.

I do not have any lights going only on the “sliders”, I have the global octave control and the light showing the seq progress, same in the duration page.

On ratcheting All works fine except that I think it would be good if the seq light do not keep following the deleted steps.

1 Like

Also forgot to add that I have not loaded any presets into ansible.

What edition is your Grid? Does it have 16 brightness steps per LED or 4? I tried to adjust the brightness levels for a couple pages to match the brightness on the Trigger and Note pages, but maybe this makes the octave and duration positions invisible on older grids? I can revert those brightness changes if this causes problems on older grids.

The thing is that the playhead is visiting those steps, because they represent rests. So you can program something like note-rest-note-rest for a single ratchet step with 4 subdivisions, and the playhead is brighter to show you that it’s visiting the rests as well. If the playhead wasn’t lit for these I think it might make it harder to read the exact timing of some syncopations. If you don’t want rests at the end of a step, you can use the top row and the second from the bottom row to adjust the number of subdivisions up and down, or you can hold the top row to eliminate all rests that are at the end of a note, leaving the last active gate as the end of the step.

As you spotted it is a 2011 grid with 4 steps variable brightness.
I am really fond of this version as I personally find the best looking one…personal opinion.

The standard ansible firmware works perfectly so it would be great if you can make it work with older grid as well…maybe you can also add an option to decide which brightness model the user would like to use?
Just an idea.

In any case I have seen that there is a post about upgrade the variable brightness on old monome I need to check it out

1 Like

Awesome. I assume updating to this firmware will wipe old saved presets?

Will do! I just noticed that the brightness levels on a couple pages were different with a 16-step grid, and wanted to make them visually consistent, but I bet making them work for 4-step grids is probably why they were brighter. I like the idea of having this be a setting. At this point the easiest way to provide customizable settings is probably to have them be loaded from the JSON file. So you could do something like: save settings, open the file from the USB disk, change a number at the beginning from “16” to “4”, put the disk back in and load it up. Could also potentially add it to the grid UI somewhere, though you need to be real sure that looks okay on all grids!

It will, but I wrote a Python program that should be able to convert a firmware backup to a JSON file that the new firmware can load, letting you carry over currently saved presets to new firmwares. You can either use this tool yourself (the extract tool here) or you can PM me your ansible.hex and I’ll convert it for you and send back an ansible-preset.json that can be loaded after you reflash Ansible with the new beta. This process is described in more detail in this post.

1 Like

I’m a 4 step variable brightness user as well! Having the option stored on the JSON file seems good, but would be a pain if the wrong version was loaded and I couldn’t see all the parameters… Could this be an explicit option to choose when creating a preset with your python script? Or would that be getting too complicated?

1 Like

@bassik @kbit I updated the Ansible build to support configuring the number of brightness steps Ansible should treat your grid as having. If you save a preset to disk, then open up ansible-preset.json off the USB disk in a text editor, you should see at the beginning of the file

{"meta": {"firmware": "ansible", "version": "1.6.1-45bbe5c", "grid_varibrightness": 16, "i2c_addr": ...

Change grid_varibrightness to 4, then load the file back up on Ansible. The octave and duration pages should look as expected, and hopefully it’s a little easier to tell what’s going on on the ratchet page because the rests will stay lit at brightness level 1 until you clear those subdivisions.

I tested this on my 16-step 128 by discarding the bottom 2 bits of brightness info before it’s sent to the grid, hopefully this looks as expected on 4-step grids. I haven’t added an argument to the Python script yet but that’s probably a good idea, otherwise you can just edit the file the script generates before putting it on the disk.

1 Like

Wonderful, thank you! Have been light on time to beta test this week but will get to it asap; have been thinking of “boring” ways to test all the parameters when loading a new preset.

I’m trying to find out how to do this, hints?

Thank you very much.
Will try to find time this weekend to do more testing.

Really appreciate the effort.

From the default settings, you should just need to go to the config page and turn loop sync off (press the lit row of four keys on the right side). Previously this would automatically turn note sync off, and turning note sync on would turn loop sync on, but now they’re decoupled.

1 Like