tripplepower

3x power curve. Usable for shaping the phasor output before sending into sine shaper
Author: Remco van der Most
License: BSD
Github: sss/math/tripplepower.axo

Inlets

frac32buffer input

frac32.bipolar b

frac32.bipolar c

frac32.bipolar d

Outlets

frac32buffer output

Audio Rate
int32_t a0;
int32_t a1;
int32_t b1;
int32_t c1;
int32_t d1;
int32_t e1;
int32_t f1;
int32_t g1;
int32_t h1;
int32_t i1;
int32_t j1;
int32_t k1;
int32_t l1;
int32_t m1;
int32_t n1;
int32_t o1;
int32_t p1;

int32_t b0;
int32_t a2;
int32_t b2;
int32_t c2;
int32_t d2;
int32_t e2;
int32_t f2;
int32_t g2;
int32_t h2;
int32_t i2;
int32_t j2;
int32_t k2;
int32_t l2;
int32_t m2;
int32_t n2;
int32_t o2;
int32_t p2;
int32_t q1;
int32_t q2;
int32_t q3;

int32_t sel;

a0 = inlet_a;
a1 = ___SMMUL(a0 << 3, a0 << 2);
b1 = ___SMMUL(a1 << 3, a0 << 2);
c1 = ___SMMUL(b1 << 3, a0 << 2);
d1 = ___SMMUL(c1 << 3, a0 << 2);
e1 = ___SMMUL(d1 << 3, a0 << 2);
f1 = ___SMMUL(e1 << 3, a0 << 2);
g1 = ___SMMUL(f1 << 3, a0 << 2);
h1 = ___SMMUL(g1 << 3, a0 << 2);
i1 = ___SMMUL(h1 << 3, a0 << 2);
j1 = ___SMMUL(i1 << 3, a0 << 2);
k1 = ___SMMUL(j1 << 3, a0 << 2);
l1 = ___SMMUL(k1 << 3, a0 << 2);
m1 = ___SMMUL(l1 << 3, a0 << 2);
n1 = ___SMMUL(m1 << 3, a0 << 2);
o1 = ___SMMUL(n1 << 3, a0 << 2);
p1 = ___SMMUL(o1 << 3, a0 << 2);

b0 = (1 << 27) - inlet_a;
a2 = ___SMMUL(b0 << 3, b0 << 2);
b2 = ___SMMUL(a2 << 3, b0 << 2);
c2 = ___SMMUL(b2 << 3, b0 << 2);
d2 = ___SMMUL(c2 << 3, b0 << 2);
e2 = ___SMMUL(d2 << 3, b0 << 2);
f2 = ___SMMUL(e2 << 3, b0 << 2);
g2 = ___SMMUL(f2 << 3, b0 << 2);
h2 = ___SMMUL(g2 << 3, b0 << 2);
i2 = ___SMMUL(h2 << 3, b0 << 2);
j2 = ___SMMUL(i2 << 3, b0 << 2);
k2 = ___SMMUL(j2 << 3, b0 << 2);
l2 = ___SMMUL(k2 << 3, b0 << 2);
m2 = ___SMMUL(l2 << 3, b0 << 2);
n2 = ___SMMUL(m2 << 3, b0 << 2);
o2 = ___SMMUL(n2 << 3, b0 << 2);
p2 = ___SMMUL(o2 << 3, b0 << 2);

int32_t a3;
int32_t b3;
int32_t a4;
int32_t b4;
int32_t a5;
int32_t b5;
int32_t c;
int32_t d;
int32_t result;

sel = (inlet_b >= 0) ? inlet_b : -inlet_b;
c = sel - ((sel >> 24) << 24);
d = (1 << 24) - c;

