summaryrefslogtreecommitdiffstats
path: root/include/xas
diff options
context:
space:
mode:
Diffstat (limited to 'include/xas')
-rw-r--r--include/xas/drone.h88
1 files changed, 88 insertions, 0 deletions
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 <sys/time.h>
+
+#include <xas/spatial.h>
+#include <xas/seq.h>
+
+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 */