sint-gauntlet/state.c

28 lines
1.2 KiB
C

#include "const.h"
#include "input.h"
#include "state.h"
void update_state(state_t* state, input_t* input) {
state->clock_bpm = map_linear(input->pots[0], BPM_MIN, BPM_MAX);
state->vco_freq = map_exponential(input->pots[1], VCO_FREQ_MIN, VCO_FREQ_MAX);
state->vco_volume = map_exponential(input->pots[2], VCO_VOLUME_MIN, VCO_VOLUME_MAX);
state->filter_freq = map_exponential(input->pots[3], FILTER_FREQ_MIN, FILTER_FREQ_MAX);
state->filter_resonance = map_linear(input->pots[4], FILTER_RES_MIN, FILTER_RES_MAX);
state->env1_attack = map_linear(input->pots[5], ENV_ATTACK_MIN, ENV_ATTACK_MAX);
state->env1_release = map_linear(input->pots[6], ENV_RELEASE_MIN, ENV_RELEASE_MAX);
state->env2_attack = map_linear(input->pots[7], ENV_ATTACK_MIN, ENV_ATTACK_MAX);
state->env2_release = map_linear(input->pots[8], ENV_RELEASE_MIN, ENV_RELEASE_MAX);
state->reverb_amount = map_linear(input->pots[9], REVERB_AMOUNT_MIN, REVERB_AMOUNT_MAX);
static bool pressed = false;
if (!pressed && input->buttons[0]) {
state->vco_mode = (vco_mode_t)((state->vco_mode + 1) % 4);
pressed = true;
} else pressed = false;
state->quant_enabled = input->buttons[1];
state->amen_enabled = input->buttons[2];
}