O4fractalII

O4 Fractal II. For use with O4 objects (oversampling x4 using interleaved audio signal pairs). 8x internal oversampling with triangular window decimation.
Author: Smashed Transistors
License: LGPL
Github: tiar/dist/O4fractalII.axo

Inlets

frac32buffer.bipolar in3

frac32buffer.bipolar in2

frac32buffer.bipolar in1

frac32buffer.bipolar in0

Outlets

frac32buffer.bipolar out3

frac32buffer.bipolar out2

frac32buffer.bipolar out1

frac32buffer.bipolar out0

Declaration
int32_t na, x;
int32_t f(int32_t x) {
  return x ^ x >> 1; // Gray code
}
Init
na = x = 0;
Audio Rate
// 8x internal oversampling with triangular window decimation
int32_t dx = (inlet_in3 - x) / 8;
int32_t a;
{
  int32_t y = f(x += dx);
  a = ___SMMLA((8 << 25), y, na);
  na = ___SMMUL((1 << 25), y);
}
{
  int32_t y = f(x += dx);
  a = ___SMMLA((7 << 25), y, a);
  na = ___SMMLA((2 << 25), y, na);
}
{
  int32_t y = f(x += dx);
  a = ___SMMLA((6 << 25), y, a);
  na = ___SMMLA((3 << 25), y, na);
}
{
  int32_t y = f(x += dx);
  a = ___SMMLA((5 << 25), y, a);
  na = ___SMMLA((4 << 25), y, na);
}
{
  int32_t y = f(x += dx);
  a = ___SMMLA((4 << 25), y, a);
  na = ___SMMLA((5 << 25), y, na);
}
{
  int32_t y = f(x += dx);
  a = ___SMMLA((3 << 25), y, a);
  na = ___SMMLA((6 << 25), y, na);
}
{
  int32_t y = f(x += dx);
  a = ___SMMLA((2 << 25), y, a);
  na = ___SMMLA((7 << 25), y, na);
}
{
  int32_t y = f(x += dx);
  a = ___SMMLA((1 << 25), y, a);
  na = ___SMMLA((8 << 25), y, na);
}
outlet_out3 = x > 0 ? a : -a;
dx = (inlet_in2 - x) / 8;
{
  int32_t y = f(x += dx);
  a = ___SMMLA((8 << 25), y, na);
  na = ___SMMUL((1 << 25), y);
}
{
  int32_t y = f(x += dx);
  a = ___SMMLA((7 << 25), y, a);
  na = ___SMMLA((2 << 25), y, na);
}
{
  int32_t y = f(x += dx);
  a = ___SMMLA((6 << 25), y, a);
  na = ___SMMLA((3 << 25), y, na);
}
{
  int32_t y = f(x += dx);
  a = ___SMMLA((5 << 25), y, a);
  na = ___SMMLA((4 << 25), y, na);
}
{
  int32_t y = f(x += dx);
  a = ___SMMLA((4 << 25), y, a);
  na = ___SMMLA((5 << 25), y, na);
}
{
  int32_t y = f(x += dx);
  a = ___SMMLA((3 << 25), y, a);
  na = ___SMMLA((6 << 25), y, na);
}
{
  int32_t y = f(x += dx);
  a = ___SMMLA((2 << 25), y, a);
  na = ___SMMLA((7 << 25), y, na);
}
{
  int32_t y = f(x += dx);
  a = ___SMMLA((1 << 25), y, a);
  na = ___SMMLA((8 << 25), y, na);
}
outlet_out2 = x > 0 ? a : -a;
dx = (inlet_in1 - x) / 8;
{
  int32_t y = f(x += dx);
  a = ___SMMLA((8 << 25), y, na);
  na = ___SMMUL((1 << 25), y);
}
{
  int32_t y = f(x += dx);
  a = ___SMMLA((7 << 25), y, a);
  na = ___SMMLA((2 << 25), y, na);
}
{
  int32_t y = f(x += dx);
  a = ___SMMLA((6 << 25), y, a);
  na = ___SMMLA((3 << 25), y, na);
}
{
  int32_t y = f(x += dx);
  a = ___SMMLA((5 << 25), y, a);
  na = ___SMMLA((4 << 25), y, na);
}
{
  int32_t y = f(x += dx);
  a = ___SMMLA((4 << 25), y, a);
  na = ___SMMLA((5 << 25), y, na);
}
{
  int32_t y = f(x += dx);
  a = ___SMMLA((3 << 25), y, a);
  na = ___SMMLA((6 << 25), y, na);
}
{
  int32_t y = f(x += dx);
  a = ___SMMLA((2 << 25), y, a);
  na = ___SMMLA((7 << 25), y, na);
}
{
  int32_t y = f(x += dx);
  a = ___SMMLA((1 << 25), y, a);
  na = ___SMMLA((8 << 25), y, na);
}
outlet_out1 = x > 0 ? a : -a;
dx = (inlet_in0 - x) / 8;
{
  int32_t y = f(x += dx);
  a = ___SMMLA((8 << 25), y, na);
  na = ___SMMUL((1 << 25), y);
}
{
  int32_t y = f(x += dx);
  a = ___SMMLA((7 << 25), y, a);
  na = ___SMMLA((2 << 25), y, na);
}
{
  int32_t y = f(x += dx);
  a = ___SMMLA((6 << 25), y, a);
  na = ___SMMLA((3 << 25), y, na);
}
{
  int32_t y = f(x += dx);
  a = ___SMMLA((5 << 25), y, a);
  na = ___SMMLA((4 << 25), y, na);
}
{
  int32_t y = f(x += dx);
  a = ___SMMLA((4 << 25), y, a);
  na = ___SMMLA((5 << 25), y, na);
}
{
  int32_t y = f(x += dx);
  a = ___SMMLA((3 << 25), y, a);
  na = ___SMMLA((6 << 25), y, na);
}
{
  int32_t y = f(x += dx);
  a = ___SMMLA((2 << 25), y, a);
  na = ___SMMLA((7 << 25), y, na);
}
{
  int32_t y = f(x += dx);
  a = ___SMMLA((1 << 25), y, a);
  na = ___SMMLA((8 << 25), y, na);
}
outlet_out0 = x > 0 ? a : -a;

Privacy

© 2024 Zrna Research