#ifndef __THRU_AUDIO_APP_HPP__ #define __THRU_AUDIO_APP_HPP__ #include "src/memllib/audio/AudioAppBase.hpp" // Added missing include #include #include #include //#include "src/memllib/interface/InterfaceBase.hpp" // Added missing include #include #include "voicespaces/VoiceSpaces.hpp" template //params just go out as MIDI for this one class ThruAudioApp : public AudioAppBase { public: static constexpr size_t kN_Params = NPARAMS; static constexpr size_t nVoiceSpaces=1; std::array, nVoiceSpaces> voiceSpaces; VoiceSpaceFn currentVoiceSpace; std::array getVoiceSpaceNames() { std::array names; for(size_t i=0; i < voiceSpaces.size(); i++) { names[i] = voiceSpaces[i].name; } return names; } void setVoiceSpace(size_t i) { if (i < voiceSpaces.size()) { currentVoiceSpace = voiceSpaces[i].mappingFunction; } } ThruAudioApp() : AudioAppBase() { auto voiceSpaceThru = [this](const std::array& params) { }; voiceSpaces[0] = {"thru", voiceSpaceThru}; currentVoiceSpace = voiceSpaces[0].mappingFunction; }; __attribute__((hot)) stereosample_t __force_inline Process(const stereosample_t x) override { // float y = x.L + x.R; // y = filt.play(y); // return stereosample_t{y, y}; return x; } void Setup(float sample_rate, std::shared_ptr interface) override { AudioAppBase::Setup(sample_rate, interface); maxiSettings::sampleRate = sample_rate; filt.set(maxiBiquad::filterTypes::HIGHPASS, 20.f, 0.707f, 0); } __attribute__((always_inline)) void ProcessParams(const std::array& params) { currentVoiceSpace(params); } protected: maxiBiquad filt; }; #endif