Ansible MIDI voice mode


#41

I did get one and currently using it to go norns ‘direct’ to PC / Ableton - to get midi outs from norns driving vst instruments. Works a treat. btw the device comes with 2 leads to do the above connection for example.


#42

I have a bit of a specific issue with the fixed MIDI voice mode… if @ngwese or anyone else could provide me with insight I’d be super appreciative!

I’ve been experimenting with using Ansible as a MIDI interface with a Keith McMillen BopPad (drum pad). The BopPad has four quadrants which I’ve mapped to the MIDI notes / CC channels of Ansible’s fixed voice mode and I’ve successfully achieved gate on/off and velocity through Ansible. However, Ansible is having some issues with retriggering.

The BopPad supports a Multitouch mode which allows a quadrant of the pad to be retriggered even if the quadrant is still being touched from the previous hit. When the BopPad is retriggered in this fashion the BopPad firmware does retrigger as it’s intended, however it keeps it’s “note on” message high which means the corresponding Ansible TR output stays high and does not send a new gate.

If I use the BopPad with my DAW and use this Multitouch mode the corresponding MIDI instrument will retrigger as it should even though the “note on” message will stay high. Even on Ansible the velocity CV of a given channel will change with each new retrigger in a Multitouch situation, but the TR still stays high. This makes playing with hand drumming techniques significantly more difficult, which is the core of my experimentation with this set up.

Would an alteration be possible to the Ansible firmware to allow the TR outputs to send quick triggers instead of gates in the fixed MIDI voice mode? Or perhaps a quick inverted pulse to retrigger yet keep the current gate high behavior intact? I cloned the Ansible git to see if I could make this alteration on my own, but alas I am not educated in coding and quickly found myself lost. I am aware this may be more complicated than it seems and is quite specific of an inquiry, but on the chance it is a simple alteration I am asking for help!


#43

This sounds like a really useful evolution


#44

Found this in the source code:

case eVoiceFixed:
active_behavior.note_on = &fixed_note_on;
active_behavior.note_off = &fixed_note_off;
active_behavior.channel_pressure = NULL;
active_behavior.pitch_bend = NULL;
active_behavior.control_change = &fixed_control_change;
active_behavior.clock_tick = NULL;
active_behavior.seq_start = NULL;
active_behavior.seq_stop = NULL;
active_behavior.seq_continue = NULL;
active_behavior.panic = &reset;
clock = &clock_null;
print_dbg("\r\n standard: voice fixed");
break;
default:
print_dbg("\r\n standard: bad voice mode");
}
}

I assume I could just add some sort of delay to change “active_behavior.note_on = &fixed_note_on” to “&fixed_note_off” after a certian amount of time… gonna experiment and backup my firmware first :sweat_smile:


#45

I think the biggest challenge to be honest would be the UI to enable or disable the trigger vs gate behavior. …will have to think about that.

aside: I somehow missed that the BopPad could be played with hands not just sticks - as a developing djembe player I’m now intrigued.

UPDATE: I don’t have the code in front of me but in order to implement trigger like behavior one would probably need to modify the callback function which is called periodically to process incoming MIDI data. If in fixed mode and in “trigger” mode one could check a variable to determine if an output was “high” due to a previous note on and take is low. Naturally one also has to handle the case of multiple noteon events occurring in the same polling interval but that isn’t too difficult. The trigger width would be multiple of the MIDI polling interval - if a longer trigger width was needed than a single polling interval then one could simply decrement a counter in the callback to count the number of intervals which have elapsed.


#46

Yeah UI to switch between triggers and gates does seem like it’d be difficult to implement. I’m going to try for a more “destructive” modification… & I’m also coming from the perspective of the djembe and so far applying that skillset to my synth via Ansible has been a lot of fun. I’ve developed a technique with the djembe where I mute the drum head with my hands as I play, hence my difficulty with this setup this far… but I’m working around it for the time being. I’ll make sure to post again if I get a suitable alternative to the current fixed voice behavior :+1: