Ansible Kria Feature Requests

No, that wouldn’t be the case. Changing the ability for a track to be clocked from Teletype is available in Kria itself, in the top left corner of the scale page.

If you have a command to clock one track in a Teletype scene and it’s not selected within Kria itself, the track still follows Kria’s internal clock. Having to include this in the I script would necessitate a new Teletype operator to specify which tracks should be clocked from Teletype, an effort that would also eat up valuable I script character limits.

The only downside to saving it within a Kria preset I could see is if a track is saved as being clocked from Teletype when it wasn’t meant to be / that scene isn’t running. This could be confusing to a user but would be easily remedied, and I don’t think it’s a mistake that could be made very easily.

Just my two cents. I would prefer it to be saved within a preset of Kria. .

I did not know that. Just thought it would be formal not good to save something to preset in a device that needs another device to be changed. Of course I see how it would be useful too. When it’s changeable from Kria itself I would not mind saving it in a preset - it’s like a Maths then that saves its cycle state during power cycles…
:smile::+1:

1 Like

My work around has been to switch to TT clocking in Kria manually, then use KR.POS to sync position, then enable the metronome. It works, but would love the ease of just saving the preset!

Build that saves TT clock enables: ansible.hex (247.1 KB - 3c70c51 - PR)

6 Likes

You’ve made my compositional life much easier!

Took sort of a stab at this and made it possible to select on the ratchet page which triggers you want to fire. So the ratchet settings for each note are sort of 4 toggle buttons rather than a fader for number of repeats ansible.hex (245.2 KB - db687c6). So far one thing that’s nice about this is that it doesn’t wind up taking any extra grid real estate or state memory - I can pack the toggles and the repeat counts into a single byte per step. Currently the number of divisions to use for a single step is determined by the highest toggle you have set, so you can’t really have rests at the end of a step, but on the other hand you can subdivide each note differently as opposed to having a global subdivision setting for the track. Some nice syncopation can be achieved.

10 Likes

Wow, coming back to this thread has blown my mind, cant wait to try out the new directions.
The alt ratchet mode sounds super interesting too!
One feature I’ve been really wanting to see is having the octave page set in the middle so you can go up or down in octaves instead of just up. To me this feels more useful then tuning all sound sources to your lowest desired octave. It would also be great to have the octave rage extended to 3 up and 3 down. Anyone think they would find this useful and possibly implement it?

Part of the problem is that Ansible is (on a hardware level) set up to output CV from 0 to 10V, so doing this would involve the strong, kinda weird choice to make the default CV output 3V.

1 Like

ah right, well then is it possible to have ansible save its state so i could make the octave page always start up at 3v?

This is a neat idea, so since the hardware has unipolar CV outputs maybe you would be able to set the “base” output voltage to +2 octaves (volts) and then work with +/- 2 octaves from that center point rather than +3 octaves above the current base voltage.
I was also thinking about how to have rests at the end of a note step for the selectable ratchet feature, as well as some other posts earlier in the thread about having more probability options, and I had a possible UI idea for these kind of “range” settings.

So to select a loop for a Kria parameter you have a three-key gesture: loop mod key, loop start point, loop end point, and this selects a loop range horizontally. Similarly you could have a three-key gesture to select a range vertically, and the “vrange” (naming things is hard) could have a different meaning depending on the parameter page. So for instance

  • ratchet page: selecting a vrange selects number of subdivisions for the note, whereas individual keys are toggles for the individual gates within the ratcheted note. The start of this vrange would always be the first gate for the note (third row from the bottom).
  • note page: maybe range of notes within which to randomize? centered on the selected note
  • octave page: selectable octave range. This vrange would affect the whole track instead of being a range-per-note. It basically would just apply an N-volt offset to all outputs equivalent to the octave corresponding to the range midpoint (maybe need some way to round if you select a vrange with even length), and let you choose octaves relative to that offset rather than relative to 0V. I think this could accomplish the octave master shift per track feature, while also allowing you to have notes pitched a couple octaves lower than the rest of the sequence.

Currently doing a vertical gesture like this sets a loop to a length of 1, but you can also achieve the same thing with: hold loop mod, press loop start, release loop mod. However, you also need a way to set a vrange length of 1, which seems like it needs a similar gesture. So maybe the top row (except for on the trigger and duration pages, but I’m not sure yet what if any vranges make sense for those) would be reserved for this when the loop mod key is held – hold loop mod, hold vrange start, press top key to set a vrange length of 1.

This would be a pretty substantial UI addition that I am presenting without having really thought through its consequences, its feasibility to implement, its cognitive load, or other important considerations I have not thought through it enough to think of. I just had been puzzling for a few days over UI options for a couple of features and with the “octaves below the root” suggestion it felt like something clicked.

