Ansible for JUST midi/cv conversion


under my hypothesis it has less to do with imprecise playing and more to do with not using a VCA/LPG or similar to shape your sound into “notes” :wink:


Oh i had the same going on with lpg. Havent tried with envelopes tho. Will do that. I undertsand what you mean now.


Mmmmh yes actually… the sampled Oscillator (mangrove) had its own vca, that supports your suggestion!


I’ll caveat this with it’s been a lot time since I’ve looked at the code… but from memory:

I believe it is just doing last note played priority (and that probably isn’t in the manual). What I don’t recall is how it handles the gate output when the notes are interleaved in mono allocation mode. For example if the MIDI events are:

  1. note on A
  2. note on B
  3. note off A
  4. note off B

…the device on seeing event 2 can change the pitch CV but it has no idea how long it will be until event 3 (note off for the first note) arrives. The code currently never lowers the gate output if the notes being played overlap.

Since the gate always stays on (in mono mode) that leads me to believe what we are hearing could actually the response time of the CV DAC (digital to analog converted) itself. All DACs take some amount of time to change their output from one voltage level to another. The oscillator being driven also plays a role in the response time, if the oscillator is digital then it will have a ADC (analog to digital converter) on its pitch CV input. An ADC used on CV inputs is likely to be polled at some rate (say 1kHz) and it takes some small about of time to do the analog-to-digital conversion after being asked to. This is a long winded way of saying that I believe there are technical reasons you are finding in more difficult to get a satisfactory progression of pitches when the oscillator is digital (like the disting).

Using an LPG or envelope to shape the amplitude a bit more will help mask the transition from one pitch to the next when the notes don’t overlap but given that gate always stays high if notes overlap then it won’t help much there (since the envelope won’t get re-triggered).

Another factor possible at play is the rate at which then MIDI data itself is being processed. Apologies for the technical digression again but here we go. The way USB works is that the host (ansible in this case) has to periodically ask the attached device(s) if they have any more data. A USB device buffer a small amount of data while waiting for the host to request more.

Currently the code checks for MIDI data every 8 ms. It is possible that in this case multiple MIDI events are getting bundled up together and the ansible is more or less handling them all at the same time which could possibly be the source of the jumpy pitch output.

I think the first thing to test will be speeding up the rate at which MIDI data is handled and seeing if that has a positive effect. Unfortunately I won’t be able to generate a modified build of the firmware for several days.

…thank you for making a recording. It really helped me get a sense of what you were reacting to.

I’ll follow up with a firmware mod to test as soon as I’m back in town.


Awesome. Yes all of that makes perfect sense also that i could only mask it.
So latency wasnt that far off. And yes both Just Friends and Disting are digital. That it worked with the mangrove sample in disting isprobably either by the masking of its vca or the minimalistic load of using just one sample pitched 1v/oct. hmmm on the other hand the dac conversion would still take place.

Happy you look into it and no rush at all. I probably wont dare to flash ansible without an Earthsea port on a new firmware :slight_smile:


Oh and just for detail. When i played a multiple samples drum kit via ansible midito disting, i had no obvious tracking issues. Clear cut off.
I am not techy enough to see this in relation to the conversion latency and how this could differ from notes. But this would lead to the constant gate high again.

Just thought i should mention


I’m experiencing the same thing with Ansible’s pitch out reverting to some constant note each time I release a key - I usually have to hit the panic button every 10 minutes or so to fix it. I play a lot of rapid sequences (like tapping guitar solo style) - not sure if that’s related (if it’s being overloaded with midi info). But once it gets in that state, it’s pretty much stuck that way until I hit button 1.


I wonder: does the note that you revert to change at all? if it’s the same one, maybe Ansible is like “no data? time to go to 0V”, otherwise it sounds like a stuck MIDI note.

(again, just hoping my spitballing is marginally useful)


That’s a good point, I usually quickly tap the panic button, but next time I’ll try to observe what pitch it’s falling back to. You may be right that it’s a stuck MIDI note, although one without a corresponding gate :thinking:

EDIT: I do know that it’s not 0V, or at least that wasn’t what I was observing yesterday evening.


Has anyone had any luck using Ansible with a iConnectivity mio4? It looks like it should be ok but I can’t seem to get them to play nice together. Any tips?


I haven’t personally tested but I would expect it to work. The mio4 has caught my eye as well. Actually @mlogger might know - I believe I’ve sean him use iConnectivity gear in a video.


Yes I used an Iconnectmidi2+ hooked upto an iPad running various sequencer apps


I just found reproducible steps to the lockup issue:
Move mod wheel and pitch wheel at the same time while holding a note

It’s not 100% but it’ll lock up about 1 our of 3 times when I do that. Can anyone else reproduce?

I’m using a microbrute as my controller


I haven’t confirmed it myself but it does sound like a bug. I’ve opened an issue on GH to track the investigation.

Hopefully I can squeeze in some time to see if I can repo it.