There is a tuning interface for grid in 2.0.0 that will let you (theoretically, laboriously) correct for differences between outputs in software. If people have other ideas for control schemes you would prefer for adjusting the tuning I’m interested. Probably the smoothest interface would be to map the outputs to arc rings and let you dial in exactly the offsets you want (although you may wish to adjust intonation as well as absolute offsets for each output), but ideally you would be able to access this functionality without needing particular devices connected. It would be possible to implement something to let you load tuning over I2C, for instance, if this is something people would find useful.

Interesting, I can’t reproduce this in the 2.0.0 release build, glyphs are preserved along with presets after I long-press a preset slot to save, then re-enter preset mode or reboot. Are you using a 4-step varibrightness grid? I don’t think I ever modified brightness levels on the preset page but this might need adjusting.

A quick update:
TUrning on and off maintain the tuning as expected.
It is in the long run that ansible lose it, in the sense that tuning is consistent between the different channels; it is just an issue if you use it with another sequencer or cv interface.
In my case CVPal is very stable but ansible is not, if I tune ansible to have 1.000V at C1, I always end up having C1 at 1.0006V to 1.0010V.
My strategy so far is never exchange oscillators, what is controlled by ansible remains with ansible, same as for CVPal.

This is just an heads-up in case is possible to resolve this in one way or another

Hello @csboling,
I might have found another bug, maybe, in the official release 2.0.0.
When having note sync on and loop sync track, I cannot have the same loop lenght for every parameter of the track.
Track behaviour is the same as loop sync off in my case.

I can’t reproduce this, can you confirm that note sync (square glyph, offset 2 keys from the bottom and 2 keys from the left, when key 2 is held) is engaged rather than note div sync (square glyph, all the way in the bottom-left, when key 1 is held)? If so can you post a demo video?

This morning t works. Sorry I might have done something wrong yesterday evening.

New build (f6a464f) in the top post with some bug fixes (listed next to the build) and improvements to I2C leader mode. Notably: the Just Friends part works now! So you can control Just Friends, a single TELEXo, or ER-301 from any (?) of the Ansible apps, although you need to use a grid to configure it. Note that for this to work you also need some device providing I2C pullup resistors (Teletype, crow, or a powered I2C busboard) since Ansible is not wired to supply power to the I2C lines.

To configure follower mode, go to the Preset page on any grid app (tap the key by the USB port). The left column is still your preset selection and the right half is for drawing glyphs, but the 3 keys in the middle of the 6th column are follower toggles. Switch these on and off to choose which devices Ansible should send note messages to. From top to bottom: Just Friends, TELEXo, ER-301. Toggling any follower on will switch Ansible to leader mode, and it will no longer respond to I2C commands from Teletype or crow. Toggling all followers off will return to follower mode.

Hold the bottom key of the 6th column and tap any of the follower toggles to access the follower configuration page. You can now pick a different follower by tapping any of the follower select keys.
In the (now much simpler) follower configuration page:

  • Touch the bottom key of the 6th column to go back to the normal preset / follower toggle view.

  • The bottom left 4 keys (same as the Kria track selects) are track selects for the follower. You can decide which of Ansible’s gate/CV channels should send an I2C message to this follower, so you can map 2 voices to Just Friends and 2 voices to ER-301, etc. By default all channels are sent to all followers.

  • The top left keys are for octave-shifting all pitches sent to the selected follower.

  • The top right keys are for selecting different modes the follower supports.
    For Just Friends, modes from left to right are:

    • When any Ansible trigger fires, select the next available voice. Think JF.NOTE.
    • Ansible’s 4 channels are mapped to the first 4 voices of Just Friends. Think JF.VOX.
    • Ansible’s 4 channels will trigger the first 4 channels of Just Friends - you can use this with Shape mode to trigger envelopes from Ansible apps instead of notes.

    In all Just Friends modes, the Kria duration parameter is used to determine the velocity when striking a note or trigger.
    For TELEXo, modes from left to right are:

    • Use TXo’s CV outputs as enveloped oscillators, with oscillator pitch controlled by the active Ansible app.
    • Use TXo’s outputs as gate/CV pairs, mirroring Ansible’s outputs.

    ER-301 doesn’t currently have any alternative modes. I also have no idea if it still works after overhauling the code for this feature.

Hope people find this useful and you’ll report lots of bugs! I’ll admit my primary use case for this is controlling voice modules from the grid apps, but it should work roughly the same for every mode on Ansible. I’m interested to know how well it works for Arc apps and midi apps, and if there are other parameter mappings that make sense here - sending midi velocity info to Just Friends seems like one obvious use case, but I have not implemented this.

23 Likes

Awesome :slight_smile: looking forward to trying this. Thank you!

Oh my goodness! What perfect timing… my Just Friends arrives this weekend. :pray:

3 Likes

