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