tablecombo1

A combination of 3 objects: table/alloc 16b sdram table/load string/indexed
Author: Jaffasplaffa
License: BSD
Github: jaffa/table/tablecombo1.axo

Inlets

int32 index

Outlets

None

Attributes

table prefix

table suffix

combo size

Declaration
// Table allocation
static const uint32_t LENGTHPOW = (attr_size);
static const uint32_t LENGTH = (1 << attr_size);
static const uint32_t LENGTHMASK = ((1 << attr_size) - 1);
static const uint32_t BITS = 16;
static const uint32_t GAIN = 12;
int16_t *array;

// String/index
int ntrig;
char c[64];
int offset;
int pval;

// Logic change //
int ptrig2;
int32_t pval2;

// Connect inlet and logic change //
int32_t LcOut;
Init
// Table allocation
static int16_t _array[attr_poly][LENGTH] __attribute__((section(".sdram")));
array = &_array[parent->polyIndex][0];
{
  int i;
  for (i = 0; i < LENGTH; i++)
    array[i] = 0;
}

// String/index
ntrig = 0;
strcpy(&c[0], "attr_prefix000attr_suffix");
offset = strlen("attr_prefix");
pval = 0;

// Logic change //
ptrig2 = 0;
pval2 = 0;
Control Rate
if ((LcOut > 0) && !ntrig) {
  char *filename = &c[0]; // filename internally //
  ntrig = 1;
  FIL FileObject;
  FRESULT err;
  UINT bytes_read;
  err = f_open(&FileObject, filename, FA_READ | FA_OPEN_EXISTING);
  if (err != FR_OK) {
    report_fatfs_error(err, filename);
    return;
  }
  int rem_sz = sizeof(*array) * LENGTH;
  int offset = 0;
  while (rem_sz > 0) {
    if (rem_sz > sizeof(fbuff)) {
      err = f_read(&FileObject, fbuff, sizeof(fbuff), &bytes_read);
      if (bytes_read == 0)
        break;
      memcpy((char *)(&array[0]) + offset, (char *)fbuff, bytes_read);
      rem_sz -= bytes_read;
      offset += bytes_read;
    } else {
      err = f_read(&FileObject, fbuff, rem_sz, &bytes_read);
      memcpy((char *)(&array[0]) + offset, (char *)fbuff, bytes_read);
      rem_sz = 0;
    }
  }
  if (err != FR_OK) {
    report_fatfs_error(err, filename);
    return;
  };
  err = f_close(&FileObject);
  if (err != FR_OK) {
    report_fatfs_error(err, filename);
    return;
  };
} else if (!(LcOut > 0))
  ntrig = 0; // logic change in here //

// String index
if (inlet_index != pval) {
  pval = inlet_index;
  int i = inlet_index;
  int i0 = i / 10;
  c[offset + 2] = '0' + i - 10 * i0;
  i = i0;
  i0 = i / 10;
  c[offset + 1] = '0' + i - 10 * i0;
  i = i0;
  i0 = i / 10;
  c[offset + 0] = '0' + i - 10 * i0;
}

// logic change //
if ((pval2 != inlet_index) & (!ptrig2)) {
  LcOut = 1;
  pval2 = inlet_index;
  ptrig2 = 1;
} else {
  ptrig2 = 0;
  LcOut = 0;
}

Privacy

© 2024 Zrna Research