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 --- examples/pod.c | 18 ++++++------ examples/seq.c | 18 ++++++------ include/xas/drone.h | 15 +++++----- src/drone.c | 79 ++++++++++++++++++++++++++--------------------------- 4 files changed, 62 insertions(+), 68 deletions(-) diff --git a/examples/pod.c b/examples/pod.c index b9f2218..156968c 100644 --- a/examples/pod.c +++ b/examples/pod.c @@ -231,19 +231,17 @@ int main(int argc, char **argv) { timerclear(&cur); for (i=0; i<2; i++) { - if (xas_drone_chamber_seq_speech(chamber, - drone, - seq, - 0, - &cur) < 0) { + if (xas_drone_seq_sample(drone, + seq, + 0, + &cur) < 0) { goto error_seq; } - if (xas_drone_chamber_seq_speech(chamber, - nurse, - seq, - 0, - &cur) < 0) { + if (xas_drone_seq_sample(nurse, + seq, + 0, + &cur) < 0) { goto error_seq; } } diff --git a/examples/seq.c b/examples/seq.c index ab8da55..0f65f37 100644 --- a/examples/seq.c +++ b/examples/seq.c @@ -246,19 +246,17 @@ int main(int argc, char **argv) { cur = tmp; for (i=0; i= 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