2024-12-08 20:02:05 +01:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <stdbool.h>
|
|
|
|
#include <stddef.h>
|
|
|
|
|
|
|
|
enum sust_mode {
|
|
|
|
MODE_Sustain = 0,
|
|
|
|
MODE_Sostenuto = 1
|
|
|
|
};
|
|
|
|
|
|
|
|
struct sust {
|
|
|
|
enum sust_mode mode;
|
|
|
|
bool playing;
|
|
|
|
|
|
|
|
size_t start_idx;
|
|
|
|
size_t idx;
|
|
|
|
size_t buf_len;
|
2025-02-17 18:06:56 +01:00
|
|
|
float* record_buf;
|
|
|
|
float* play_buf;
|
2024-12-08 20:02:05 +01:00
|
|
|
};
|
|
|
|
|
2025-02-17 18:06:56 +01:00
|
|
|
void sust_init(struct sust* sust);
|
|
|
|
void sust_resize(struct sust* sust, size_t new_len);
|
|
|
|
void sust_swap(struct sust* sust);
|
2024-12-08 20:02:05 +01:00
|
|
|
|
|
|
|
void sust_process(
|
2025-02-17 18:06:56 +01:00
|
|
|
struct sust* sust,
|
2024-12-08 20:02:05 +01:00
|
|
|
size_t frame_size,
|
2025-02-17 18:06:56 +01:00
|
|
|
float const* in,
|
|
|
|
float* out);
|