diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/drone.c | 39 | 
1 files changed, 15 insertions, 24 deletions
| diff --git a/src/drone.c b/src/drone.c index e4a0cb7..3c611e4 100644 --- a/src/drone.c +++ b/src/drone.c @@ -115,19 +115,10 @@ xas_drone_vox *xas_drone_vox_new(xas_drone *drone) {          goto error_vox_new;      } -    if ((vox->source = xas_vox_stream_new(vox->obj)) == NULL) { -        goto error_vox_stream_new; -    } -      vox->drone = drone; -    vox->voice = XAS_DRONE_VOX_DEFAULT_VOICE; -    vox->speed = XAS_DRONE_VOX_DEFAULT_SPEED;      return vox; -error_vox_stream_new: -    xas_vox_destroy(vox->obj); -  error_vox_new:      free(vox); @@ -136,17 +127,18 @@ error_malloc_vox:  }  void xas_drone_vox_destroy(xas_drone_vox *vox) { -    xas_audio_stream_destroy(vox->source);      xas_vox_destroy(vox->obj);      free(vox);  } -void xas_drone_vox_set_voice(xas_drone_vox *vox, const char *voice) { -    vox->voice = voice; +int xas_drone_vox_set_voice(xas_drone_vox *vox, const char *voice) { +    return xas_vox_set_voice(vox->obj, voice);  } -void xas_drone_vox_set_speed(xas_drone_vox *vox, float speed) { -    vox->speed = speed; +int xas_drone_vox_set_speed(xas_drone_vox *vox, float speed) { +    return xas_vox_set_parameter_float(vox->obj, +                                         "Duration_Stretch", +                                         1.0f / speed);  }  int xas_drone_vox_say(xas_drone_vox *vox, const char *text) { @@ -173,14 +165,10 @@ int xas_drone_vox_sayf(xas_drone_vox *vox, const char *format, ...) {  }  int xas_drone_vox_save(xas_drone_vox *vox, size_t sample_index) { -    if (vox->voice && xas_vox_set_voice(vox->obj, vox->voice) < 0) { -        goto error_vox_set_voice; -    } +    xas_audio_stream *source; -    if (xas_vox_set_parameter_float(vox->obj, -                                      "Duration_Stretch", -                                      1.0f / vox->speed) < 0) { -        goto error_vox_set_parameter_float; +    if ((source = xas_vox_stream_new(vox->obj)) == NULL) { +        goto error_vox_stream_new;      }      if (xas_vox_generate(vox->obj) < 0) { @@ -188,18 +176,21 @@ int xas_drone_vox_save(xas_drone_vox *vox, size_t sample_index) {      }      if (xas_bank_record(vox->drone->bank, -                          vox->source, +                          source,                            sample_index,                            vox->drone->bank->entry_size) < 0) {          goto error_bank_record;      } +    xas_audio_stream_destroy(source); +      return 0;  error_bank_record:  error_vox_generate: -error_vox_set_parameter_float: -error_vox_set_voice: +    xas_audio_stream_destroy(source); + +error_vox_stream_new:      return -1;  } | 
 
    