From 3c6872ccab4dcddc6ab6df7d17df3394964a6e46 Mon Sep 17 00:00:00 2001 From: XANTRONIX Development Date: Mon, 28 Feb 2022 09:36:13 -0500 Subject: Initial implementation of src/script.c --- include/xas/script.h | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 include/xas/script.h (limited to 'include') diff --git a/include/xas/script.h b/include/xas/script.h new file mode 100644 index 0000000..102d421 --- /dev/null +++ b/include/xas/script.h @@ -0,0 +1,86 @@ +#ifndef _XAS_SCRIPT_H +#define _XAS_SCRIPT_H + +#include +#include + +#include +#include +#include +#include +#include + +enum xas_script_event_type { + XAS_SCRIPT_EVENT_OFF, + XAS_SCRIPT_EVENT_ON, + XAS_SCRIPT_EVENT_SET_POSITION, + XAS_SCRIPT_EVENT_SET_GAIN, + XAS_SCRIPT_EVENT_SET_BANK_INDEX, + XAS_SCRIPT_EVENT_SET_FREQUENCY +}; + +typedef struct _xas_script_event xas_script_event; + +struct _xas_script_event { + enum xas_script_event_type type; + + xas_spatial_object *object; + + struct timeval timestamp; + + union { + float gain; + xas_spatial_coord point; + size_t index; + size_t frequency; + }; + + xas_script_event *next; +}; + +typedef struct _xas_script { + xas_spatial_scene *scene; + + xas_script_event *first; + + struct timeval timestamp; + + size_t buffer_size, + current_index; +} xas_script; + +xas_script *xas_script_new(xas_spatial_scene *scene, size_t buffer_size); + +void xas_script_destroy(xas_script *script); + +int xas_script_add_event_off(xas_script *script, + xas_spatial_object *object, + struct timeval timestamp); + +int xas_script_add_event_on(xas_script *script, + xas_spatial_object *object, + struct timeval timestamp); + +int xas_script_add_position_set(xas_script *script, + xas_spatial_object *object, + struct timeval timestamp, + xas_spatial_coord point); + +int xas_script_add_gain_set(xas_script *script, + xas_spatial_object *object, + struct timeval timestamp, + float gain); + +int xas_script_add_bank_set(xas_script *script, + xas_spatial_object *object, + struct timeval timestamp, + size_t index); + +int xas_script_add_frequency_set(xas_script *script, + xas_spatial_object *object, + struct timeval timestamp, + size_t frequency); + +int xas_script_play(xas_script *script, xas_audio_stream *sink); + +#endif /* _XAS_SCRIPT_H */ -- cgit v1.2.3