None
frac32buffer.bipolar waveform
frac32.s.mapvsl h1
frac32.s.mapvsl h2
frac32.s.mapvsl h3
frac32.s.mapvsl h4
frac32.s.mapvsl h5
frac32.s.mapvsl h6
const int32_t tiar_h4w12[12 * 6] = {
+134217728, +116235962, +67108864, +0, -67108864,
-116235962, -134217728, -116235962, -67108864, +0,
+67108864, +116235962, +124617325, +105479145, -19138181,
-124617325, -105479145, +19138181, +124617325, +105479145,
-19138181, -124617325, -105479145, +19138181, -68758842,
+115267603, +68758842, -115267603, -68758842, +115267603,
+68758842, -115267603, -68758842, +115267603, +68758842,
-115267603, +115981577, -116488688, +507111, +115981577,
-116488688, +507111, +115981577, -116488688, +507111,
+115981577, -116488688, +507111, -65763890, -1547888,
+68444912, -117002176, +134208802, -115454288, +65763890,
+1547888, -68444912, +117002176, -134208802, +115454288,
-105479145, +105479145, -105479145, +105479145, -105479145,
+105479145, -105479145, +105479145, -105479145, +105479145,
-105479145, +105479145}; // phases chosen for reduced crest factor
int32_t *h1, h2, h3, h4, h5, h6;
h1 = tiar_h4w12 + 0 * 12;
h2 = tiar_h4w12 + 1 * 12;
h3 = tiar_h4w12 + 2 * 12;
h4 = tiar_h4w12 + 3 * 12;
h5 = tiar_h4w12 + 4 * 12;
h6 = tiar_h4w12 + 5 * 12;
int j;
/*
for(j = 0;j<12;j++){
outlet_waveform[j] =
__SMMLA(param_h6, h6[j],
__SMMLA(param_h5, h5[j],
__SMMLA(param_h4, h4[j],
__SMMLA(param_h3, h3[j],
__SMMLA(param_h2, h2[j],
___SMMUL(param_h1, h1[j]))))))<<5;
}
*/
// optim nb reg ?...
// 6vars
for (j = 0; j < 12; j++) {
outlet_waveform[j] = __SMMLA(param_h2, h2[j], ___SMMUL(param_h1, h1[j]));
}
for (j = 0; j < 12; j++) {
outlet_waveform[j] =
__SMMLA(param_h4, h4[j], __SMMLA(param_h3, h3[j], outlet_waveform[j]));
}
for (j = 0; j < 12; j++) {
outlet_waveform[j] =
__SMMLA(param_h6, h6[j], __SMMLA(param_h5, h5[j], outlet_waveform[j]))
<< 5;
}