/
| 2445 | |
| 2446 | /***********************************/ |
| 2447 | void OPNAController::initSSG() |
| 2448 | { |
| 2449 | mixerSSG_ = 0xff; |
| 2450 | opna_->setRegister(0x07, mixerSSG_); |
| 2451 | noisePeriodSSG_ = 0; |
| 2452 | opna_->setRegister(0x06, noisePeriodSSG_); |
| 2453 | hardEnvPeriodHighSSG_ = 0; |
| 2454 | hardEnvPeriodLowSSG_ = 0; |
| 2455 | |
| 2456 | for (size_t ch = 0; ch < 3; ++ch) { |
| 2457 | auto& ssg = ssg_[ch]; |
| 2458 | ssg.ch = ch; |
| 2459 | |
| 2460 | ssg.isKeyOn = false; |
| 2461 | ssg.hasKeyOnBefore = false; |
| 2462 | ssg.isInKeyOnProcess_ = false; |
| 2463 | |
| 2464 | ssg.refInst.reset(); // Init envelope |
| 2465 | |
| 2466 | ssg.echoBuf.clear(); |
| 2467 | |
| 2468 | ssg.neverSetBaseNote = true; |
| 2469 | ssg.baseVol = bt_defs::NSTEP_SSG_VOLUME - 1; // Init volume |
| 2470 | ssg.oneshotVol = UNUSED_VALUE; |
| 2471 | ssg.isHardEnv = false; |
| 2472 | |
| 2473 | // Init sequence |
| 2474 | ssg.shouldSkip1stTickExec = false; |
| 2475 | ssg.wfItr.reset(); |
| 2476 | ssg.wfChState = SSGWaveformUnit::makeOnlyDataUnit(SSGWaveformType::UNSET); |
| 2477 | ssg.envItr.reset(); |
| 2478 | ssg.envState = SSGEnvelopeUnit(); |
| 2479 | ssg.tnItr.reset(); |
| 2480 | ssg.arpItr.reset(); |
| 2481 | ssg.ptItr.reset(); |
| 2482 | ssg.ptSum = 0; |
| 2483 | ssg.shouldSetEnv = false; |
| 2484 | ssg.shouldSetSqMaskFreq = false; |
| 2485 | ssg.shouldSetHardEnvFreq = false; |
| 2486 | ssg.shouldUpdateMixState = false; |
| 2487 | ssg.shouldSetTone = false; |
| 2488 | |
| 2489 | // Effect |
| 2490 | ssg.isArpEff = false; |
| 2491 | ssg.prtmDepth = 0; |
| 2492 | ssg.isTonePrtm = false; |
| 2493 | ssg.vibItr.reset(); |
| 2494 | ssg.treItr.reset(); |
| 2495 | ssg.volSld = 0; |
| 2496 | ssg.volSldSum = 0; |
| 2497 | ssg.xVolSldItr.reset(); |
| 2498 | ssg.detune = 0; |
| 2499 | ssg.fdetune = 0; |
| 2500 | ssg.nsItr.reset(); |
| 2501 | ssg.nsSum = 0; |
| 2502 | ssg.transpose = 0; |
| 2503 | ssg.hasRequestedTnEffSet = false; |
| 2504 | } |
nothing calls this directly
no test coverage detected