finalized bw_reverb + examples + fix bw_dry_wet + cosmetics
This commit is contained in:
parent
d5751c0c4c
commit
d890510d0f
11
TODO
11
TODO
@ -1,14 +1,8 @@
|
|||||||
1.0.0
|
1.0.0
|
||||||
-----
|
-----
|
||||||
|
|
||||||
in progress:
|
* synth(pp)_poly
|
||||||
* 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:
|
|
||||||
* IMPLEMENTATION prepocessor def???
|
* IMPLEMENTATION prepocessor def???
|
||||||
finally:
|
|
||||||
* debugging - also check outputs different (incl bw_buf)
|
* debugging - also check outputs different (incl bw_buf)
|
||||||
* check all examples again
|
* check all examples again
|
||||||
* clearly specify that state is tied to a particular set of coeffs (1:N)
|
* 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)
|
* state that mem_set() can/must be called on uninitialized state (before reset_state)
|
||||||
|
|
||||||
build system:
|
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
|
post 1.0.0
|
||||||
----------
|
----------
|
||||||
@ -77,6 +71,7 @@ code:
|
|||||||
* bw_comb: should also modulate feedback?
|
* bw_comb: should also modulate feedback?
|
||||||
* bw_comb: integer target delay values?
|
* bw_comb: integer target delay values?
|
||||||
* are we sure about inlining everything?
|
* are we sure about inlining everything?
|
||||||
|
* reset style is not enough when you have feedbacks... (see reverb)
|
||||||
|
|
||||||
build system:
|
build system:
|
||||||
* make makefiles handle paths with spaces etc
|
* make makefiles handle paths with spaces etc
|
||||||
|
@ -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) {
|
void bw_example_fx_reverb_reset(bw_example_fx_reverb *instance) {
|
||||||
bw_reverb_reset_coeffs(&instance->reverb_coeffs);
|
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) {
|
void bw_example_fx_reverb_process(bw_example_fx_reverb *instance, const float** x, float** y, int n_samples) {
|
||||||
|
@ -4,3 +4,6 @@ NAME := bw_example_fx_reverb
|
|||||||
SOURCE := bw_example_fx_reverb.c
|
SOURCE := bw_example_fx_reverb.c
|
||||||
|
|
||||||
include ${ROOT_DIR}/../../common/vst3/vst3.mk
|
include ${ROOT_DIR}/../../common/vst3/vst3.mk
|
||||||
|
|
||||||
|
CXXFLAGS += -DRELEASE=1 -DNDEBUG -DBW_NO_DEBUG
|
||||||
|
#CXXFLAGS += -DDEVELOPMENT=1 -DBW_DEBUG_DEEP
|
||||||
|
@ -4,3 +4,6 @@ NAME := bw_example_fxpp_reverb
|
|||||||
SOURCE := bw_example_fxpp_reverb.cpp
|
SOURCE := bw_example_fxpp_reverb.cpp
|
||||||
|
|
||||||
include ${ROOT_DIR}/../../common/vst3/vst3.mk
|
include ${ROOT_DIR}/../../common/vst3/vst3.mk
|
||||||
|
|
||||||
|
CXXFLAGS += -DRELEASE=1 -DNDEBUG -DBW_NO_DEBUG
|
||||||
|
#CXXFLAGS += -DDEVELOPMENT=1 -DBW_DEBUG_DEEP
|
||||||
|
@ -399,6 +399,7 @@ struct bw_chorus_state {
|
|||||||
enum bw_chorus_state_state state;
|
enum bw_chorus_state_state state;
|
||||||
uint32_t coeffs_reset_id;
|
uint32_t coeffs_reset_id;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Sub-components
|
// Sub-components
|
||||||
bw_comb_state comb_state;
|
bw_comb_state comb_state;
|
||||||
};
|
};
|
||||||
@ -524,9 +525,9 @@ static inline float bw_chorus_reset_state(
|
|||||||
static inline void bw_chorus_reset_state_multi(
|
static inline void bw_chorus_reset_state_multi(
|
||||||
const bw_chorus_coeffs * BW_RESTRICT coeffs,
|
const bw_chorus_coeffs * BW_RESTRICT coeffs,
|
||||||
bw_chorus_state * BW_RESTRICT const * BW_RESTRICT state,
|
bw_chorus_state * BW_RESTRICT const * BW_RESTRICT state,
|
||||||
const float * x_0,
|
const float * x_0,
|
||||||
float * y_0,
|
float * y_0,
|
||||||
size_t n_channels) {
|
size_t n_channels) {
|
||||||
BW_ASSERT(coeffs != NULL);
|
BW_ASSERT(coeffs != NULL);
|
||||||
BW_ASSERT_DEEP(bw_chorus_coeffs_is_valid(coeffs));
|
BW_ASSERT_DEEP(bw_chorus_coeffs_is_valid(coeffs));
|
||||||
BW_ASSERT_DEEP(coeffs->state >= bw_chorus_coeffs_state_reset_coeffs);
|
BW_ASSERT_DEEP(coeffs->state >= bw_chorus_coeffs_state_reset_coeffs);
|
||||||
|
@ -302,7 +302,7 @@ static inline float bw_dry_wet_process1(
|
|||||||
|
|
||||||
BW_ASSERT_DEEP(bw_dry_wet_coeffs_is_valid(coeffs));
|
BW_ASSERT_DEEP(bw_dry_wet_coeffs_is_valid(coeffs));
|
||||||
BW_ASSERT_DEEP(coeffs->state >= bw_dry_wet_coeffs_state_reset_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;
|
return y;
|
||||||
}
|
}
|
||||||
@ -419,19 +419,6 @@ class DryWet {
|
|||||||
public:
|
public:
|
||||||
DryWet();
|
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(
|
void setSampleRate(
|
||||||
float sampleRate);
|
float sampleRate);
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user