When chaining events (we can chain up to 4 EVENT_* controls) a delay may need to be inserted between to operations to allow the receiving midi device time to react.
http://discourse.midibox.org/t/topic/17528
The idea is to forward the event to an EVENT_DELAY which in turn forwards to the next control in the chain. The EVENT_DELAY would postpone forwarding for a duration of value=milliseconds. If the EVENT_DELAY is re-triggered (i.e the forwarding control changes again) during an active delay, then the delay period restarts, guaranteeing a minimum delay period from a control change to the forwarded event.
Here is an example (ignoring the possible significance of the order the EVENT_ definitions)
EVENT_ENC id= 1 hw_id= 1 fwd_id=DELAY:1 fwd_to_lcd=1 chn=1 type=ProgramChange
EVENT_DELAY id=1 fwd_id=SENDER:1 value=50
EVENT_SENDER id=1 type=SysEx stream="0xf0 0x00 0x20 0x33 0x01 0x00 0x30 0x00 0x40 0xf7"
In the above example, the effect is that the Sysex dump request only happens once the ProgramChange selection has “settled” for at least 50ms.