CORE: Event Delay

Event Delay to use for "rare" Events, not streams.

(9 Votes)
3.2 (Updated 6 years ago)
18.4kB
September 18, 2018
Reaktor 6

DESCRIPTION

Event Delay 3.2
Mark Wadewitz October 2018
--------------------------------------------------------------------------------------------------
Changes in 3.2:
I´m so sorry that i have to update this macro again!
I encountered troubles with the Core Compilation in a more complex Core Cell. The Compilation did not stop anymore. This is solved now.
- Incoming Events are latched by clock in first place now. This only matters if t = 0 AND an incoming event is asynchronous. This asynchronous event will be delayed until next clock tick instead of being bypassed instantly. That´s all.
--------------------------------------------------------------------------------------------------
Changes in 3.1:
- a value quickbus was accidentially set to Integer, not float.
- Integer version of the Delay added.
--------------------------------------------------------------------------------------------------

This Event Delay takes minimum RAM at maximum possible Delay time.

RESTRICTIONS:
- not made for fast event streams (see below)
- only last arriving event/value per sample clock tick is processed (don´t use it for iteration events!)
- the delay time should NOT be changed while the delay buffer holds values!

ADVANTAGES:
- low RAM load
- low CPU base load
- nearly endless delay time

PROPERTIES:
- max. Delay time: 2^31 samples
=2147483647 samples
=12.42 hours @ 48kHz SR
- Init events are processed like normal events.
- If t = 0, incoming events will be output with next clock tick.
- the array sizes are set to 64. This is the max. number of events/values the array (Delay Buffer) can hold at a time. Increase both Array module´s size to hold more events or decreasa to save some very little amount of RAM. The set size must fit a number of 2^n.
I.e: if the buffer should hold at least 100 events, set the Arrays to 128. If you only need 1 event at a time to be delayed, set both Arrays to 1.
- if the delay buffer is full, new incoming events/values are rejected. An overflow messsage could be taken from the over msg outport (val is 1 then).

COMMENTS  (3)

Thala Estra
6 years ago
vielen lieben dank!
herw
6 years ago
many thanks :)
Jonathan Canupp
6 years ago
Very clever :)
now