2026-04-30 09:32:14 +02:00

49 lines
976 B
C

#pragma once
#include <stdbool.h>
#include <stdint.h>
#include <math.h>
#include "input.h"
#include "vco.h"
typedef struct {
float clock_bpm;
float vco_freq;
float vco_volume;
vco_mode_t vco_mode;
float filter_freq;
float filter_resonance;
float env1_attack;
float env1_decay;
float env2_attack;
float env2_decay;
float reverb_amount;
bool quant_enabled;
bool amen_enabled;
float beat_samples;
float playback_rate;
float clock_inc;
uint32_t amen_inc_fp;
} state_t;
static inline float map_linear(float v, float min, float max) {
return min + v * (max - min);
}
static inline float map_exponential(float v, float min, float max) {
if (min == 0.0f) min = 1e-6f;
return min * powf(max / min, v);
}
static inline float map_squared(float v, float min, float max) {
return min + (v * v) * (max - min);
}
static inline float max_constant(float _0, float val, float _1) {
return val;
}
void update_state(state_t* state, input_t* input);