diff options
Diffstat (limited to 'src/sounds.h')
| -rw-r--r-- | src/sounds.h | 80 |
1 files changed, 2 insertions, 78 deletions
diff --git a/src/sounds.h b/src/sounds.h index 61346c6..d8c8435 100644 --- a/src/sounds.h +++ b/src/sounds.h @@ -7,6 +7,8 @@ #include <pthread.h> #include <stdbool.h> +#include "messages.h" + #define check(ret) \ do { \ int res = (ret); \ @@ -17,59 +19,9 @@ } \ } while (0) -#define MESSAGE_QUEUE_SIZE 128 #define SAMPLE_RATE 48000 #define PERIOD_SIZE 480 -typedef enum { - PARAM_OSC, - PARAM_VOLUME, - - PARAM_ATTACK, - PARAM_DECAY, - PARAM_SUSTAIN, - PARAM_RELEASE, -} param_type; - -typedef enum { - OSC_SINE, - OSC_SAW, - OSC_SQUARE, - OSC_TRIANGLE, -} oscilator_type; - -typedef enum { - MSG_NOTE_ON, - MSG_NOTE_OFF, - MSG_ALL_NOTES_OFF, - MSG_PARAM_CHANGE, - MSG_STOP, -} synth_message_type; - -typedef struct { - synth_message_type type; - - union { - // NOTE_ON / NOTE_OFF - struct { - size_t note_id; - } note; - - // SET_PARAM; - struct { - param_type param_type; - float value; - } param_change; - }; -} synth_message; - -typedef struct { - synth_message buffer[MESSAGE_QUEUE_SIZE]; - size_t head; - size_t tail; - pthread_mutex_t lock; -} message_queue; - typedef struct { snd_pcm_t *pcm; message_queue *queue; @@ -119,34 +71,6 @@ typedef struct { 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 { \ - (q)->head = (q)->tail = 0; \ - pthread_mutex_init(&(q)->lock, NULL); \ - } while (0) - -/* #define mqueue_get(q, msg, ok) \ */ -/* do { \ */ -/* pthread_mutex_lock(&(q)->lock); \ */ -/* if ((q)->tail == (q)->head) { \ */ -/* pthread_mutex_unlock(&(q)->lock); \ */ -/* *(ok) = false;\ */ -/* break; \ */ -/* } \ */ -/* \ */ -/* *(msg) = (q)->buffer[(q)->tail]; \ */ -/* (q)->tail = ((q)->tail + 1) % MESSAGE_QUEUE_SIZE; \ */ -/* \ */ -/* pthread_mutex_unlock(&(q)->lock); \ */ -/* *(ok) = true; \ */ -/* } while (0) */ - -#define mqueue_empty(q) (q)->head == (q)->tail - void *sound_thread_start(void *ptr); int set_hw_params(snd_pcm_t *pcm); |
