summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/xas/drone.h5
-rw-r--r--src/drone.c22
2 files changed, 27 insertions, 0 deletions
diff --git a/include/xas/drone.h b/include/xas/drone.h
index 70eacfb..f134cdc 100644
--- a/include/xas/drone.h
+++ b/include/xas/drone.h
@@ -57,6 +57,11 @@ void xas_drone_destroy(xas_drone *drone);
xas_spatial_object *xas_drone_get_spatial_object(xas_drone *drone);
+ssize_t xas_drone_record_sample(xas_drone *drone,
+ xas_audio_stream *source,
+ size_t sample_index,
+ size_t sample_len);
+
int xas_drone_speech_import(xas_drone *drone,
const char *voice,
float speed,
diff --git a/src/drone.c b/src/drone.c
index 1534e76..e7f5bfe 100644
--- a/src/drone.c
+++ b/src/drone.c
@@ -51,6 +51,28 @@ xas_spatial_object *xas_drone_get_spatial_object(xas_drone *drone) {
return drone->obj;
}
+ssize_t xas_drone_record_sample(xas_drone *drone,
+ xas_audio_stream *source,
+ size_t sample_index,
+ size_t sample_len) {
+ if (sample_index >= drone->bank->entry_count
+ || sample_len > drone->bank->entry_size) {
+ errno = EINVAL;
+
+ goto error_invalid;
+ }
+
+ return xas_bank_record(drone->bank,
+ source,
+ sample_index,
+ sample_len);
+
+ return 0;
+
+error_invalid:
+ return -1;
+}
+
int xas_drone_speech_import(xas_drone *drone,
const char *voice,
float speed,