| 627 | } |
| 628 | |
| 629 | void PlaybackManager::executeADPCMStepEvents(const Step& step, bool calledByNoteDelay) |
| 630 | { |
| 631 | if (!calledByNoteDelay && !step.isEmptyNote()) clearADPCMDelayBeyondStepCounts(); // Except no key event |
| 632 | |
| 633 | // Set volume |
| 634 | int vol = step.getVolume(); |
| 635 | if (step.hasVolume() && vol < bt_defs::NSTEP_ADPCM_VOLUME) { |
| 636 | opnaCtrl_->setVolumeADPCM(vol); |
| 637 | } |
| 638 | |
| 639 | // Set instrument |
| 640 | if (step.hasInstrument()) { |
| 641 | if (auto inst = instMan_.lock()->getInstrumentSharedPtr(step.getInstrumentNumber())) { |
| 642 | if (inst->getType() == InstrumentType::ADPCM) |
| 643 | opnaCtrl_->setInstrumentADPCM(std::dynamic_pointer_cast<InstrumentADPCM>(inst)); |
| 644 | else if (inst->getType() == InstrumentType::Drumkit) |
| 645 | opnaCtrl_->setInstrumentDrumkit(std::dynamic_pointer_cast<InstrumentDrumkit>(inst)); |
| 646 | } |
| 647 | } |
| 648 | |
| 649 | // Set effect |
| 650 | executeStoredEffectsADPCM(); |
| 651 | |
| 652 | // Set key |
| 653 | int noteNum = step.getNoteNumber(); |
| 654 | switch (noteNum) { |
| 655 | case Step::NOTE_NONE: |
| 656 | if (!calledByNoteDelay) { |
| 657 | // When this is called by note delay, skip delay check because it has already checked. |
| 658 | checkADPCMDelayEventsInTick(step); |
| 659 | } |
| 660 | opnaCtrl_->tickEvent(SoundSource::ADPCM, 0); |
| 661 | break; |
| 662 | case Step::NOTE_KEY_OFF: |
| 663 | opnaCtrl_->keyOffADPCM(); |
| 664 | break; |
| 665 | case Step::NOTE_KEY_CUT: |
| 666 | opnaCtrl_->setNoteCutADPCM(); |
| 667 | break; |
| 668 | case Step::NOTE_ECHO0: |
| 669 | opnaCtrl_->keyOnADPCM(0); |
| 670 | break; |
| 671 | case Step::NOTE_ECHO1: |
| 672 | opnaCtrl_->keyOnADPCM(1); |
| 673 | break; |
| 674 | case Step::NOTE_ECHO2: |
| 675 | opnaCtrl_->keyOnADPCM(2); |
| 676 | break; |
| 677 | case Step::NOTE_ECHO3: |
| 678 | opnaCtrl_->keyOnADPCM(3); |
| 679 | break; |
| 680 | default: // Key on |
| 681 | opnaCtrl_->keyOnADPCM(Note(noteNum)); |
| 682 | break; |
| 683 | } |
| 684 | } |
| 685 | |
| 686 | bool PlaybackManager::executeStoredEffectsGlobal() |
nothing calls this directly
no test coverage detected