memlnaut-nisps/modes/MEMLNautModeChannelStrip.hpp

76 lines
2.2 KiB
C++
Raw Normal View History

2025-11-23 16:48:14 +01:00
#pragma once
#include "../src/memllib/interface/MIDIInOut.hpp"
#include "../ChannelStripAudioApp.hpp"
2025-11-24 12:29:33 +01:00
#include "../src/memllib/examples/InterfaceRL.hpp"
2025-11-23 16:48:14 +01:00
#include "MEMLNautMode.hpp"
2025-11-24 12:29:33 +01:00
#include "../src/memllib/PicoDefs.hpp"
2025-11-23 16:48:14 +01:00
#include <memory>
#include <array>
class MEMLNautModeChannelStrip {
public:
constexpr static size_t kN_InputParams = 3; // joystick x, y, rotate
ChannelStripAudioApp<> audioAppChannelStrip;
std::array<String, ChannelStripAudioApp<>::nVoiceSpaces> voiceSpaceList;
2025-11-24 12:29:33 +01:00
InterfaceRL interface;
std::shared_ptr<InterfaceRL> interfacePtr;
void setupInterface() {
interface.setup(kN_InputParams, ChannelStripAudioApp<>::kN_Params);
interface.bindInterface(InterfaceRL::INPUT_MODES::JOYSTICK);
interfacePtr = make_non_owning(interface);
}
2025-11-23 16:48:14 +01:00
String getHelpTitle() {
return "Channel Strip Mode";
}
2025-11-24 12:29:33 +01:00
// size_t getNParams() {
// return ChannelStripAudioApp<>::kN_Params;
// }
2025-11-23 16:48:14 +01:00
2025-11-24 12:29:33 +01:00
// void setVoiceSpace(size_t i) {
// audioAppChannelStrip.setVoiceSpace(i);
// }
2025-11-23 16:48:14 +01:00
2025-11-24 12:29:33 +01:00
// std::span<String> getVoiceSpaceList() {
// return voiceSpaceList;
// }
2025-11-23 16:48:14 +01:00
__force_inline stereosample_t process(stereosample_t x) {
return audioAppChannelStrip.Process(x);
}
void setupMIDI(std::shared_ptr<MIDIInOut> midi_interf) {
}
void addViews() {
2025-11-24 12:29:33 +01:00
std::shared_ptr<VoiceSpaceSelectView> voiceSpaceSelectView;
voiceSpaceSelectView = std::make_shared<VoiceSpaceSelectView>("Voice Spaces");
MEMLNaut::Instance()->disp->InsertViewAfter(interface.rlStatsView, voiceSpaceSelectView);
voiceSpaceSelectView->setOptions(voiceSpaceList); //set by core 1 on startup
voiceSpaceSelectView->setNewVoiceCallback(
[this](size_t idx) {
audioAppChannelStrip.setVoiceSpace(idx);
});
2025-11-23 16:48:14 +01:00
};
2025-11-24 12:29:33 +01:00
void setupAudio(float sample_rate) {
audioAppChannelStrip.Setup(sample_rate, interfacePtr);
2025-11-23 16:48:14 +01:00
voiceSpaceList = audioAppChannelStrip.getVoiceSpaceNames();
}
__force_inline void loop() {
audioAppChannelStrip.loop();
}
size_t getNMIDICtrlOutputs() {
return 0;
}
2025-11-24 12:29:33 +01:00
inline void processAnalysisParams() {}
2025-11-23 16:48:14 +01:00
};