#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 */