summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/drone.c39
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;
}