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

Method OnTimeEvent

Source/Pulser.cpp:144–195  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

142}
143
144void Pulser::OnTimeEvent(double time)
145{
146 if (!mEnabled)
147 return;
148
149 float offsetMs = GetOffset() * TheTransport->MsPerBar();
150
151 int flags = 0;
152
153 bool shouldReset = false;
154 if (mTimeMode == kTimeMode_Downbeat)
155 shouldReset = TheTransport->GetQuantized(time, mTransportListenerInfo) == 0;
156 if (mTimeMode == kTimeMode_Downbeat2)
157 shouldReset = TheTransport->GetQuantized(time, mTransportListenerInfo) == 0 && TheTransport->GetMeasure(time + offsetMs) % 2 == 0;
158 if (mTimeMode == kTimeMode_Downbeat4)
159 shouldReset = TheTransport->GetQuantized(time, mTransportListenerInfo) == 0 && TheTransport->GetMeasure(time + offsetMs) % 4 == 0;
160 if (mTimeMode == kTimeMode_Reset)
161 {
162 int step = 0;
163 if (TheTransport->GetMeasureFraction(mInterval) < 1)
164 {
165 step = TheTransport->GetSyncedStep(time, this, mTransportListenerInfo);
166 }
167 else
168 {
169 int measure = TheTransport->GetMeasure(time);
170 step = measure / TheTransport->GetMeasureFraction(mInterval);
171 }
172 if (step % mResetLength == 0)
173 shouldReset = true;
174 }
175
176 if (shouldReset)
177 flags |= kPulseFlag_Reset;
178
179 if (mRandomStep)
180 flags |= kPulseFlag_Random;
181
182 if (mTimeMode == kTimeMode_Sync)
183 flags |= kPulseFlag_SyncToTransport;
184
185 if (mTimeMode == kTimeMode_Align)
186 flags |= kPulseFlag_Align;
187
188 if (mWaitingForDownbeat && shouldReset)
189 mWaitingForDownbeat = false;
190
191 if (mWaitingForDownbeat && (mTimeMode == kTimeMode_Downbeat || mTimeMode == kTimeMode_Downbeat2 || mTimeMode == kTimeMode_Downbeat4))
192 return;
193
194 DispatchPulse(GetPatchCableSource(), time, 1, flags);
195}
196
197void Pulser::GetModuleDimensions(float& width, float& height)
198{

Callers

nothing calls this directly

Calls 5

MsPerBarMethod · 0.80
GetQuantizedMethod · 0.80
GetMeasureMethod · 0.80
GetMeasureFractionMethod · 0.80
GetSyncedStepMethod · 0.80

Tested by

no test coverage detected