diff options
Diffstat (limited to 'include/xas/bank.h')
-rw-r--r-- | include/xas/bank.h | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/include/xas/bank.h b/include/xas/bank.h index 3ff5994..92074f6 100644 --- a/include/xas/bank.h +++ b/include/xas/bank.h @@ -9,8 +9,22 @@ #define XAS_BANK_PLAYER_DEFAULT_GAIN 1.0f -#define XAS_BANK_PLAYER_NONE 0 -#define XAS_BANK_PLAYER_LOOP (1 << 0) +#define XAS_BANK_PLAYER_DURATION_MAX 10.0f + +#define XAS_BANK_PLAYER_NONE 0 +#define XAS_BANK_PLAYER_LOOP (1 << 0) +#define XAS_BANK_PLAYER_SCALE_TIME (1 << 1) +#define XAS_BANK_PLAYER_SCALE_PITCH (1 << 2) + +#define XAS_BANK_PLAYER_SOLA_SEQUENCE 100 +#define XAS_BANK_PLAYER_SOLA_OVERLAP 20 +#define XAS_BANK_PLAYER_SOLA_WINDOW 15 + +#define XAS_BANK_PLAYER_SOLA_FLAT_DURATION \ + (XAS_BANK_PLAYER_SOLA_SEQUENCE - 2 * (XAS_BANK_PLAYER_SOLA_OVERLAP)) + +#define XAS_BANK_PLAYER_SOLA_SEQUENCE_SKIP(scale) \ + ((XAS_BANK_PLAYER_SOLA_SEQUENCE - XAS_BANK_PLAYER_SOLA_OVERLAP) * scale) enum xas_bank_player_status { XAS_BANK_PLAYER_STOPPED, @@ -35,10 +49,20 @@ typedef struct _xas_bank_player { enum xas_bank_player_status status; int flags; - float gain; + float gain, + duration, + pitch; size_t entry, index; + + void *buffer; + size_t buffer_size; + + size_t sola_sequence, + sola_overlap, + sola_window, + sola_flat; } xas_bank_player; xas_bank *xas_bank_new(xas_audio_format format, @@ -66,6 +90,10 @@ void xas_bank_player_destroy(xas_bank_player *player); void xas_bank_player_set_gain(xas_bank_player *player, float gain); +void xas_bank_player_set_duration(xas_bank_player *player, float factor); + +void xas_bank_player_set_pitch(xas_bank_player *player, float factor); + int xas_bank_player_set_entry(xas_bank_player *player, size_t entry); int xas_bank_player_start(xas_bank_player *player); |