diff options
Diffstat (limited to 'include/xas')
| -rw-r--r-- | include/xas/script.h | 86 | 
1 files changed, 86 insertions, 0 deletions
| 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 <sys/types.h> +#include <sys/time.h> + +#include <xas/audio.h> +#include <xas/vox.h> +#include <xas/bank.h> +#include <xas/synth.h> +#include <xas/spatial.h> + +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 */ | 
 
    