int32.positive step select
bool32 default
int32.positive chain output
bool32 bool out
int32 encoded output
int32 notes
int32 length
bool sequence[31];
int powers[31];
for (int i = 0; i < 31; i += 1) {
powers[i] = 1 << i;
}
int notes = param_notes;
if (notes > param_length)
notes = param_length;
int rests = param_length - notes;
outlet_chain = inlet_in - param_length;
if (rests) {
if (notes < rests) {
int mul = rests / notes;
int rem = rests - (mul * notes);
int ii = 0;
int temp;
for (int i = 0; i < notes; i += 1) {
if (i < rem) {
temp = ii;
sequence[ii] = 1;
for (ii = temp + 1; ii < temp + mul + 2; ii += 1)
sequence[ii] = 0;
} else {
temp = ii;
sequence[ii] = 1;
for (ii = temp + 1; ii < temp + mul + 1; ii += 1)
sequence[ii] = 0;
}
}
} else if (notes > rests) {
int mul = notes / rests;
int rem = notes - (mul * rests);
int ii = 0;
int temp;
for (int i = 0; i < rests; i += 1) {
if (i < rem) {
sequence[ii] = 1;
ii += 1;
sequence[ii] = 0;
temp = ii;
for (ii = temp + 1; ii < temp + mul + 1; ii += 1)
sequence[ii] = 1;
} else {
sequence[ii] = 1;
ii += 1;
sequence[ii] = 0;
temp = ii;
for (ii = temp + 1; ii < temp + mul; ii += 1)
sequence[ii] = 1;
}
}
} else {
sequence[0] = 1;
for (int i = 1; i < param_length; i += 1)
sequence[i] = !sequence[i - 1];
}
} else {
for (int ii = 0; ii < param_length; ii += 1)
sequence[ii] = 1;
}
if (inlet_in >= 0 && inlet_in < param_length)
outlet_out = sequence[inlet_in];
else
outlet_out = inlet_default;
int num = 0;
for (int i = 0; i < param_length; i += 1)
num += sequence[i] * powers[i];
outlet_enc = num;