diff options
-rw-r--r-- | include/xas/object.h | 6 | ||||
-rw-r--r-- | include/xas/seq.h | 14 | ||||
-rw-r--r-- | src/bank.c | 5 | ||||
-rw-r--r-- | src/object.c | 4 | ||||
-rw-r--r-- | src/seq.c | 16 |
5 files changed, 28 insertions, 17 deletions
diff --git a/include/xas/object.h b/include/xas/object.h index 1fd3b8c..4d5b754 100644 --- a/include/xas/object.h +++ b/include/xas/object.h @@ -13,7 +13,9 @@ typedef int (*xas_object_set_gain_callback)(xas_object *object, float gain); typedef int (*xas_object_set_freq_callback)(xas_object *object, size_t freq); -typedef int (*xas_object_set_entry_callback)(xas_object *object, size_t entry); +typedef int (*xas_object_set_entry_callback)(xas_object *object, + size_t index, + size_t entry); typedef int (*xas_object_set_flags_callback)(xas_object *object, int flags); @@ -40,7 +42,7 @@ int xas_object_stop(xas_object *object, size_t index); int xas_object_set_gain(xas_object *object, float gain); -int xas_object_set_entry(xas_object *object, size_t entry); +int xas_object_set_entry(xas_object *object, size_t index, size_t entry); int xas_object_set_freq(xas_object *object, size_t freq); diff --git a/include/xas/seq.h b/include/xas/seq.h index 05b1919..38b7cf4 100644 --- a/include/xas/seq.h +++ b/include/xas/seq.h @@ -15,7 +15,7 @@ enum xas_seq_event_type { XAS_SEQ_EVENT_SET_GAIN, XAS_SEQ_EVENT_SET_FREQUENCY, XAS_SEQ_EVENT_SET_SYNTH_TYPE, - XAS_SEQ_EVENT_SET_BANK_INDEX, + XAS_SEQ_EVENT_SET_BANK_ENTRY, XAS_SEQ_EVENT_SET_PLAYER_FLAGS, XAS_SEQ_EVENT_SPEECH, XAS_SEQ_EVENT_OFF, @@ -31,6 +31,7 @@ struct _xas_seq_event { xas_spatial_object *object; struct timeval timestamp; + size_t index; union { xas_spatial_coord point; @@ -38,7 +39,7 @@ struct _xas_seq_event { float speed; float gain; int flags; - size_t index; + size_t entry; size_t frequency; enum xas_synth_type synth_type; const char *phrase; @@ -90,10 +91,11 @@ int xas_seq_add_set_gain(xas_seq *seq, struct timeval timestamp, float gain); -int xas_seq_add_set_bank(xas_seq *seq, - xas_spatial_object *object, - struct timeval timestamp, - size_t index); +int xas_seq_add_set_bank_entry(xas_seq *seq, + xas_spatial_object *object, + struct timeval timestamp, + size_t index, + size_t entry); int xas_seq_add_set_player_flags(xas_seq *seq, xas_spatial_object *object, @@ -147,6 +147,10 @@ static int set_gain(xas_bank_player *player, float gain) { return 0; } +static int set_entry(xas_bank_player *player, size_t index, size_t entry) { + return xas_bank_player_set_entry(player, entry); +} + xas_bank_player *xas_bank_player_new(xas_bank *bank) { xas_bank_player *player; @@ -159,6 +163,7 @@ xas_bank_player *xas_bank_player_new(xas_bank *bank) { player->obj.start = (xas_object_start_callback)player_start; player->obj.stop = (xas_object_stop_callback)player_stop; player->obj.set_gain = (xas_object_set_gain_callback)set_gain; + player->obj.set_entry = (xas_object_set_entry_callback)set_entry; player->obj.stream_new = (xas_object_stream_new_callback)xas_bank_player_stream_new; player->obj.destroy = (xas_object_destroy_callback)xas_bank_player_destroy; diff --git a/src/object.c b/src/object.c index 39a1edb..357f115 100644 --- a/src/object.c +++ b/src/object.c @@ -37,14 +37,14 @@ int xas_object_set_gain(xas_object *object, float gain) { return object->set_gain(object, gain); } -int xas_object_set_entry(xas_object *object, size_t entry) { +int xas_object_set_entry(xas_object *object, size_t index, size_t entry) { if (object->set_entry == NULL) { errno = ENOSYS; return -1; } - return object->set_entry(object, entry); + return object->set_entry(object, index, entry); } int xas_object_set_freq(xas_object *object, size_t freq) { @@ -324,20 +324,22 @@ error_malloc_ev: return -1; } -int xas_seq_add_set_bank(xas_seq *seq, - xas_spatial_object *object, - struct timeval timestamp, - size_t index) { +int xas_seq_add_set_bank_entry(xas_seq *seq, + xas_spatial_object *object, + struct timeval timestamp, + size_t index, + size_t entry) { xas_seq_event *ev; if ((ev = malloc(sizeof(*ev))) == NULL) { goto error_malloc_ev; } - ev->type = XAS_SEQ_EVENT_SET_BANK_INDEX; + ev->type = XAS_SEQ_EVENT_SET_BANK_ENTRY; ev->object = object; ev->timestamp = timestamp; ev->index = index; + ev->entry = entry; if (event_add(seq, ev) < 0) { goto error_event_add; @@ -530,8 +532,8 @@ static int event_trigger(xas_spatial_scene *scene, xas_seq_event *ev) { break; - case XAS_SEQ_EVENT_SET_BANK_INDEX: - xas_object_set_entry(ev->object->ctx, ev->index); + case XAS_SEQ_EVENT_SET_BANK_ENTRY: + xas_object_set_entry(ev->object->ctx, ev->index, ev->entry); break; |