diff --git a/firmware/src/core_a7/aux_core_player.hh b/firmware/src/core_a7/aux_core_player.hh index c4db323eb..c53336eed 100644 --- a/firmware/src/core_a7/aux_core_player.hh +++ b/firmware/src/core_a7/aux_core_player.hh @@ -32,6 +32,10 @@ struct AuxPlayer { void play_modules() { + for (auto module_i : module_ids) { + patch_player.process_module_outputs(module_i); + } + for (auto module_i : module_ids) { patch_player.step_module(module_i); } @@ -45,13 +49,11 @@ struct AuxPlayer { module_ids.clear(); auto num_modules = SMPControl::read(); - // pr_dbg("Core 2 will play %u modules:\n", num_modules); if (num_modules < module_ids.max_size()) { for (auto i = 0u; i < num_modules; i++) { auto id = SMPControl::read(i + 2); module_ids.push_back(id); - // pr_dbg("%u\n", id); } } else diff --git a/firmware/src/patch_play/patch_player.hh b/firmware/src/patch_play/patch_player.hh index 166300448..3bc7a0e89 100644 --- a/firmware/src/patch_play/patch_player.hh +++ b/firmware/src/patch_play/patch_player.hh @@ -213,6 +213,9 @@ public: else if (num_modules > 2) { smp.update_modules(); + for (auto module_i : core_balancer.cores.parts[0]) { + process_module_outputs(module_i); + } for (auto module_i : core_balancer.cores.parts[0]) { step_module(module_i); } @@ -223,14 +226,16 @@ public: update_midi_pulses(); } + void process_module_outputs(unsigned module_i) { + for (auto &out : cables.outs[module_i]) + out.val = modules[module_i]->get_output(out.jack_id); + } + void step_module(unsigned module_i) { for (auto const &in : cables.ins[module_i]) modules[module_i]->set_input(in.jack_id, cables.outs[in.out_module_id][in.out_cache_idx].val); modules[module_i]->update(); - - for (auto &out : cables.outs[module_i]) - out.val = modules[module_i]->get_output(out.jack_id); } void update_patch_singlecore() {