aboutsummaryrefslogtreecommitdiff
path: root/src/sounds.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/sounds.h')
-rw-r--r--src/sounds.h17
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 { \