wave creator 16

wavetable creator.hit 'saw' 'sine' or 'square' to fill with an initial function. tables are accesible from the 'outside',if you reference the object's name with table/read and such.
Author: Robert Schirmer
License: BSD
Github: rbrt/data/wave creator 16.axo

Inlets

None

Outlets

None

Parameters

bool32.mom saw

bool32.mom sine

bool32.mom square

frac32.s.mapvsl b0

frac32.s.mapvsl b1

frac32.s.mapvsl b2

frac32.s.mapvsl b3

frac32.s.mapvsl b4

frac32.s.mapvsl b5

frac32.s.mapvsl b6

frac32.s.mapvsl b7

frac32.s.mapvsl b8

frac32.s.mapvsl b9

frac32.s.mapvsl b10

frac32.s.mapvsl b11

frac32.s.mapvsl b12

frac32.s.mapvsl b13

frac32.s.mapvsl b14

frac32.s.mapvsl b15

Declaration
static const uint32_t LENGTHPOW = 4;
static const uint32_t LENGTH = 1 << 4;
static const uint32_t LENGTHMASK = (1 << 4) - 1;
static const uint32_t BITS = 32;
static const uint32_t GAIN = 0;
int32_t array[LENGTH];

bool trig;
Control Rate
array[0] = param_b0;
array[1] = param_b1;
array[2] = param_b2;
array[3] = param_b3;
array[4] = param_b4;
array[5] = param_b5;
array[6] = param_b6;
array[7] = param_b7;
array[8] = param_b8;
array[9] = param_b9;
array[10] = param_b10;
array[11] = param_b11;
array[12] = param_b12;
array[13] = param_b13;
array[14] = param_b14;
array[15] = param_b15;

if (param_saw && (!trig)) {
  trig = 1;
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b0],
                     -134217728.000, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b1],
                     -116322032.000, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b2],
                     -98426336.000, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b3],
                     -80530640.000, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b4],
                     -62634940.000, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b5],
                     -44739244.000, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b6],
                     -26843546.000, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b7],
                     -8947849.000, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b8],
                     8947849.000, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b9],
                     26843546.000, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b10],
                     44739244.000, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b11],
                     62634940.000, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b12],
                     80530640.000, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b13],
                     98426336.000, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b14],
                     116322032.000, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b15],
                     134217728.000, 0xFFFD);
}

if (param_sine && (!trig)) {
  trig = 1;
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b0], 0.000,
                     0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b1],
                     51361464.000, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b2],
                     94904064.000, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b3],
                     123999224.000, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b4],
                     134217728.000, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b5],
                     124003984.000, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b6],
                     94912864.000, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b7],
                     51372956.000, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b8], 12436.267,
                     0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b9],
                     -51349976.000, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b10],
                     -94895272.000, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b11],
                     -123994464.000, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b12],
                     -134217728.000, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b13],
                     -124008744.000, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b14],
                     -94921656.000, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b15],
                     -51384444.000, 0xFFFD);
}

if (param_square && (!trig)) {
  trig = 1;
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b0], 134217728,
                     0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b1], 134217728,
                     0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b2], 134217728,
                     0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b3], 134217728,
                     0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b4], 134217728,
                     0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b5], 134217728,
                     0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b6], 134217728,
                     0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b7], 134217728,
                     0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b8], -134217728,
                     0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b9], -134217728,
                     0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b10],
                     -134217728, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b11],
                     -134217728, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b12],
                     -134217728, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b13],
                     -134217728, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b14],
                     -134217728, 0xFFFD);
  PExParameterChange(&parent->PExch[PARAM_INDEX_attr_legal_name_b15],
                     -134217728, 0xFFFD);
}

if (!param_sine && !param_saw && !param_square)
  trig = 0;

Privacy

© 2024 Zrna Research