Ansible Kria Feature Requests

Here is another build which changes the ratchet page to let you select the number of subdivisions for each step using the top row and second-from-the-bottom row as +/- keys, and lets you go up to 5 repeats per step. Currently turning on a gate will set the number of subdivisions but turning it off will not, since one of the main reasons you might want to have control over this is to introduce rests at the end of the step. You can also long-press the “decrease subdivisions” key to clear out all the subdivisions past the highest gate you have toggled on. This still feels a little weird, would love to hear if it’s confusing or what other approaches might work.

I also implemented the phase sync on time div changes feature (PR), which is off by default. If you go to the config page there is an additional toggle on the left side of the bottom row, below the note sync square. When enabled a time division change will only become active once a parameter reaches the end of its loop (for triangle mode this is either end, for drunk and random modes it does not apply and time div changes are immediate). I figure there might be a use at some point for additional “loop quantized” actions which could be enabled with additional toggles. I tried briefly to implement a mode where a change to the selected loop wouldn’t take effect until the currently programmed loop ends, but this turned out to seem pretty tricky to get right.

Lastly just some visual changes, trying to make sure brightness levels are consistent and the loop highlight behaves the same on every page – I believe previously only trigger and note pages would highlight the loop when you hold the loop mod key. The glide page is still brighter than the others because the glide faders need to have more brightness headroom (footroom?) to fade properly if you have them maxed out.

ansible.hex (316.6 KB - 6cf62d4)
ansible.hex (316.5 KB - 9f4b8d7) - bugfix: preset mode was inaccessible after USB disk disconnect until power cycling





Just hoping to clarify something…

I have an Ansible but no TT. Will there be some kind of official announcement if and when the “official” Ansible firmware is revised?

It looks like much of this thread has to do with TT related issues, so I’m only kind of skimming it…


I’d recommend reading a bit deeper on what @csboling has been adding. Only a small portion deals with Teletype and it’s mostly a preset saving behavior. The rest has been adding upon Kria’s functionality in very exciting ways! No idea on an official merge as it seems the specifics are still being “beta tested” in a way.

I haven’t had a chance to try out the newest build but I’m looking forward to it!


all of the recent changes (thank you @csboling) have been accepted into the master branch of the repository, so they are now “official”

one thing we need help with is keeping the documentation up to date. so far changes have been made to the main web docs but we will quickly reach a point where some diagrams should be revised, and perhaps some micro-tutorial vids would be very helpful for others— again reiterating how non-coders can help push an open-source project forward and be a part of the movement


Thanks Brian.

In case it’s useful to see the process a non coding newb might take, I followed the link to the github, where I found the link to the

Once there I scrolled down to Modular and then to Ansible underneath. Opening the Ansible link, I see firmware updates, and the firmware version is listed as 1.6.1 but there is no date listed for that version, so I don’t know what is on my Ansible now or if I need to update to get current.

I’m sure I’m missing something along the way, and suspect that there is probably something on the github that I should be looking at!

Needless to say, I’m going to be grateful for any pointers on how to proceed…


1 Like

1.6.1 is the current released version and is what’s currently shipping on newly sold Ansibles. A release date would be good to include in the docs, I’ll add that in my next docs PR. The release history can be found on the github page here but that is not too straightforward to find starting from the docs page. Future versions which have the preset save to USB disk feature will include the firmware version at the top of the preset file, so from then on you should be able to answer “what firmware version am I running?” by saving your presets to disk and opening the text file on a computer.

