From 3d470011ef84a2b0e85234f66e61ff01fb1939c8 Mon Sep 17 00:00:00 2001 From: XANTRONIX Development Date: Sun, 13 Mar 2022 22:39:37 -0400 Subject: Generalise drone speech methods to generic samples --- src/drone.c | 79 ++++++++++++++++++++++++++++++------------------------------- 1 file changed, 39 insertions(+), 40 deletions(-) (limited to 'src') diff --git a/src/drone.c b/src/drone.c index 1562196..1534e76 100644 --- a/src/drone.c +++ b/src/drone.c @@ -54,13 +54,13 @@ 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, + size_t sample_index, + size_t sample_count, const char **speech_lines) { xas_drone_vox *vox; size_t i, o; - if (speech_sample_first + speech_sample_count - 1 >= drone->bank->entry_count) { + if (sample_index + sample_count - 1 >= drone->bank->entry_count) { errno = EINVAL; goto error_invalid; @@ -76,7 +76,7 @@ int xas_drone_speech_import(xas_drone *drone, xas_drone_vox_set_speed(vox, speed); - for (i=0, o=speech_sample_first; iobj, + *now, + speech_part) < 0) { + goto error_xas_seq_add; + } + + if (xas_seq_add_event_on(seq, + drone->obj, + *now) < 0) { + goto error_xas_seq_add; + } + + xas_bank_entry_duration(drone->bank, + speech_part, + &duration); + + timeradd(now, &duration, &tmp); + + now->tv_sec = tmp.tv_sec; + now->tv_usec = tmp.tv_usec; + + return 0; + +error_xas_seq_add: + return -1; +} + xas_drone_vox *xas_drone_vox_new(xas_drone *drone) { xas_drone_vox *vox; @@ -357,42 +392,6 @@ error_seq_add: return -1; } -int xas_drone_chamber_seq_speech(xas_drone_chamber *chamber, - xas_drone *drone, - xas_seq *seq, - size_t speech_part, - struct timeval *now) { - struct timeval duration, - tmp; - - if (xas_seq_add_set_bank(seq, - drone->obj, - *now, - speech_part) < 0) { - goto error_xas_seq_add; - } - - if (xas_seq_add_event_on(seq, - drone->obj, - *now) < 0) { - goto error_xas_seq_add; - } - - xas_bank_entry_duration(drone->bank, - speech_part, - &duration); - - timeradd(now, &duration, &tmp); - - now->tv_sec = tmp.tv_sec; - now->tv_usec = tmp.tv_usec; - - return 0; - -error_xas_seq_add: - return -1; -} - static void max_speech_duration(xas_drone_chamber *chamber, size_t speech_part, struct timeval *max) { -- cgit v1.2.3