From b386b20a515e43674b3a233df6256e88fdf31563 Mon Sep 17 00:00:00 2001 From: XANTRONIX Development Date: Mon, 14 Mar 2022 01:06:51 -0400 Subject: Implement xas_drone_sample_import() Implement xas_drone_sample_import() to import a RIFF WAVE file to a drone's sample bank --- include/xas/drone.h | 5 +++++ src/drone.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/include/xas/drone.h b/include/xas/drone.h index 1af22be..1f329ae 100644 --- a/include/xas/drone.h +++ b/include/xas/drone.h @@ -62,6 +62,11 @@ ssize_t xas_drone_sample_record(xas_drone *drone, size_t sample_index, size_t sample_len); + +ssize_t xas_drone_sample_import(xas_drone *drone, + const char *file, + size_t sample_index); + int xas_drone_speech_import(xas_drone *drone, const char *voice, float speed, diff --git a/src/drone.c b/src/drone.c index 13610fa..188f546 100644 --- a/src/drone.c +++ b/src/drone.c @@ -1,7 +1,9 @@ #include #include +#include #include +#include #include #include @@ -73,6 +75,34 @@ error_invalid: return -1; } +ssize_t xas_drone_sample_import(xas_drone *drone, + const char *path, + size_t sample_index) { + ssize_t ret; + xas_audio_stream *source; + + if ((source = xas_riff_open_file(path, O_RDONLY)) == NULL) { + goto error_riff_open_file; + } + + if ((ret = xas_drone_sample_record(drone, + source, + sample_index, + drone->bank->entry_size)) < 0) { + goto error_sample_record; + } + + xas_audio_stream_destroy(source); + + return ret; + +error_sample_record: + xas_audio_stream_destroy(source); + +error_riff_open_file: + return -1; +} + int xas_drone_speech_import(xas_drone *drone, const char *voice, float speed, -- cgit v1.2.3