diff options
| author | XANTRONIX Development | 2022-03-13 17:16:26 -0400 | 
|---|---|---|
| committer | XANTRONIX Development | 2022-03-13 17:16:26 -0400 | 
| commit | 7b8375ee2026d42b5444f8ae0e7b98e272e87d69 (patch) | |
| tree | 38382c0062f095c9efcd0d6bc29e1b5a5e6ac2f1 /include | |
| parent | 98de824b0eb038d37f62f5317a367b2bfbd38b9d (diff) | |
| download | xas-7b8375ee2026d42b5444f8ae0e7b98e272e87d69.tar.gz xas-7b8375ee2026d42b5444f8ae0e7b98e272e87d69.tar.bz2 xas-7b8375ee2026d42b5444f8ae0e7b98e272e87d69.zip | |
Refactor drone speech modules
Changes:
    * Implement xas_drone_vox type to wrap a xas_vox and audio
      stream object in one, and save rendered speech to a drone's
      audio bank
    * Implement xas_drone_speech_import() as a convenience wrapper to
      xas_drone_vox methods
Diffstat (limited to 'include')
| -rw-r--r-- | include/xas/drone.h | 66 | 
1 files changed, 55 insertions, 11 deletions
| diff --git a/include/xas/drone.h b/include/xas/drone.h index b790cc5..d7dc4c0 100644 --- a/include/xas/drone.h +++ b/include/xas/drone.h @@ -1,24 +1,37 @@  #ifndef _XAS_DRONE_H  #define _XAS_DRONE_H +#include <stdarg.h>  #include <sys/time.h>  #include <xas/spatial.h> +#include <xas/vox.h>  #include <xas/seq.h> +#define XAS_DRONE_VOX_BUFFER_SIZE    735 +#define XAS_DRONE_VOX_TEXT2WAVE_PATH "/usr/bin/text2wave" + +#define XAS_DRONE_VOX_DEFAULT_SPEED  1.0f +#define XAS_DRONE_VOX_DEFAULT_VOICE  "voice_cmu_us_slt_cg" +  #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 { +typedef struct _xas_drone {      xas_bank *bank;      xas_spatial_scene *scene;      xas_spatial_object *obj; -    float speech_speed; -    const char **speech_lines; -}; +} xas_drone; + +typedef struct _xas_drone_vox { +    xas_drone *drone; +    xas_vox *obj; +    xas_audio_stream *source; + +    const char *voice; +    float speed; +} xas_drone_vox;  typedef struct _xas_drone_chamber_interval {      struct timeval duration; @@ -36,7 +49,6 @@ typedef struct _xas_drone_chamber_speech {  } xas_drone_chamber_speech;  typedef struct _xas_drone_chamber { -    xas_spatial_scene *scene;      xas_drone **drones;      size_t drone_count; @@ -45,17 +57,49 @@ typedef struct _xas_drone_chamber {                           *synth_r;  } xas_drone_chamber; +/* + * Methods for individual drones + */  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); +                             size_t bank_entry_size, +                             size_t bank_entry_count);  void xas_drone_destroy(xas_drone *drone);  xas_spatial_object *xas_drone_get_spatial_object(xas_drone *drone); +int xas_drone_speech_import(xas_drone *drone, +                              const char *voice, +                              float speed, +                              size_t speech_sample_first, +                              size_t speech_sample_count, +                              const char **speech_lines); + +/* + * Methods for drone vocalisations + */ +xas_drone_vox *xas_drone_vox_new(xas_drone *drone); + +void xas_drone_vox_destroy(xas_drone_vox *vox); + +void xas_drone_vox_set_voice(xas_drone_vox *vox, const char *voice); + +void xas_drone_vox_set_speed(xas_drone_vox *vox, float speed); + +int xas_drone_vox_vsayf(xas_drone_vox *vox, +                          const char *format, +                          va_list args); + +int xas_drone_vox_sayf(xas_drone_vox *vox, const char *format, ...); + +int xas_drone_vox_say(xas_drone_vox *vox, const char *text); + +int xas_drone_vox_save(xas_drone_vox *vox, size_t sample_index); + +/* + * Drone conversion chamber methods + */  xas_drone_chamber *xas_drone_chamber_new(xas_spatial_scene *scene,                                               xas_spatial_coord location,                                               size_t drone_count); | 
 
    