Today I tried to connect my brand new Anushri with a Doepfer Dark Energy synth. And there is something I don’t understand about the Anushri Gate out.
In documentation: "Gate out … when the envelopes are triggered (… Gate in triggering or from MIDI note on/off).
I’ve connected my DE gate in to the gate out of Anushri.
When I play with the keyboard, DE and Anushri play nicely together. But when using the internal sequencer, only the first note is played on DE and then nothing.
Maybe I didn’t get some point about the Anushri gate out, but if I do the same kind of setup using a x0xb0x sequencer, it works well.
I had a look in firmware sources. This behavior seems to be expected, and I don’t understand the logic behind.
if (voice_controller.voice().gate() &&
out |= _BV (OUTPUT_GATE);
As far I understand, gate() is true when VCA enveloppe is in A, D or S state.
retriggered() return a boolean indicating that a gate On event (for example after a NoteOn if not in a legato) has been raised while gate was already On.
The fact is if a serie of NoteOn is received, gate will be reset on Anushri. But gate will never be triggered on Gate OUT VC connected device if VCA release time is too high to fall between two notes.
For me, this explains why a sequence play well on Anushri, but make my Dark Energy fall asleep after the first note (not nice if I want to use it as sub oscillator source)
No, the behavior is independent of the envelope times - checking the envelope state is just another way to check whether a note is held or not…
Here is what happens:
- The sequencer is playing a note -> Gate is high.
- A new note arrives in the sequencer.
- Because there is no notion of the of “gate length” in the current implementation of the sequencer, the gate is still high when the new note arrives… So we need a way of temporarily bringing the gate down to mark the transition between the two notes on the gate out. This is where retriggered comes into play. For one short moment, equal to a refresh cycle (1 / 4900 second), retriggered() will be true, and the gate out will be low.
- The next refresh cycle, retriggered() will be false and the gate will be high again.
So retriggered() is responsible for bringing the gate low between consecutive notes from the sequencer. I’ve just checked it on my scope
I think the problem with the Dark Energy is that maybe its gate detection circuit has some capacitance, so the 200µs delay during which the gate gets low is to short to cause a trigger of the envelopes.
If other people report the same problem with other synths, I’ll change this behaviour. How to do it? replace the retriggered_ variable by a counter ; set it to 10 on a retrigger (to get a 2ms gap in the gate), and replace ClearRetriggerFlag by a DecreaseRetriggerCounter.
Hum, ok, I see. Gate is set +5v if gate is on (using VCA envelope state as a check). Except if retrieggered is true, in this case, Gate is set 0v, only for one loop (due to Retriggered flag reset just after). This part of code was confusing to me the first time I read it. Now it’s clear Sir
I’ll try the counter hack this WE. I want my Anushri and my DE to be friend
DE: Speak slowly, I can’t understand you
Anushri: Come on, I’m not that fast
DE: Speak slowly, I…
Anushri: Okay… Damn. I need a patch…
Ok, I took some time to create a custom firmware implementing the idea above. It works well, DE and Anushri are good friends now. Thx pichenettes
I’ve attached the patch and the custom firmware, if someone need (released without ANY warranty, I’m not the droid you’re looking for).