If you’d like to try out the new features I’d be thrilled to have you beta test! That procedure goes something like this (which I will also write up for the docs page):

  • Back up your presets. If you have existing presets saved on Ansible that you don’t want to lose when you update firmwares, do the following. If you don’t mind Ansible’s saved presets being overwritten, you don’t need to do this part, but you will still need to get into bootloader mode to update the firmware. WARNING: you may want to take photos of your scales before updating. In one case someone’s scale data has failed to load when recovering from a backup. I’m not sure the cause of this issue yet but am looking into it (2019/10/13)
    1. get a dfu-programmer binary appropriate for your platform.
      • linux: install dfu-programmer from your distro’s package manager, so like sudo apt-get install dfu-programmer
      • mac: brew install dfu-programmer
      • windows: get from here, use it like this
    2. unplug whatever’s in ansible’s USB port
    3. turn off ansible
    4. plug in the USB A-A cable (that came with ansible) to your ansible and your PC
    5. hold down the preset/mode button while powering on ansible. ansible is now in bootloader mode. my Windows machine plays a chime when this happens to notify me that a USB device was found.
    6. run the following in a terminal:
      dfu-programmer at32uc3b0512 read > ansible-backup.hex
      dfu-programmer at32uc3b0512 start
    7. Disconnect the USB cable from Ansible, then power your case off. If the cable is still connected to your computer when your case powers off, sometimes Ansible won’t have powered off and it can be stuck in a weird state. If this happens you may need to get back into bootloader mode and run the start command again.
    8. PM me that ansible-backup.hex file. I will send you back an ansible-preset.json file. put that on a USB disk you want to use. I do these conversions with the Python extract program I wrote, if you prefer to do it yourself.
    9. once you’ve got that ansible-preset.json file in hand, time to update your firmware!
  • Update your firmware.
    1. get back into bootloader mode via the procedure above.
    2. this time, download the new firmware file from this post. then you’re gonna run:
      dfu-programmer at32uc3b0512 erase
      dfu-programmer at32uc3b0512 flash ansible.hex --suppress-bootloader-mem
      dfu-programmer at32uc3b0512 start
    3. Disconnect the USB cable from Ansible and power cycle your case.
  • Load up your presets off that USB disk! Note that some people have had problems with some USB drives, I’m still looking into this – if this procedure hits a snag you might want to try with another disk or two. Insert the USB disk with ansible-preset.json (must have this filename and be at the top-level of the drive) into ansible. press KEY 1 (on the left). the LED next to the USB port turns orange to indicate that preset loading is armed. press KEY 1 again and the LED starts blinking. Once the LED stops blinking (roughly 10 seconds), your presets should be loaded! If there was an error when loading a preset from disk, it will try to recover the module’s existing presets by loading them off an ansible-backup.bin file it creates on the disk. If you have any errors loading or saving presets please let me know and provide any of these files you can so I can do some surgery.
  • In the future you won’t need to do the "read > ansible-backup.hex and PM it to @csboling" part, because you’ll be able to save presets directly to the USB disk with a similar procedure: insert USB disk, press KEY 2 (white LED comes on), press KEY 2 again (white LED starts blinking - you can remember, say, “key on the right + white light means write” for writing to disk), wait for the blinking to stop. If for some reason there was an error, both LEDs will come on and stay on until you unplug the USB stick.

I realize that’s a little involved! Don’t hesitate to PM me or post on the Preset save to USB disk thread with questions. If you know you have any firmware version other than 1.6.1, it would be great to know what version, otherwise it’s probably possible to figure it out with a bit of guesswork.


Thanks! I can try to get to this over the weekend.

This is already beyond my skills and knowledge so I look forward to learning more!

1 Like


I just installed this new firmware and had some fun with it. Alternate notes and the ratchet implementation are a bit complex to understand at first but then quite interesting.

My thoughts/ideas for a first feedback are:

  1. As it is now the CV changes at the first of the possible ratchet sub steps, even when it is not selected/skipped. It would be great (but mirght be complicated) if the CV update would be delayed until there is actually a trigger. But, it still should be the CV that is associated to the active main step. If the note sequence has already moved on when the first ratchet sub step occurs, this should not be taken into account for the CV output till the next full step. I hope that was somehow clear? :thinking:

  2. I find the glide feature a bit hard to dial in for long term practical use and wondered if it might fit better if the the glide time is not fixed in steps up to 120 ms but, as the ratchet, stepped in relation to either the tempo or the note distance. As it is now it tends to just not really fit.

Apart from that and despite my usual skepticism towards too many new features and modes, I have to say that I really like this. :grinning::+1:

1 Like

Thank you for all your work with this!

1 Like

I can’t seem to find the additional toggle, is the page I’m supposed to be the 15th button on the 1st row?

Is it supposed to be the 1.6.1 version or will a new release be coming soon? Because I’ve just tried the 1.6.1 version and it doesn’t include the changes @csboling recently made.

1.6.1 is from last year, so I expect a new release is due.

Last year I worked on a feature sort of related to this. It was a per-track toggle that would only advance any of the parameters when a trigger fired: (Kria) Feature(?) trigger-step params

Wouldn’t that be the same as the implemented synchronize / standard sequencer function?

What I meant was, that the CV parameter is happily moving on but only gets read when a trigger occurs.

EDIT: Wait…no it’s not the same…sort of…:thinking:

The config page I’m talking about is the one from holding down key 2 on the Ansible panel, the one where note sync/loop sync are configured. On that page it should be a single toggle toward the left side of the bottom row.

I think probably it makes sense to group as many features together as possible before cutting a new release. In particular the preset saving feature is important for making updates make sense for people who’ve been using an older firmware version, but this is a big and error-prone addition that needs a lot of testing to be confident in its correctness before it goes in the official firmware. I’ve also worked on Ansible support for some new Teletype remote ops that would be nice to include, and would like to see if I can chip away at some of the known bugs in addition to adding and polishing features. So I think it might be a little while before an official update makes sense. However, the preset feature is implemented in such a way that you should be able to keep updating to new betas as often as you’d like without losing presets if you want to stay on the bleeding edge.

This makes sense. Delaying the CV change I think is pretty straightforward (basically set the DAC value when the trigger output is set high, rather than immediately when reaching an active trigger step) but keeping the previous CV value if it has already changed when the trigger happens seems trickier. I won’t have time to prototype this for the next several days but I can give it a whirl. Not sure if this is always the desired behavior or if it should be configurable, in which case it needs some UI.

This seems very useful, and may not be too hard to implement. In addition to off-panel configuration by Teletype, the USB save feature should also give us the ability to do some more persistent configuration by tweaking the JSON file, so that’s also an option for introducing some settings without cluttering the grid UI, though these would be a bit more of a pain to tweak. In particular I’ve been thinking that you could use this to load up a custom scale table if you want to use something other than equal temperament. Glide customization could also be done this way. Going this route would benefit a lot from some kind of PC program that would let you load up a preset file and graphically tweak it, rather than having to sift through >300KB of unindented JSON to find the setting you want.

This is awesome, hadn’t seen this thread. I would use it all the time. From the video (without looking at the code yet) am I understanding right that each trigger in a ratchet will clock the track? In combination with the ability to toggle gates on and off when ratcheting this seems super powerful. We would need to figure out where to put the UI. There is one extra column available in the section of the scale page that’s now used for TT clock enables + step direction settings, which seems like definitely the place that makes sense, but it seems like it might get kind of confusing with several different settings clustered in that corner.

Big thanks to everyone for all the testing and discussion so far!


Tbh I don’t remember. I’m pretty sure I implemented it so that it was actual trigger steps and not ratchets that would trigger it, but it wouldn’t be hard to modify it to use the individual ratchet triggers too.

Yea that is where I put it.


Is this commit part of the 1.61 FW? or a totally different branch?

These commits are in master now but an official (2.0.0) release has not been made yet (soon!). 1.6.1 was released April 2018. For the latest betas, changelog, and ongoing dev discussion see Ansible Development and Beta Firmware Discussion.

Hey @csboling, hope you’re well! Wanted to update on the latest firmware testing, my Kria/Ansible crashed again today, second time this happened on the latest and also one of the previous firmwares.

It would freeze up, all the gate lights would light up, none of the CV lights light up, but the sequence keeps playing though without outputing gates.

I tried to short press the preset button but it would change apps instead.

I took a video but didn’t upload as it’s too big for here, if you want to see, I could upload somewhere else.

That’s really interesting, especially that the sequence keeps playing instead of the app freezing completely – so the CV outputs are changing, but the gates aren’t? Or the sequence appears to be running on the grid but the outputs are all constant? Do you know what you were doing when this happened, like what page you were on or what parameter you were changing, were you working with a fast or slow master clock, did you have external clock or reset patched, was there I2C stuff involved in your patch? Definitely would like to fix this before release, I have some hazy ideas of what would cause this but it sounds like it might be a bit tricky to reproduce (and therefore to be confident that it’s fixed). @Leverkusen it sounded like you had experienced something similar?

1 Like