#pragma once #include "../src/memllib/interface/MIDIInOut.hpp" #include "./AudioApps/VerbFXAudioApp.hpp" #include "MEMLNautMode.hpp" #include #include #include "../XiasriAnalysis.hpp" #include "../src/memllib/utils/sharedMem.hpp" #include "../src/memllib/audio/AudioDriver.hpp" #include "../src/memllib/examples/InterfaceRL.hpp" #include "../src/memllib/PicoDefs.hpp" class MEMLNautModeVerbFX { public: constexpr static size_t kN_InputParams = MEMLNAUT_ANALOG_INPUTS; InterfaceRL interface; std::shared_ptr interfacePtr; // XiasriAnalysis mlAnalysis{kSampleRate}; // SharedBuffer machine_list_buffer; VerbFXAudioApp<> audioAppVerbFX; std::shared_ptr midi_interf; void setupInterface() { interface.setup(kN_InputParams, VerbFXAudioApp<>::kN_Params); interface.bindInterface(MEMLNAUT_INPUT_MODE, JOYSTICK_IS_4D); interfacePtr = make_non_owning(interface); } String getHelpTitle() { return "VerbFX Mode"; } __force_inline stereosample_t process(stereosample_t x) { return audioAppVerbFX.Process(x); } void setupMIDI(std::shared_ptr new_midi_interf) { midi_interf = new_midi_interf; midi_interf->Setup(0); midi_interf->SetMIDISendChannel(1); interface.bindMIDI(midi_interf, true); } void addViews() { }; void setupAudio(float sample_rate) { audioAppVerbFX.Setup(sample_rate, interfacePtr); // Reinitialize XiasriAnalysis filters after maxiSettings is properly configured // mlAnalysis.ReinitFilters(); } __force_inline void loop() { audioAppVerbFX.loop(); } __force_inline void analyse(stereosample_t x) { // union { // XiasriAnalysis::parameters_t p; // float v[XiasriAnalysis::kN_Params]; // } param_u; // param_u.p = mlAnalysis.Process(x.L + x.R); // // Write params into shared_buffer // machine_list_buffer.writeNonBlocking(param_u.v, XiasriAnalysis::kN_Params); } __force_inline void processAnalysisParams() { // // Read SharedBuffer // std::vector mlist_params(XiasriAnalysis::kN_Params, 0); // machine_list_buffer.readNonBlocking(mlist_params); // // Send parameters to RL interface // interface.readAnalysisParameters(mlist_params); // PERIODIC_RUN( // Serial.printf("%f %f %f\n", mlist_params[0], mlist_params[1], mlist_params[2]); // , 100); } void loopCore0() {} };