diff options
| author | spl3g <spleefer6@yandex.ru> | 2025-10-10 13:34:07 +0300 |
|---|---|---|
| committer | spl3g <spleefer6@yandex.ru> | 2025-10-10 13:34:29 +0300 |
| commit | 145229b9ec9b0f50cdef537f1bae5f09c3198ead (patch) | |
| tree | 7e0757cc1f9ece826a95f5c2caf54ce6a2d653ed /src/sounds.h | |
| parent | febc94a11b127fd9ebb4153c06c9289949ffaab9 (diff) | |
Make envelope customizable
Diffstat (limited to 'src/sounds.h')
| -rw-r--r-- | src/sounds.h | 17 |
1 files changed, 14 insertions, 3 deletions
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 { \ |
