From 945f3ba330620e429bb70cb71d8dc0b9521d8b1d Mon Sep 17 00:00:00 2001 From: XANTRONIX Development Date: Thu, 10 Mar 2022 00:41:49 -0500 Subject: Initial commit of src/drone.c --- include/xas/drone.h | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 include/xas/drone.h (limited to 'include/xas') diff --git a/include/xas/drone.h b/include/xas/drone.h new file mode 100644 index 0000000..d77834c --- /dev/null +++ b/include/xas/drone.h @@ -0,0 +1,88 @@ +#ifndef _XAS_DRONE_H +#define _XAS_DRONE_H + +#include + +#include +#include + +enum xas_drone_chamber_event_type { + XAS_DRONE_CHAMBER_EVENT_NONE, + XAS_DRONE_CHAMBER_EVENT_SYNTH, + XAS_DRONE_CHAMBER_EVENT_DRONE_SPEECH +}; + +typedef struct _xas_drone xas_drone; + +struct _xas_drone { + xas_bank *bank; + xas_spatial_scene *scene; + xas_spatial_object *obj; + float speech_speed; + + const char **speech_lines; + + xas_drone *next; +}; + +typedef struct _xas_drone_chamber_interval { + struct timeval duration; + + size_t freq_l, + freq_r; + + enum xas_synth_type type_l, + type_r; +} xas_drone_chamber_interval; + +typedef struct _xas_drone_chamber_speech { + size_t drone_index, + speech_line; +} xas_drone_chamber_speech; + +typedef struct _xas_drone_chamber_event { + enum xas_drone_chamber_event_type type; + + union { + xas_drone_chamber_interval interval; + xas_drone_chamber_speech speech; + }; +} xas_drone_chamber_event; + +typedef struct _xas_drone_chamber { + xas_spatial_scene *scene; + xas_drone **drones; + size_t drone_count; + + xas_spatial_object *synth_l, + *synth_r; +} xas_drone_chamber; + +xas_drone *xas_drone_new(xas_spatial_scene *scene, + xas_spatial_coord position, + float speech_speed, + size_t speech_sample_count, + size_t speech_line_count, + const char **speech_lines); + +void xas_drone_destroy(xas_drone *drone); + +xas_spatial_object *xas_drone_get_spatial_object(xas_drone *drone); + +xas_drone_chamber *xas_drone_chamber_new(xas_spatial_scene *scene, + xas_spatial_coord location, + size_t drone_count); + +void xas_drone_chamber_destroy(xas_drone_chamber *chamber); + +void xas_drone_chamber_insert_drone(xas_drone_chamber *chamber, + xas_drone *drone, + size_t index); + +int xas_drone_chamber_event_seq(xas_drone_chamber *chamber, + xas_drone_chamber_event *ev, + xas_seq *seq, + int advance, + struct timeval *now); + +#endif /* _XAS_DRONE_H */ -- cgit v1.2.3