#ifndef _XAS_DRONE_H #define _XAS_DRONE_H #include #include #include #define XAS_DRONE_CHAMBER_BASS_FREQUENCY 20 /* Hz */ #define XAS_DRONE_CHAMBER_BASS_TYPE XAS_SYNTH_SQUARE 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; }; 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 { xas_spatial_scene *scene; xas_drone **drones; size_t drone_count; xas_spatial_object *synth_bass, *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); void xas_drone_chamber_set_drone_gain(xas_drone_chamber *chamber, float gain); void xas_drone_chamber_set_synth_gain(xas_drone_chamber *chamber, float gain); void xas_drone_chamber_bass_start(xas_drone_chamber *chamber); void xas_drone_chamber_bass_stop(xas_drone_chamber *chamber); void xas_drone_chamber_bass_set_type(xas_drone_chamber *chamber, enum xas_synth_type type); void xas_drone_chamber_bass_set_frequency(xas_drone_chamber *chamber, size_t freq); int xas_drone_chamber_seq_intervals(xas_drone_chamber *chamber, xas_drone_chamber_interval *intervals, xas_seq *seq, size_t count, struct timeval *now); int xas_drone_chamber_seq_speech(xas_drone_chamber *chamber, xas_drone *drone, xas_seq *seq, size_t speech_part, struct timeval *now); int xas_drone_chamber_seq_chorus(xas_drone_chamber *chamber, xas_seq *seq, size_t speech_part, struct timeval *now); #endif /* _XAS_DRONE_H */