if (inlet_b >= 0) {
  switch (int(sel >> 24) > 0 ? sel >> 24 : 0) {
  case 0:
    a3 = a0;
    break;
  case 1:
    a3 = a1;
    break;
  case 2:
    a3 = b1;
    break;
  case 3:
    a3 = c1;
    break;
  case 4:
    a3 = d1;
    break;
  case 5:
    a3 = e1;
    break;
  case 6:
    a3 = f1;
    break;
  case 7:
    a3 = g1;
    break;
  case 8:
    a3 = h1;
    break;
  case 9:
    a3 = i1;
    break;
  case 10:
    a3 = j1;
    break;
  case 11:
    a3 = k1;
    break;
  case 12:
    a3 = l1;
    break;
  case 13:
    a3 = m1;
    break;
  case 14:
    a3 = n1;
    break;
  case 15:
    a3 = o1;
    break;
  default:
    a3 = p1;
    break;
  }
  switch (int(sel >> 24) > 0 ? sel >> 24 : 0) {
  case 0:
    b3 = a1;
    break;
  case 1:
    b3 = b1;
    break;
  case 2:
    b3 = c1;
    break;
  case 3:
    b3 = d1;
    break;
  case 4:
    b3 = e1;
    break;
  case 5:
    b3 = f1;
    break;
  case 6:
    b3 = g1;
    break;
  case 7:
    b3 = h1;
    break;
  case 8:
    b3 = i1;
    break;
  case 9:
    b3 = j1;
    break;
  case 10:
    b3 = k1;
    break;
  case 11:
    b3 = l1;
    break;
  case 12:
    b3 = m1;
    break;
  case 13:
    b3 = n1;
    break;
  case 14:
    b3 = o1;
    break;
  case 15:
    b3 = p1;
    break;
  default:
    b3 = p1;
    break;
  }
} else {
  switch (int(sel >> 24) > 0 ? sel >> 24 : 0) {
  case 0:
    a3 = b0;
    break;
  case 1:
    a3 = a2;
    break;
  case 2:
    a3 = b2;
    break;
  case 3:
    a3 = c2;
    break;
  case 4:
    a3 = d2;
    break;
  case 5:
    a3 = e2;
    break;
  case 6:
    a3 = f2;
    break;
  case 7:
    a3 = g2;
    break;
  case 8:
    a3 = h2;
    break;
  case 9:
    a3 = i2;
    break;
  case 10:
    a3 = j2;
    break;
  case 11:
    a3 = k2;
    break;
  case 12:
    a3 = l2;
    break;
  case 13:
    a3 = m2;
    break;
  case 14:
    a3 = n2;
    break;
  case 15:
    a3 = o2;
    break;
  default:
    a3 = p2;
    break;
  }
  switch (int(sel >> 24) > 0 ? sel >> 24 : 0) {
  case 0:
    b3 = a2;
    break;
  case 1:
    b3 = b2;
    break;
  case 2:
    b3 = c2;
    break;
  case 3:
    b3 = d2;
    break;
  case 4:
    b3 = e2;
    break;
  case 5:
    b3 = f2;
    break;
  case 6:
    b3 = g2;
    break;
  case 7:
    b3 = h2;
    break;
  case 8:
    b3 = i2;
    break;
  case 9:
    b3 = j2;
    break;
  case 10:
    b3 = k2;
    break;
  case 11:
    b3 = l2;
    break;
  case 12:
    b3 = m2;
    break;
  case 13:
    b3 = n2;
    break;
  case 14:
    b3 = o2;
    break;
  case 15:
    b3 = p2;
    break;
  default:
    b3 = p2;
    break;
  }
}

if (inlet_b >= 0) {
  q1 = ___SMMUL(d << 4, a3 << 4) + ___SMMUL(c << 4, b3 << 4);
}
if (0 > inlet_b) {
  result = (1 << 27) - (___SMMUL(d << 4, a3 << 4) + ___SMMUL(c << 4, b3 << 4));
  q1 = result > ((1 << 27) - (1 << 1)) ? (1 << 27) - (1 << 1) : result;
}

sel = (inlet_c >= 0) ? inlet_c : -inlet_c;
c = sel - ((sel >> 24) << 24);
d = (1 << 24) - c;

