So, the virtual DLD is actually the firmware for two Looping Delay units. We did this because the LD has the stereo feature and the code had be re-written more recently in C++ so it was easier to port.
Here’s the manual:
So on the LD, the memory clear is done by holding down the Ping, Rev and Hold buttons, and keeping them all down.
It actually works on the virtual DLD, but the problem is the act of clearing the memory is a CPU spike and the patch stops. On the hardware version you just hear an audio glitch – but on the virtual version it spikes the CPU and the patch stops.
It’ll act more like hardware when the feature to allow CPU > 100% temporarily is merged in. Clearing the memory buffer is meant to be an intensely harsh operation – sort of like a Panic button. Normally you would just set Feedback down and let it fade out.
The total delay time for and LD (which is each side of the virtual DLD) is 87 seconds in mono mode and 43 seconds in stereo mode. The delay buffer is 8MB per side, so 16MB per virtual DLD module.
The hardware DLD has twice that memory (and only functions in mono mode), hence 2:54 = 174 seconds.
I don’t think there’s a reason we can’t make the virtual DLD have the same time as the hardware DLD — module loading time will be longer since it has to clear the buffer, and also of course memory usage will be higher (approx 12% of total memory used).
Another difference: 16-bit mode is always enabled for the LD, and hence the virtual DLD. Making this an option would be more complicated – it can’t change while the module is running, but it could have an AltParam for the mode you want it to start in the next time you load the patch. So if you set this in VCV, then when you loaded it in MM it would be right. But if you changed in it MM then it would have no effect until you reloaded the patch.
If you map a button to a knob, you can just turn the knob a little to the right of center to “press” it, and then turn it back to a little left of center to “release” it. But, yeah, mapping buttons to knobs in general can be done in one of two ways: 0 = off 1 = on; or 0->1 = toggle. The virtual DLD does the latter.
With the button expander, it works naturally: tap a button and the Reverse toggle state, just like it does on hardware.
If you needed a knob to control Rev or Hold like you said (knob down = off, knob up = on) then you could map the knob to an Atvert2 or DualAtenuverter or something, and feed the output into the Rev/Hold trig jack. Then set the AltParam for that jack to Gate.
The button combo doesn’t apply to the virtual DLD, but it should save your ping time when going from VCV to the MM. I just tried saving a simple patch with two DLDs, each one tapped with a different tempo, and then I loaded it onto the MM. I ran my VCV audio output to a (hardware) scope and also the MM’s DLD clock outputs and compared. The clock outs for VCV and MM match exactly.
Ah, yes, that’s only in the LD!