From 145229b9ec9b0f50cdef537f1bae5f09c3198ead Mon Sep 17 00:00:00 2001 From: spl3g Date: Fri, 10 Oct 2025 13:34:07 +0300 Subject: Make envelope customizable --- src/sounds.h | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'src/sounds.h') diff --git a/src/sounds.h b/src/sounds.h index 4b2f78f..49386ce 100644 --- a/src/sounds.h +++ b/src/sounds.h @@ -24,6 +24,11 @@ typedef enum { PARAM_OSC, PARAM_VOLUME, + + PARAM_ATTACK, + PARAM_DECAY, + PARAM_SUSTAIN, + PARAM_RELEASE, } param_type; typedef enum { @@ -79,13 +84,17 @@ typedef enum { } envelope_state; typedef struct { - envelope_state state; - int counter; int attack_time; int decay_time; float sustain_level; int release_time; - float increases[3]; +} envelope_params; + +typedef struct { + envelope_state state; + int counter; + float current_value; + envelope_params params; } envelope; typedef struct { @@ -104,12 +113,14 @@ typedef struct { typedef struct { oscilator_type oscilator_type; float master_volume; + envelope_params envelope_params; } synth_params; typedef float (*oscilator_func)(float phase); int mqueue_get(message_queue *q, synth_message *msg); int mqueue_push(message_queue *q, synth_message msg); +int mqueue_push_many(message_queue *q, synth_message *msg, size_t count); #define mqueue_init(q) \ do { \ -- cgit v1.2.3