if (inlet_c >= 0) {
  switch (int(sel >> 24) > 0 ? sel >> 24 : 0) {
  case 0:
    a3 = a0;
    break;
  case 1:
    a3 = a1;
    break;
  case 2:
    a3 = b1;
    break;
  case 3:
    a3 = c1;
    break;
  case 4:
    a3 = d1;
    break;
  case 5:
    a3 = e1;
    break;
  case 6:
    a3 = f1;
    break;
  case 7:
    a3 = g1;
    break;
  case 8:
    a3 = h1;
    break;
  case 9:
    a3 = i1;
    break;
  case 10:
    a3 = j1;
    break;
  case 11:
    a3 = k1;
    break;
  case 12:
    a3 = l1;
    break;
  case 13:
    a3 = m1;
    break;
  case 14:
    a3 = n1;
    break;
  case 15:
    a3 = o1;
    break;
  default:
    a3 = p1;
    break;
  }
  switch (int(sel >> 24) > 0 ? sel >> 24 : 0) {
  case 0:
    b3 = a1;
    break;
  case 1:
    b3 = b1;
    break;
  case 2:
    b3 = c1;
    break;
  case 3:
    b3 = d1;
    break;
  case 4:
    b3 = e1;
    break;
  case 5:
    b3 = f1;
    break;
  case 6:
    b3 = g1;
    break;
  case 7:
    b3 = h1;
    break;
  case 8:
    b3 = i1;
    break;
  case 9:
    b3 = j1;
    break;
  case 10:
    b3 = k1;
    break;
  case 11:
    b3 = l1;
    break;
  case 12:
    b3 = m1;
    break;
  case 13:
    b3 = n1;
    break;
  case 14:
    b3 = o1;
    break;
  case 15:
    b3 = p1;
    break;
  default:
    b3 = p1;
    break;
  }
} else {
  switch (int(sel >> 24) > 0 ? sel >> 24 : 0) {
  case 0:
    a3 = b0;
    break;
  case 1:
    a3 = a2;
    break;
  case 2:
    a3 = b2;
    break;
  case 3:
    a3 = c2;
    break;
  case 4:
    a3 = d2;
    break;
  case 5:
    a3 = e2;
    break;
  case 6:
    a3 = f2;
    break;
  case 7:
    a3 = g2;
    break;
  case 8:
    a3 = h2;
    break;
  case 9:
    a3 = i2;
    break;
  case 10:
    a3 = j2;
    break;
  case 11:
    a3 = k2;
    break;
  case 12:
    a3 = l2;
    break;
  case 13:
    a3 = m2;
    break;
  case 14:
    a3 = n2;
    break;
  case 15:
    a3 = o2;
    break;
  default:
    a3 = p2;
    break;
  }
  switch (int(sel >> 24) > 0 ? sel >> 24 : 0) {
  case 0:
    b3 = a2;
    break;
  case 1:
    b3 = b2;
    break;
  case 2:
    b3 = c2;
    break;
  case 3:
    b3 = d2;
    break;
  case 4:
    b3 = e2;
    break;
  case 5:
    b3 = f2;
    break;
  case 6:
    b3 = g2;
    break;
  case 7:
    b3 = h2;
    break;
  case 8:
    b3 = i2;
    break;
  case 9:
    b3 = j2;
    break;
  case 10:
    b3 = k2;
    break;
  case 11:
    b3 = l2;
    break;
  case 12:
    b3 = m2;
    break;
  case 13:
    b3 = n2;
    break;
  case 14:
    b3 = o2;
    break;
  case 15:
    b3 = p2;
    break;
  default:
    b3 = p2;
    break;
  }
}

if (inlet_c >= 0) {
  q2 = ___SMMUL(d << 4, a3 << 4) + ___SMMUL(c << 4, b3 << 4);
}
if (0 > inlet_c) {
  result = (1 << 27) - (___SMMUL(d << 4, a3 << 4) + ___SMMUL(c << 4, b3 << 4));
  q2 = result > ((1 << 27) - (1 << 1)) ? (1 << 27) - (1 << 1) : result;
}

sel = (inlet_d >= 0) ? inlet_d : -inlet_d;
c = sel - ((sel >> 24) << 24);
d = (1 << 24) - c;

