ramp

Author: Smashed Transistors
License: LGPL
Github: tiar/lfo/ramp.axo

Inlets

bool32.rising reset

frac32.bipolar rate

frac32.positive start

Outlets

frac32.positive out

Declaration
// inlet_reset <- gate
// inlet rate 32 -> fixe, 64 -> en avant toute, 0 -> en arrière toute
// inlet_start est positif si inlet_start au max, freeRun

bool areset = false;
int32_t p = 0, dp;
Control Rate
// calc dp peut être négatif
dp = inlet_rate;
dp = ___SMMLA(dp, ___SMMUL(dp, dp), dp >> 15) >> 1;

if (inlet_reset && !areset && !(inlet_start >= 0x07800000))
  p = 0;
areset = inlet_reset;
p += dp;
if (p >= (1 << 27))
  p -= 1 << 27;
if (p < 0)
  p += 1 << 27;
outlet_out = (p + inlet_start) & 0x07FFFFFF;

Privacy

© 2024 Zrna Research