37 lines
716 B
C++
37 lines
716 B
C++
|
|
#pragma once
|
|
|
|
#include <vector>
|
|
#include <cstdint>
|
|
|
|
enum class ParamId : uint8_t {
|
|
MasterGain,
|
|
Count
|
|
};
|
|
|
|
struct Param {
|
|
float val;
|
|
float min;
|
|
float max;
|
|
};
|
|
|
|
constexpr size_t PARAM_COUNT = static_cast<size_t>(ParamId::Count);
|
|
|
|
class ParameterStore {
|
|
|
|
public:
|
|
|
|
ParameterStore();
|
|
~ParameterStore() = default;
|
|
|
|
void set(ParamId id, float value);
|
|
void set(ParamId id, int32_t value) { set(id, static_cast<float>(value)); }
|
|
void set(EnvelopeId id, float depth, float a, float d, float s, float r);
|
|
float get(ParamId id) const;
|
|
int32_t getInt(ParamId id) const { return static_cast<int32_t>(get(id)); }
|
|
|
|
private:
|
|
|
|
std::array<std::atomic<Param>, PARAM_COUNT> values_;
|
|
|
|
}; |