if (inlet_d >= 0) {
  switch (int(sel >> 24) > 0 ? sel >> 24 : 0) {
  case 0:
    a3 = a0;
    break;
  case 1:
    a3 = a1;
    break;
  case 2:
    a3 = b1;
    break;
  case 3:
    a3 = c1;
    break;
  case 4:
    a3 = d1;
    break;
  case 5:
    a3 = e1;
    break;
  case 6:
    a3 = f1;
    break;
  case 7:
    a3 = g1;
    break;
  case 8:
    a3 = h1;
    break;
  case 9:
    a3 = i1;
    break;
  case 10:
    a3 = j1;
    break;
  case 11:
    a3 = k1;
    break;
  case 12:
    a3 = l1;
    break;
  case 13:
    a3 = m1;
    break;
  case 14:
    a3 = n1;
    break;
  case 15:
    a3 = o1;
    break;
  default:
    a3 = p1;
    break;
  }
  switch (int(sel >> 24) > 0 ? sel >> 24 : 0) {
  case 0:
    b3 = a1;
    break;
  case 1:
    b3 = b1;
    break;
  case 2:
    b3 = c1;
    break;
  case 3:
    b3 = d1;
    break;
  case 4:
    b3 = e1;
    break;
  case 5:
    b3 = f1;
    break;
  case 6:
    b3 = g1;
    break;
  case 7:
    b3 = h1;
    break;
  case 8:
    b3 = i1;
    break;
  case 9:
    b3 = j1;
    break;
  case 10:
    b3 = k1;
    break;
  case 11:
    b3 = l1;
    break;
  case 12:
    b3 = m1;
    break;
  case 13:
    b3 = n1;
    break;
  case 14:
    b3 = o1;
    break;
  case 15:
    b3 = p1;
    break;
  default:
    b3 = p1;
    break;
  }
} else {
  switch (int(sel >> 24) > 0 ? sel >> 24 : 0) {
  case 0:
    a3 = b0;
    break;
  case 1:
    a3 = a2;
    break;
  case 2:
    a3 = b2;
    break;
  case 3:
    a3 = c2;
    break;
  case 4:
    a3 = d2;
    break;
  case 5:
    a3 = e2;
    break;
  case 6:
    a3 = f2;
    break;
  case 7:
    a3 = g2;
    break;
  case 8:
    a3 = h2;
    break;
  case 9:
    a3 = i2;
    break;
  case 10:
    a3 = j2;
    break;
  case 11:
    a3 = k2;
    break;
  case 12:
    a3 = l2;
    break;
  case 13:
    a3 = m2;
    break;
  case 14:
    a3 = n2;
    break;
  case 15:
    a3 = o2;
    break;
  default:
    a3 = p2;
    break;
  }
  switch (int(sel >> 24) > 0 ? sel >> 24 : 0) {
  case 0:
    b3 = a2;
    break;
  case 1:
    b3 = b2;
    break;
  case 2:
    b3 = c2;
    break;
  case 3:
    b3 = d2;
    break;
  case 4:
    b3 = e2;
    break;
  case 5:
    b3 = f2;
    break;
  case 6:
    b3 = g2;
    break;
  case 7:
    b3 = h2;
    break;
  case 8:
    b3 = i2;
    break;
  case 9:
    b3 = j2;
    break;
  case 10:
    b3 = k2;
    break;
  case 11:
    b3 = l2;
    break;
  case 12:
    b3 = m2;
    break;
  case 13:
    b3 = n2;
    break;
  case 14:
    b3 = o2;
    break;
  case 15:
    b3 = p2;
    break;
  default:
    b3 = p2;
    break;
  }
}

if (inlet_d >= 0) {
  q3 = ___SMMUL(d << 4, a3 << 4) + ___SMMUL(c << 4, b3 << 4);
}
if (0 > inlet_d) {
  result = (1 << 27) - (___SMMUL(d << 4, a3 << 4) + ___SMMUL(c << 4, b3 << 4));
  q3 = result > ((1 << 27) - (1 << 1)) ? (1 << 27) - (1 << 1) : result;
}

int32_t r1 = (1 << 27) - q3;
outlet_result = (___SMMUL(q1 << 3, r1 << 2)) + (___SMMUL(q2 << 3, q3 << 2));

Privacy

© 2024 Zrna Research