Posted 49013cd in the top post. JF I’m the most uncertain about. Since it accepts a velocity parameter for the JF.VOX command I decided to map this to Kria duration, and am not sure I got the value range right, so it’s possible you need to crank up the duration settings to get any sound out of JF? Also not sure if this correspondence makes sense since I have unfortunately not used a JF.

The UI is now as follows:

  • In any grid app, press the preset key. In the center of the third column over, there are enable toggles for I2C followers. Pressing any of these will enter leader mode and Ansible will no longer be able to receive Teletype I2C messages. From top to bottom the default followers are: Just Friends, first TXo, second TXo, ER-301. Disabling all followers will exit leader mode and return to follower mode. This setting is saved to flash and loaded on startup.
  • Hold the lit bottom key of this column, and touch any follower toggle. You are now viewing the configuration page for that follower. Touching a different follower toggle will select that follower instead. Touching the bottom key again will exit follower configuration mode and return to the main preset page.
  • The top-left 5 lit keys are a master octave shift for the follower, in analogy with the Kria track-wide octave shift added to the octave page in 2.0.0. This is handy for transposing up the base frequency of notes sent to that follower, e.g. the default TXo setting is +3 octaves since the lowest note TXo can output is C_-1 (8.18 Hz).
  • There is now another column of 4 lit keys to the right of the follower toggles. This is a track select. By default all Ansible CVs/triggers are sent to the first 4 voices on a given follower, so all 4 toggles are on. You can disable one or more tracks to direct Ansible not to signal those followers when those tracks trigger. All primary outputs on the Ansible panel remain active, unaffected by this setting.
  • The right side of the follower configuration page is for configuring what messages are sent to the I2C followers, in case you want to reprogram some slots for different followers, or send messages other than gate/CV to followers.

All follower-related settings are saved to flash when preset mode is exited.

5 Likes

:exploding_head: what an amazing idea. Ive been using Just Friends driven by Kria with Teletype and have had trouble figuring out a way to use the duration parameter.

I would be happy to test this build as well, will give it a shot tomorrow… and I gotta say it would also be suuuper cool to be able to read the duration parameter in Kria as a value in Teletype since it doesn’t measure gate length.

1 Like

This sounds useful, perhaps KR.DUR t p (track, pos) in milliseconds. I’ve been trying to think if there’s a good way to consolidate all the Kria parameters you might want to know into fewer ops, but probably you mostly want like duration, final computed note, maybe to know if a given trigger position is active. For the time being with Teletype 3.1.0 you should be able to measure gate length:

# I
SCRIPT.POL 1 3

# 1
IF EZ STATE 1: X TIME
ELSE: TIME 0

SCRIPT.POL 1 3 or $.POL 1 3 configures the polarity of trigger input 1 to 3 (execute on both rising and falling edges).

2 Likes

Quick question as my Ansible is out for delivery - does the Ansible have any response to Arc button presses, i.e. the older push button encoders?

It doesn’t, the monome device interaction code receives the messages for Arc key presses and Grid tilt but ignores them. You could pretty easily modify the firmware to do something with these if you have a use case in mind.

Anyone know which firmware the newly shipped Ansibles have loaded on them? (mines out for delivery today! woohoo!)

Edit: Plugged it in and loaded it up. It seems to be loaded with at least fw 2.0.0

Apologies for gushing, but I just wanted to say a huge thank you to all the work on Ansible 2. It really is an extraordinary leap forward, making a deep module waaaaaay deeper (will I ever find the bottom of the rabbit hole?). What’s so clever is that you’ve still managed somehow to leave the interface completely familiar to users of the old version.

What an inspirational musical tool!

(Also: thanks @tehn for the repairs!)

10 Likes

Would be nice to have Ansible’s buttons extended to the Arc buttons, so that menu diving could be done on the Arc itself without having to touch Ansible.

1 Like

Sorry, this would not be possible without basically rewriting the code for Arc apps. Changing apps is really kind of a mode switch that changes what code gets a chance to handle all device input events and set the LED states on the device.

Give this a shot, no idea if it works: ansible.hex (361.4 KB)

Here is the code change (to libavr32) if you want to pursue this, I don’t have a device to hand and I don’t know if this is the behavior everyone would want for their Arcs with pressable encoders.

Or you could get into firmware hacking! It is possible, it’s just a pretty nontrivial change. Probably you would want to consolidate the encoder, refresh, and clock handlers into a single function that would dispatch to different application logic for each ring. The simplest thing would be to maybe just have an ansible_mode_t arc_ring_modes[4] indicating which app to run on which ring + output pair, then this array is what you could store to flash/JSON, leaving the existing app state as-is. There are some other design questions to figure out, like the ring assignment UI, or how I2C would be handled since currently Ansible listens on different addresses depending on which app you switch to.

Thanks - this definitely worked for levels, encoder 1 push = button 1 push. No response for encoder 2, and doesn’t seem to work at all on cycles. I don’t know C so I don’t think I will get very far if I start poking around in the code.

struggling to update my ansible’s firmware. this is the first time i’ve tried doing this since i got a touchbar macbook pro with only USB-C. i tried two different USB A-A cables with an Aukey A->C adapter and also tried the USB-C to A cable that came with the OP-Z and this is what I get each time:

i’m holding the button next to the USB port down as i power it up. tried it in a rack power by a tiptop uZeus as well as in my Intellijel 7U. i’m sure it’s something stupid that I’ve missed, but any help would be appreciated!

try connecting the USB before powering up the modular

yep… i’m doing that!

update: used a USB A-A cable with this dongle and it worked

1 Like

Thanks for reporting this issue, I have a similar laptop, hoping my current USB adapter works tonight when I update. @tehn thanks for the speedy shipping for the A to A :v:

Found a bug… seems that when setting a track to random (on the scale selection page), the last step in the loop never gets selected. I made a triad on the notes page, looped it (3 steps) and set the track to random and only the first two notes are ever chosen. I increased the loop to 4 steps and then I heard my 3rd note (but never the note for the 4th step).

3 Likes

Whoops, nice catch. Build in top post (f9d22e3), PR.

1 Like

cool… so what’s the procedure for saving your presets before updating?

https://monome.org/docs/modular/ansible/#usb-disk-mode Not mentioned here (currently): the drive needs to be FAT formatted.

I tried to run Ansible as a leader with only Just Friends on the i2c bus as a follower, but was unsuccessful using them together in this configuration. Ansible locked up as soon as it reaches a trigger in Kria. Once I was able to recover Ansible with a power cycle, however it was still unresponsive three other time I power cycled and had to reflash the firmware to get it functional again.

I confirmed I was able to send commands via i2c with Ansible -> Teletype -> Just Friends after I failed to get Ansible working as a leader.