MCPcopy Create free account
hub / github.com/ZL-Audio/ZLEqualizer / process

Method process

source/zlp/controller.cpp:526–718  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

524
525 template <bool bypass>
526 void Controller::process(std::array<double*, 2> main_pointers, std::array<double*, 2> side_pointers,
527 const size_t num_samples) {
528 prepareBuffer();
529 if (c_delay_on_) {
530 delay_.process(main_pointers, num_samples);
531 }
532 // copy pre buffer for FFT processing
533 if (bypass || c_editor_on_ || c_match_bypass_on_) {
534 zldsp::vector::copy(pre_main_pointers_[0], main_pointers[0], num_samples);
535 zldsp::vector::copy(pre_main_pointers_[1], main_pointers[1], num_samples);
536 }
537 // copy solo buffer
538 if (c_solo_on_) {
539 if (c_solo_side_ || !c_dynamic_on_[c_solo_idx_]) {
540 std::memset(solo_pointers_[0], 0, num_samples * sizeof(double));
541 std::memset(solo_pointers_[1], 0, num_samples * sizeof(double));
542 }
543 switch (c_lrms_[c_solo_idx_]) {
544 case FilterStereo::kStereo: {
545 if (!c_solo_side_) {
546 zldsp::vector::copy(solo_pointers_[0], main_pointers[0], num_samples);
547 zldsp::vector::copy(solo_pointers_[1], main_pointers[1], num_samples);
548 solo_filter_.process(solo_pointers_, num_samples);
549 }
550 break;
551 }
552 case FilterStereo::kLeft: {
553 std::memset(solo_pointers_[1], 0, num_samples * sizeof(double));
554 if (!c_solo_side_) {
555 zldsp::vector::copy(solo_pointers_[0], main_pointers[0], num_samples);
556 solo_filter_.process({&solo_pointers_[0], 1}, num_samples);
557 }
558 break;
559 }
560 case FilterStereo::kRight: {
561 std::memset(solo_pointers_[0], 0, num_samples * sizeof(double));
562 if (!c_solo_side_) {
563 zldsp::vector::copy(solo_pointers_[1], main_pointers[1], num_samples);
564 solo_filter_.process({&solo_pointers_[1], 1}, num_samples);
565 }
566 break;
567 }
568 case FilterStereo::kMid: {
569 if (!c_solo_side_) {
570 zldsp::vector::copy(solo_pointers_[0], main_pointers[0], num_samples);
571 zldsp::vector::copy(solo_pointers_[1], main_pointers[1], num_samples);
572 zldsp::splitter::InplaceMSSplitter<double>::split(
573 solo_pointers_[0], solo_pointers_[1], num_samples);
574 solo_filter_.process({&solo_pointers_[0], 1}, num_samples);
575 }
576 std::memset(solo_pointers_[1], 0, num_samples * sizeof(double));
577 break;
578 }
579 case FilterStereo::kSide: {
580 if (!c_solo_side_) {
581 zldsp::vector::copy(solo_pointers_[0], main_pointers[0], num_samples);
582 zldsp::vector::copy(solo_pointers_[1], main_pointers[1], num_samples);
583 zldsp::splitter::InplaceMSSplitter<double>::split(

Callers 3

processMainFFTMethod · 0.45
processSideFFTMethod · 0.45
processOneBandDynamicMethod · 0.45

Calls 6

copyFunction · 0.85
sum_sqrFunction · 0.85
getCurrentGainLinearMethod · 0.80
processPreMethod · 0.45
processPostMethod · 0.45
storeMethod · 0.45

Tested by

no test coverage detected