Found several issues with CV/gate mode on TXo, and with how octave shifts for followers were being calculated. Recommend updating to d3e9d6b in the top post if anyone grabbed the previous build already.

Would still really love to do this directly with Teletype, any idea how easy it would be to implement this function as a Teletype op?

This is awesome, been playing with it tonight and love being able to jam with just ansible and JF. Ansible Earthsea awesome only can’t do sustained notes by holding unfortunately, regardless I’m loving this update really solid fun, makes me feel like I can make a really creative system in extremely few hp… if only more voices would support i2c!

Ah right, yes it sounds very useful to be able to read the current duration value whenever you’re just using Kria to provide triggers and using Teletype to generate gates. Ansible (676e871) + Teletype (bc4c877) builds in the top post add support for KR.DUR x to read duration. Value is in milliseconds and so may need rescaling to pass to Just Friends.

Good catch, I’m realizing now you can send JF.NOTE 0 0 when a note is released and Just Friends will release the voice that has been held the longest. Fixed in the top post. Note that this will also only work when Just Friends is in SUSTAIN mode.

6 Likes

You’re a champion :slightly_smiling_face:

Thanks for this. I’ve figured out the tuning (I didn’t get deep enough into the octaves, if that makes sense) and all seems to be good. As for the preset lights, I have the newest version of the grid.

Another question regarding newest feature of ansible as i2c leader to work with jf and others: can I just connect to crow to provide pull ups? Currently I have ansible, crow, and jf. Crow and jf are connected via ii. Sounds like I could just connect ansible to crow to utilize new functionality?

Yes, this should work! I believe that prior to crow 1.0.2 you had to explicitly turn on pullups but now they’re on by default, so you should just need to hook it up.

1 Like

Playing JF polyphonically straight from the grid is ridiculously great. And the interface for setting it up is so very well thought out. Thank you!

1 Like

Hmmm… after playing with it a bit more, I seem to be having some trouble getting Just Friends to reliably switch into and out of the polyphonic “Synthesis” mode using the grid and ansible. Should it switch in and out depending on the follower mode? It seems like it sometimes gets stuck in one mode or another irrespective of what I do on the interface (and even stays there on power cycling). Can’t quite figure out a pattern of behaviour to reproduce it unfortunately.

Also I’m finding that if I press the bottom left button in the configure page (to toggle off JF for the first voice, for example) it selects the 8th preset and drops back to the main app. This seems to happen with meadowphysics and Earthsea but not Kria.

1 Like

Thanks for testing! I’ve posted a new build (d1b2017) in the top post.

Yes, it’s intended to switch to JF.MODE 1 (synthesis mode) when you select either of the first 2 JF modes, and set JF.MODE 0 for the third mode, since that basically sends normal velocity triggers to the first 4 channels of JF. However, I found that it was not correctly setting JF.MODE 0 when toggling the JF follower off - this is fixed. I believe JF is never in synthesis mode on startup, but Ansible may set it immediately on a power cycle because it is part of Ansible’s flash state. Possibly there should be an i2c panic button to clear all followers and disable synthesis mode?

Oops, good catch. This is fixed in the new build.

The other thing I noticed is that in fixing SUSTAIN behavior for Earthsea, this made it so TRANSIENT mode would only ever activate every other voice – this is because sending JF.NOTE 0 0 causes JF to allocate a voice with velocity 0. This is fixed in the new build but the consequence is that in SUSTAIN mode, when you’re not in Earthsea (I’ve special-cased Earthsea for now), notes are never cancelled and will sustain infinitely. I don’t know if this this fine or if there should be another toggle for JF to decide whether note-off events should be sent or not? Of course, as soon as you have a couple tracks out of phase, you are likely to wind up activating all voices anyway.

One more thing with Kria that I meant to draw attention to in these betas: I’ve included a possible fix for a timing issue that commonly affected note durations and trigger ratcheting when completely stopping and restarting an external clock in conjunction with a reset. This issue and this I believe are related to this. Duration and ratchet timing relies on Kria measuring the incoming clock frequency, so with a long time between clock edges it would guess wrong for the first clock. The way the fix works is: when resetting the playhead, always keep the previous measurement of the timing between two rising edges. I’d love to know if this fix is sufficient for people who’ve had problems like this with Kria, and some general testing to find any unintended consequences of this change.

2 Likes

Brilliant - thank you! That fixed the problems for me.

I think it would be good if you could clear all the sustains when switching apps on the ansible and (crucially!) when disabling follow mode. I’ve ended up with stuck notes in Just Friends that stay indefinitely even across modes on the module and only clear when I go to Earthsea and mash some keys :-). But while I’m within an app, the current sustain implementation seems fine to me.

Thanks again for adding a whole new dimension to my system. :pray:

1 Like

Really great to be able to access JF through ansible ii. Seriously, thanks for this @csboling.

2 Likes