| 595 | } |
| 596 | |
| 597 | void PlaybackManager::executeRhythmStepEvents(const Step& step, int ch, bool calledByNoteDelay) |
| 598 | { |
| 599 | if (!calledByNoteDelay && !step.isEmptyNote()) clearRhythmDelayBeyondStepCounts(ch); // Except no key event |
| 600 | |
| 601 | // Set volume |
| 602 | int vol = step.getVolume(); |
| 603 | if (step.hasVolume() && vol < bt_defs::NSTEP_RHYTHM_VOLUME) { |
| 604 | opnaCtrl_->setVolumeRhythm(ch, vol); |
| 605 | } |
| 606 | |
| 607 | // Set effect |
| 608 | executeStoredEffectsRhythm(ch); |
| 609 | |
| 610 | // Set key |
| 611 | switch (step.getNoteNumber()) { |
| 612 | case Step::NOTE_NONE: |
| 613 | if (!calledByNoteDelay) { |
| 614 | // When this is called by note delay, skip delay check because it has already checked. |
| 615 | checkRhythmDelayEventsInTick(step, ch); |
| 616 | } |
| 617 | opnaCtrl_->tickEvent(SoundSource::RHYTHM, ch); |
| 618 | break; |
| 619 | case Step::NOTE_KEY_OFF: |
| 620 | case Step::NOTE_KEY_CUT: |
| 621 | opnaCtrl_->setKeyOffFlagRhythm(ch); |
| 622 | break; |
| 623 | default: // Key on & Echo |
| 624 | opnaCtrl_->setKeyOnFlagRhythm(ch); |
| 625 | break; |
| 626 | } |
| 627 | } |
| 628 | |
| 629 | void PlaybackManager::executeADPCMStepEvents(const Step& step, bool calledByNoteDelay) |
| 630 | { |
nothing calls this directly
no test coverage detected