6 Likes

@csboling - just coming back to this thread and saw what you have done :slight_smile: thankyou so much for looking into some of these feature requests. I made some of these requests along time ago, and so happy they are being looked at! The per track tapehead direction changes, (and previous independent clocking/track), was so I could do more phasing and fugue machine style sequencing. The global octave shifting per sequence / track was also to help with that style and particularly for live performance instead of using an octave switch module.

2 Likes

Wow, thank you @csboling for doing this, its definitely a necessary update!!!

I have just downloaded and installed this latest version, the all the direction changes work, the TT clock also works.

Though all the Gate outputs are not outputting anything and on the Ratcheting page, I don’t see the usual lights to select the ratchets, I see a blank page with the second row having very faint random light movements.

Am I the only one experiencing this?

Thanks again!

Video for reference to the Ratcheting page.

Hm, yeah that’s not right. Curious if the command you used to flash the firmware is

dfu-programmer at32uc3b0256 flash firmware-name.hex --suppress-bootloader-mem

because (recent?) Ansible actually uses a at32uc3b0512
chip which has more memory, and I’ve had problems getting an incomplete firmware backup using the at32uc3b0256 device ID indicated in the docs (I should really make a PR for this). I generally have not seen this cause problems flashing firmware though, just making backups. Or maybe I goofed and uploaded a bad firmware? I’ll double check the file here in a minute. Really weird that the second row would be lit on the ratchet page, this seems almost like something got corrupted.

1 Like

And weird that the gates stopped outputting.

Yes I did use the at32uc3b0256 command, could this be the issue?

Can confirm this was broken, uploaded a new version in that post. I got fancy at the last minute and tried to pack the state info more densely to save memory – I’ve just reverted that for the time being.

2 Likes

Some thoughts in your thoughts.

The idea of a master octave shift on a track (i.e shifting all notes together while keeping their current octave in mind) would be a very useful feature for performance and easily placing a track within a composition. I feel like some simple gesture to accomplish this would negate the necessity of something more complicated like setting the mid-range of a tracks octave, having to remember what output has what voltage offset set with some other parameter, etc.

Also the idea of the “vrange” is interesting, especially as a way to choose ratchet subdivisions (!). But it’s worth noting that when currently using the loop modifier a horizontal range is selected per column rather than a specific key (except on the trigger page, since multiple tracks are present).

For example, if I want to loop between note 2 and note 5 on the note page, I hold the loop modifier, then select any button in the column of note 2, then select any button in the column of note 5, to set the range. If you were to add a “vrange” into the mix, how would that be implemented? Would the “vrange” only be active of choosing within a single column? Would you set horizontal and vertical range loop modifiers simultaneously? Would horizontal loop modifiers only be implemented if selected on the bottom row of a parameter?

1 Like

Right, this would be unchanged. I think the only change to the existing UI would be how it’s interpreted if you select start and end points in the same column – currently this sets a loop length of 1 but you could do that by just pressing a loop start key and then releasing the mod key, which currently works also.

Yes to vrange within a single column, I think if the loop start/end columns are different it should keep the current behavior. No to changing both at once, that seems like it has a lot of potential for being confusing.

I think maybe I should just prototype this for the ratchet select feature and see how it feels. Having a simpler octave shift also makes sense, maybe with the keys in the top row on the octave page – wondering if maybe that should change the active range of octaves so that if you transpose a track up you get the option to lower the octave selected for individual notes.

1 Like

Ok! Works now I think :slight_smile:

1 Like

Letting the “root” row float like this made it feel pretty cramped to have any kind of ceiling on the number of octaves to transpose, so you have a full 0-5V range available for both the track-level octave shift and the individual note selection.

Here’s a video of the ratchet selection too. I think being able to choose the total number of subdivisions per note should be doable and would be great but I’m still unsure about the UI. By comparison this is a relatively small change to the existing UI, though it does mean you have to press extra keys to get the behavior of the existing version.

Build: ansible.hex (313.3 KB - a773336 - 2019/05/22)
This build includes both features above.

In this build and builds I post from now on I’ve also included an implementation of this feature, details here. I’d love to get some beta testing of it, and that means carrying over any presets you’ve got saved and loading them up in the new firmware! Here is a Python program you can use to convert an ansible-backup.hex dump from an existing (1.6.1) firmware, or anyone who wants to try this is welcome to PM me with your .hex file and I’ll send you back a .json file you can load on a USB stick and import after flashing the new build. If you’re currently using an older firmware than 1.6.1, let me know what version and I’ll add support for it to the script. Documentation on all this is pretty lacking at the moment, the Preset save to USB disk thread is probably a better thread than this one for questions about this feature.

8 Likes