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. Some apps for Ansible also have their own threads: Ansible Earthsea // Ansible Kria Feature Requests

Officially released versions can be found here. For documentation of in-development features (if docs exist yet), see the docs repo here.

Current beta + changelog

ansible.hex (351.5 KB - 68def24 - 2019/06/15)
teletype.hex (579.2 KB - 789b5fe - 2019/06/07)

Post with some step-by-step info on trying the Ansible beta.

Things that particularly need testing in these builds:

  • all preset save/load functionality, especially Kria and Earthsea as they have the most state, and Arc apps if you’ve got an Arc
  • correctness of ANS.A and ANS.A.LED ops, if someone with Arc + Ansible + Teletype gets a chance
  • Kria for glitches hiding in the corners

Features included in the Ansible build:

  • Ansible Earthsea by @scanner_darkly
  • Ability to back up presets for all apps to USB disk. You can save load state for only the active app if you hold the preset button when inserting the USB disk, otherwise all presets are saved/loaded from disk. This also gives the ability to load some customization data, such as the number of brightness steps your Grid has, or possibly eventually things like tuning tables. discussion
  • Kria features:
    • step direction modes (scale page - scooted these over from previous build to make room for trigger-clocking) discussion
    • track-wide octave shift (top row of octave page) discussion // video
    • optionally wait to change clock division of a parameter until it reaches the end of its loop (enabled via new toggle on clock page) discussion
    • optionally change all clock divisions, all divisions within a track, or note + trig divisions simultaneously (enabled via glyphs on clock page)
    • toggle individual triggers within a ratchet step and choose the number of subdivisions of the note (toggles and top/bottom row on ratchet page, long press bottom row to clear) discussion // video // also appears in video 2 below
    • clock notes only when a trigger happens by @freqout (enabled by toggles on scale page) discussion (with video) // video 2
    • ability to have note sync ON and loop sync OFF, so that trigger + note have linked loops but other parameters are independent

Ops added in this Teletype build for interacting with Ansible:

ANS.G x y / ANS.G x y z   # get/set grid key state (z) at pos x, y
ANS.G.P x y               # simulate grid key press (down + up) on ansible at pos x, y
ANS.G.LED x y             # get grid LED state for key x, y
ANS.A n d                 # simulate arc encoder rotation of ring n, delta d
ANS.A.LED n x             # get arc LED state for ring n, LED x (clockwise from north)
ANS.APP / ANS.APP x       # get/set active app
KR.PG / KR.PG x           # get/set active kria page
KR.CUE / KR.CUE x         # get/set cued pattern
KR.DIR n / KR.DIR n x     # get/set step direction for track n to direction 0-4

PRs (and docs) coming soon.

30 Likes

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?

2 Likes

: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.

6 Likes

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.

https://llllllll.co/uploads/default/original/3X/d/6/d65d92dee1bf545e73d6035fc569aff38209e8fb.mov https://llllllll.co/uploads/default/original/3X/f/8/f8921d085bb36b1ac3be4e3e0747e17d868663b5.mov

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.
:slight_smile:

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