rmx-19/Source/PresetBank.h
2026-09-08 21:57:34 +02:00

36 lines
No EOL
812 B
C++

#pragma once
#include "Params.h"
#include <juce_audio_processors/juce_audio_processors.h>
#include <vector>
struct Patch
{
const char* name;
const char* category;
float v[prm::num];
};
struct CategoryIndex
{
juce::StringArray names;
std::vector<std::vector<int>> patchIndices; // parallel to names
};
class PresetBank
{
public:
PresetBank();
int size() const noexcept { return (int) patches.size(); }
const Patch& get (int i) const { return patches[(size_t) i]; }
int findByName (const juce::String&) const;
void writeTo (int i, juce::AudioProcessorValueTreeState&) const;
const CategoryIndex& categories() const { return catIndex; }
private:
std::vector<Patch> patches;
CategoryIndex catIndex;
void buildCategoryIndex();
};