write

Polyphonic, Polyrythmic, Polymetric sequencer allows setting of track parameters (number of steps and clock division) which allow polyryhtm and polymeters, also can be used to set sequencer data (stepSet , trkSet are used to change values)
Author: Mark Harris
License: GPL
Github: tb/seq/polyseq/write.axo

Inlets

int32.positive trkIdx

int32.positive trkSteps

int32.positive trkClkDiv

int32.positive stepIdx

int32.positive valueIdx

bool32.rising trkSet

bool32.rising stepSet

frac32 stepValue

Outlets

int32.positive selected track

int32.positive trkSteps

int32.positive trkClkDiv

int32.positive selected step

int32.positive valueIdx

frac32 current step value

Attributes

objref seq

Declaration
bool trkSet_ = false;
bool stepSet_ = false;
int32_t trkIdx_ = 0;
int32_t stepIdx_ = 0;
int32_t valueIdx_ = 0;
Control Rate
trkIdx_ = (inlet_trkIdx < attr_seq.maxTracks_ ? inlet_trkIdx
                                              : attr_seq.maxTracks_ - 1);
if (inlet_trkSet) {
  if (!trkSet_) {
    trkSet_ = true;
    attr_seq.seqSteps_[trkIdx_] =
        (inlet_trkSteps < attr_seq.maxSteps_ ? inlet_trkSteps
                                             : attr_seq.maxSteps_);
    attr_seq.seqClkDivs_[trkIdx_] = inlet_trkClkDiv;
  }
} else {
  trkSet_ = false;
}

int32_t trkSteps = attr_seq.seqSteps_[trkIdx_];
int32_t trkClkDiv = attr_seq.seqClkDivs_[trkIdx_];

outlet_trkIdx = trkIdx_;
outlet_trkSteps = trkSteps;
outlet_trkClkDiv = trkClkDiv;

stepIdx_ = (inlet_stepIdx < trkSteps ? inlet_stepIdx : trkSteps - 1);
valueIdx_ = (inlet_valueIdx < attr_seq.numValues_ ? inlet_valueIdx
                                                  : attr_seq.numValues_ - 1);
if (inlet_stepSet) {
  if (!stepSet_) {
    stepSet_ = true;
    attr_seq.seqValue_[trkIdx_][stepIdx_][valueIdx_] = inlet_stepValue;
  }
} else {
  stepSet_ = false;
}

outlet_stepIdx = stepIdx_;
outlet_valueIdx = valueIdx_;
outlet_stepValue = attr_seq.seqValue_[trkIdx_][stepIdx_][valueIdx_];

Privacy

© 2024 Zrna Research