MCPcopy Create free account
hub / github.com/BespokeSynth/BespokeSynth / Step

Method Step

Source/StepSequencer.cpp:674–721  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

672}
673
674void StepSequencer::Step(double time, float velocity, int pulseFlags)
675{
676 if (!mIsSetUp)
677 return;
678
679 mGrid->SetGrid(GetNumSteps(mStepInterval, mNumMeasures), mNumRows);
680
681 if (!mEnabled)
682 {
683 UpdateLights();
684 return;
685 }
686
687 int direction = 1;
688 if (pulseFlags & kPulseFlag_Backward)
689 direction = -1;
690 if (pulseFlags & kPulseFlag_Repeat)
691 direction = 0;
692
693 mCurrentColumn = (mCurrentColumn + direction + GetNumSteps(mStepInterval, mNumMeasures)) % GetNumSteps(mStepInterval, mNumMeasures);
694
695 if (pulseFlags & kPulseFlag_Reset)
696 mCurrentColumn = 0;
697 else if (pulseFlags & kPulseFlag_Random)
698 mCurrentColumn = gRandom() % GetNumSteps(mStepInterval, mNumMeasures);
699
700 if (!mHasExternalPulseSource || (pulseFlags & kPulseFlag_SyncToTransport))
701 mCurrentColumn = GetStepNum(time);
702
703 if (pulseFlags & kPulseFlag_Align)
704 {
705 int stepsPerMeasure = TheTransport->GetStepsPerMeasure(this);
706 int numMeasures = ceil(float(GetNumSteps(mStepInterval, mNumMeasures)) / stepsPerMeasure);
707 int measure = TheTransport->GetMeasure(time) % numMeasures;
708 int step = ((TheTransport->GetQuantized(time, mTransportListenerInfo) % stepsPerMeasure) + measure * stepsPerMeasure) % GetNumSteps(mStepInterval, mNumMeasures);
709 mCurrentColumn = step;
710 }
711
712 mGrid->SetHighlightCol(time, mCurrentColumn);
713 UpdateLights();
714 UpdateMetaLights();
715
716 if (mHasExternalPulseSource)
717 {
718 for (auto& row : mRows)
719 row->PlayStep(time, mCurrentColumn);
720 }
721}
722
723void StepSequencer::PlayStepNote(double time, int note, float val)
724{

Callers

nothing calls this directly

Calls 6

GetStepsPerMeasureMethod · 0.80
GetMeasureMethod · 0.80
GetQuantizedMethod · 0.80
PlayStepMethod · 0.80
SetGridMethod · 0.45
SetHighlightColMethod · 0.45

Tested by

no test coverage detected