memlnaut-nisps/modes/MEMLNautMode.hpp

28 lines
1.1 KiB
C++
Raw Normal View History

2025-11-23 16:48:14 +01:00
#pragma once
#include <concepts>
#include <memory>
#include <span>
#include "WString.h"
#include "../src/memllib/interface/InterfaceBase.hpp"
#include "../src/memllib/interface/MIDIInOut.hpp"
#include "../src/memllib/audio/AudioDriver.hpp"
template<typename T>
concept MEMLNautMode = requires(T proc) {
{proc.getHelpTitle()} -> std::same_as<String>;
2025-11-24 12:29:33 +01:00
// {proc.getNParams()} -> std::same_as<size_t>;
// {proc.setVoiceSpace(size_t{})} -> std::same_as<void>;
2025-11-23 16:48:14 +01:00
{proc.setupMIDI(std::shared_ptr<MIDIInOut>{})} -> std::same_as<void>;
{proc.addViews()} -> std::same_as<void>;
2025-11-24 12:29:33 +01:00
{proc.setupAudio(float{})} -> std::same_as<void>;
2025-11-23 16:48:14 +01:00
{proc.loop()} -> std::same_as<void>;
2025-11-24 12:29:33 +01:00
// {proc.getVoiceSpaceList()} -> std::same_as<std::span<String>>;
2025-11-23 16:48:14 +01:00
{proc.process(stereosample_t{})} -> std::same_as<stereosample_t>;
{proc.analyse(stereosample_t{})} -> std::same_as<void>;
2025-11-24 12:29:33 +01:00
{proc.processAnalysisParams()} -> std::same_as<void>;
// {proc.getNMIDICtrlOutputs()} -> std::same_as<size_t>;
{proc.setupInterface()} -> std::same_as<void>;
2025-11-23 16:48:14 +01:00
requires std::same_as<decltype(T::kN_InputParams), const size_t>;
};