finalized bw_reverb + examples + fix bw_dry_wet + cosmetics

This commit is contained in:
Stefano D'Angelo 2023-09-22 18:34:16 +02:00
parent d5751c0c4c
commit d890510d0f
7 changed files with 805 additions and 189 deletions

11
TODO
View File

@ -1,14 +1,8 @@
1.0.0
-----
in progress:
* add initial state (x0) to reset state of all modules
* check assumptions w.r.t. usage of math functions
* empty functions etc. to keep consistency and forward compatibility
* format declarations in a more readable way
code:
* synth(pp)_poly
* IMPLEMENTATION prepocessor def???
finally:
* debugging - also check outputs different (incl bw_buf)
* check all examples again
* clearly specify that state is tied to a particular set of coeffs (1:N)
@ -21,7 +15,7 @@ finally:
* state that mem_set() can/must be called on uninitialized state (before reset_state)
build system:
* single header generation (vs modules in bwp... to think about)
* single header generation (vs modules in bwp... to think about)?
post 1.0.0
----------
@ -77,6 +71,7 @@ code:
* bw_comb: should also modulate feedback?
* bw_comb: integer target delay values?
* are we sure about inlining everything?
* reset style is not enough when you have feedbacks... (see reverb)
build system:
* make makefiles handle paths with spaces etc

View File

@ -38,7 +38,8 @@ void bw_example_fx_reverb_mem_set(bw_example_fx_reverb *instance, void *mem) {
void bw_example_fx_reverb_reset(bw_example_fx_reverb *instance) {
bw_reverb_reset_coeffs(&instance->reverb_coeffs);
bw_reverb_reset_state(&instance->reverb_coeffs, &instance->reverb_state);
float yl, yr;
bw_reverb_reset_state(&instance->reverb_coeffs, &instance->reverb_state, 0.f, 0.f, &yl, &yr);
}
void bw_example_fx_reverb_process(bw_example_fx_reverb *instance, const float** x, float** y, int n_samples) {

View File

@ -4,3 +4,6 @@ NAME := bw_example_fx_reverb
SOURCE := bw_example_fx_reverb.c
include ${ROOT_DIR}/../../common/vst3/vst3.mk
CXXFLAGS += -DRELEASE=1 -DNDEBUG -DBW_NO_DEBUG
#CXXFLAGS += -DDEVELOPMENT=1 -DBW_DEBUG_DEEP

View File

@ -4,3 +4,6 @@ NAME := bw_example_fxpp_reverb
SOURCE := bw_example_fxpp_reverb.cpp
include ${ROOT_DIR}/../../common/vst3/vst3.mk
CXXFLAGS += -DRELEASE=1 -DNDEBUG -DBW_NO_DEBUG
#CXXFLAGS += -DDEVELOPMENT=1 -DBW_DEBUG_DEEP

View File

@ -399,6 +399,7 @@ struct bw_chorus_state {
enum bw_chorus_state_state state;
uint32_t coeffs_reset_id;
#endif
// Sub-components
bw_comb_state comb_state;
};
@ -524,9 +525,9 @@ static inline float bw_chorus_reset_state(
static inline void bw_chorus_reset_state_multi(
const bw_chorus_coeffs * BW_RESTRICT coeffs,
bw_chorus_state * BW_RESTRICT const * BW_RESTRICT state,
const float * x_0,
float * y_0,
size_t n_channels) {
const float * x_0,
float * y_0,
size_t n_channels) {
BW_ASSERT(coeffs != NULL);
BW_ASSERT_DEEP(bw_chorus_coeffs_is_valid(coeffs));
BW_ASSERT_DEEP(coeffs->state >= bw_chorus_coeffs_state_reset_coeffs);

View File

@ -302,7 +302,7 @@ static inline float bw_dry_wet_process1(
BW_ASSERT_DEEP(bw_dry_wet_coeffs_is_valid(coeffs));
BW_ASSERT_DEEP(coeffs->state >= bw_dry_wet_coeffs_state_reset_coeffs);
BW_ASSERT(bw_is_finite(*y));
BW_ASSERT(bw_is_finite(y));
return y;
}
@ -419,19 +419,6 @@ class DryWet {
public:
DryWet();
void setSampleRate(float sampleRate);
void reset();
void process(
const float * const *x_dry,
const float * const *x_wet,
float * const *y,
size_t nSamples);
void process(
std::array<const float *, N_CHANNELS> x_dry,
std::array<const float *, N_CHANNELS> x_wet,
std::array<float *, N_CHANNELS> y,
size_t nSamples);
void setSampleRate(
float sampleRate);

File diff suppressed because it is too large Load Diff