| 142 | } |
| 143 | |
| 144 | void 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 | |
| 197 | void Pulser::GetModuleDimensions(float& width, float& height) |
| 198 | { |
nothing calls this directly
no test coverage detected