This repository has been archived by the owner on Jul 1, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 6
/
ChangeLog
249 lines (242 loc) · 12.9 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
1.1.0
-----
* Added new bw_cab module.
* Added new fx_cab and fxpp_cab examples.
* Added skip_sustain and always_reach_sustain parameters to bw_env_gen.
* Added silence_dc parameter to bw_bd_reduce.
* Added BW_NULL definition in bw_common and used it throughout the entire
codebase.
* Added BW_CXX_NO_ARRAY to control the inclusion of features depending on
C++ <array>.
* Relaxed sidechain APIs in bw_comp and bw_noise_gate to accept BW_NULL to
represent null sidechain inputs.
* Added setThreshLin() and setThreshDb() methods to the C++ APIs of bw_comp
and bw_noise_gate to fix naming typos without breaking the API.
* Reworked all example code and added LV2, command line application, and
C++/WebAssembly targets.
* Fixed gain compensation in bw_satur_process_multi().
* Fixed rounding bug in bw_phase_gen when frequency is tiny and negative.
* Fixed smoothing of decay parameter in bw_reverb.
* Fixed computation of initial states in bw_mm1 and bw_mm2.
* Fixed sign-related issues in bw_hash_sdbm(), bw_truncf(), bw_roundf(), and
bw_sqrtf() (thanks Kevin Molcard).
* Replace GCC pragmas to suppress uninitalized variable warnings with
useless harmless statements in bw_env_gen, bw_hs2, bw_ls2, bw_one_pole, and
bw_peak.
* Fixed documentation typos in bw_ls2.
* Updated examples' documentation.
1.0.0
-----
* Removed C++ headers and moved C++ code to now-unique C/C++ headers.
* Added extern "C" linkage specifier to C functions declarations and
definitions.
* Added bw_*_reset_state_multi() and updated C++ APIs in this regard.
* Now bw_*_reset_state() take initial input values and return initial output
values.
* Added more const and BW_RESTRICT specifiers to input arguments.
* Added overloaded C++ functions taking C-style arrays as arguments.
* Added debugging code to all modules and improved existing debugging code.
* Removed usage of reserved identifiers and designated initializers.
* Now using size_t rather than BW_SIZE_T and for counting items.
* Improved documentation w.r.t. validity of input values and approximation
errors.
* Added pragmas to silence bogus GCC uninitialized variable warnings.
* Made control over inclusion of standard library headers more explicit via
specific preprocessor definitions.
* Introduced BW_NO_DEBUG and prevented useless inclusion of assert.h.
* Changed order of arguments to improve consistency in bw_buf.
* Renamed bw_min0xf() as bw_min0f() and bw_max0xf() as bw_max0f().
* Removed precision suffixes from function names in bw_math.
* New implementations for bw_min0f(), bw_max0f(), bw_minf(), bw_maxf(), and
bw_clipf().
* Fixed rounding bug in bw_roundf() when absolute value of input was in [0.5f,
1.f].
* Fixed bw_ceilf() for negative input values.
* Fixed bw_sqrtf() for very large input values and improved implementation.
* Fixed input validity ranges in bw_asinhf() and bw_acoshf().
* Removed redundant status member from bw_note_queue_event.
* Possibly improved memeory layout of bw_note_queue.
* Clarified ambiguity in the documentation of bw_note_queue_status.
* Specified that velocity can be negative in bw_voice_alloc_opts.
* Fixed output polarity in bw_ap1.
* Added bw_bd_reduce_set_sample_rate().
* Changed default value for gain compensation to off in bw_clip.
* Fixed missing smoothing filter initialization in bw_comp.
* Fixed missing forced coefficients' update in bw_comp_reset_coeffs().
* Improved and strengthened algorithm in bw_comp.
* Removed read() and write() from C++ API in bw_delay.
* Adjusted internal peak cutoff to more sensible value in bw_dist.
* Improved algorithm to be a bit more faithful to the original in bw_drive.
* bw_drywet renamed as bw_dry_wet.
* Renamed bw_env_gen_update_state_ctrl() as bw_env_gen_process_ctrl().
* Faster and more robust implementation in bw_env_gen.
* Improved algorithm to be a bit more faithful to the original in bw_fuzz.
* Added bw_gain_get_gain_lin().
* Renamed bw_gain_get_gain() as bw_gain_get_gain_cur().
* Simplified implementation to use less memory in bw_gain.
* Added prewarp_at_cutoff and prewarp_freq parameters in bw_ap1, bw_ap2,
bw_hp1, bw_hs1, bw_ls1, bw_ls2, bw_notch, and bw_peak.
* Fixed documentation to indicate correct default parameter values in bw_hs1,
bw_hs2, bw_ls1, bw_ls2, bw_notch, and bw_peak.
* Fixed bug when setting default parameter values in bw_hs1_init().
* Limited actual prewarping frequency to prevent instability in bw_lp1.
* Fixed missing smoothing filter initialization in bw_noise_gate.
* Fixed missing forced coefficients' update in bw_noise_gate_reset_coeffs().
* Added bw_noise_gen_reset_coeffs(), bw_noise_gen_update_coeffs_ctrl(), and
bw_noise_gen_update_coeffs_audio().
* Improved and strengthened algorithm in bw_noise_gate.
* Now using backward Euler rather than impulse invariant method in
bw_one_pole.
* Added coeffs argument to bw_one_pole_state_is_valid().
* Changed implementation topology to use less memory in bw_osc_filt.
* Now antialiasing should work also with negative input increments in
bw_osc_pulse, bw_osc_saw, and bw_osc_tri.
* Clearly specified validity ranges for audio-rate signals in bw_osc_pulse,
bw_osc_saw, bw_osc_sin, and bw_osc_tri.
* Added bw_osc_saw_set_sample_rate(), bw_osc_saw_reset_coeffs(),
bw_osc_saw_update_coeffs_ctrl(), and bw_osc_saw_update_coeffs_audio().
* Now using parabolic curves instead of trigonometric ones in bw_pan.
* Fixed smoothing coefficients update in bw_phase_gen_reset_coeffs().
* Removed internal limits on cutoff frequency in bw_phaser.
* Added bw_pink_filt_reset_coeffs(), bw_pink_filt_update_coeffs_ctrl(), and
bw_pink_filt_update_coeffs_audio().
* Fixed type of coefficient in bw_pink_filt_process1().
* Enforced minimum output value -600.f in bw_ppm.
* bw_ringmod renamed as bw_ring_mod.
* Fixed inverted-polarity modulation (for real this time) in bw_ring_mod.
* Changed default value for gain compensation to off in bw_satur.
* Added bw_slew_lim_process1_none().
* Fixed setting of default parameter values in bw_slew_lim_init().
* Fixed documentation of bw_slew_lim_update_coeffs_audio().
* Added bw_sr_reduce_set_sample_rate(), bw_sr_reduce_reset_coeffs(),
bw_sr_reduce_update_coeffs_ctrl(), and bw_sr_reduce_update_coeffs_audio().
* Removed useless computation when upsampling in bw_src.
* Clarified when the same buffers cannot be used for both input and output in
bw_src and bw_src_int.
* Fixed frequency response and improved speed in bw_src_int.
* Changed model to get positive polarity at the bandpass output in bw_svf.
* Limited actual prewarping frequency to prevent instability in bw_svf.
* Adjusted examples accordingly to changes.
0.6.0
-----
* Added support and examples for Android and iOS.
* Added debugging definitions and related new functions in bw_common.
* Added debugging code to bw_buf, bw_math, bw_note_queue, bw_rand, and
bw_voice_alloc, and also partly to bw_one_pole.
* Removed bw_config module.
* Removed bw_omega_3log() and bw_omega_3lognr() from bw_math.
* bw_one_pole_process*() now use BW_SIZE_T to count samples and channels.
* bw_voice_alloc() now uses BW_SIZE_T to count voices.
* Fixed bugs in bw_pow10f_3() and bw_acoshf_3().
* Fixed bug when using very high cutoff values in bw_one_pole.
* Fixed bug when signal level is extremely low in bw_ppm.
* Fixed harmless compiler warning in bw_randu32().
* Fixed number of channels in fx_reverb.
* Fixed (unused) note velocity in synth_poly and synthpp_poly.
0.5.0
-----
* Added new bw_fuzz, bw_clip, bw_dist, bw_drive, bw_drywet, bw_reverb,
bw_note_queue, and bw_voice_alloc modules.
* Added new fx_fuzz, fx_clip, fx_dist, fx_drive, fx_reverb, synth_poly,
fx_lp1, fx_one_pole, and fx_slew_lim examples.
* Added C++ wrappers for all dsp modules and for bw_buf.
* Added new corresponding C++ examples for each C example.
* Added multichannel API to all dsp modules and to bw_buf.
* Added new bw_buf_neg() routine to bw_buf.
* Added new bw_gain_get_gain() function to bw_gain.
* Changed mem_req/set API in bw_delay, bw_comb, bw_chorus, bw_reverb.
* Turned gate parameter into a control-rate input in bw_env_gen.
* bw_balance_process() and bw_pan_process() do not accept NULL buffers
anymore.
* Made VST3 and web examples' common code stricter and more redundant w.r.t.
memory usage and finalization.
* Fixed bug in bw_svf_process() occurring when only y_hp was NULL.
* Fixed prewarping-related instability bug in bw_svf.
* Fixed inverted-polarity modulation in bw_ringmod.
* Fixed coefficients' reset in bw_phaser and bw_chorus.
* Fixed initial conditions in bw_satur.
* Fixed unused variable warnings in VST3 and Daisy Seed examples' common code.
* Fixed unused variable warnings in bw_slew_lim.
* Fixed left shift of negative value warnings in bw_math.
* Fixed typos in the documentaion of bw_peak, bw_comp, bw_osc_tri,
bw_ringmod, bw_balance, bw_slew_lim, and bw_common.
* Fixed code tags and heading levels in documentation of several modules.
* Fixed setting of default parameter values in synth_simple and synth_mono.
* Updated examples to use multichannel APIs where possible.
* Removed useless random state from synth_simple.
* Now forcing minimum attack and release times for VCAs of synth examples.
* Build system updated to emit as many compilation warnings as possible.
0.4.0
-----
* Added new bw_ringmod, bw_trem, bw_phaser, bw_delay, bw_src_int, bw_src,
bw_comb, and bw_chorus modules.
* Added new fx_ringmod, fx_trem, fx_phaser, fx_delay, fx_comb, fx_chorus,
fx_vibrato, and fx_flanger examples.
* Added MIDI over UART support for example synthesizers running on the Daisy
Seed platform.
* Added new bw_buf_add() and bw_buf_fill() routines to bw_buf.
* Added new bw_ceilf(), bw_intfracf(), bw_sinhf_3(), bw_coshf_3(),
bw_asinhf_3(), and bw_acoshf_3() math routines.
* Added BW_SIZE_T definition to bw_common.
* Added initial value parameters to bw_*_reset_state() in
bw_{lp1,ap1,hp1,hs1,ls1,mm1,ap2,hs2,ls2,mm2,notch,peak,svf}.
* Fixed typos in the documentation of bw_wah.
* Fixed unused parameter warnings.
* Now using bw_src_int in fx_satur.
0.3.0
-----
* Added new bw_ap1, bw_ap2, bw_balance, bw_bd_reduce, bw_buf, bw_comp, bw_hp1,
bw_hs1, bw_hs2, bw_lp1, bw_ls1, bw_ls2, bw_mm1, bw_mm2, bw_notch,
bw_noise_gate, bw_pan, bw_peak, bw_ppm, and bw_sr_reduce modules.
* Added new fx_ap1, fx_ap2, fx_balance, fx_bitcrush, fx_comp, fx_eq_3band,
fx_hp1, fx_hs1, fx_ls1, fx_mm1, fx_mm2, fx_noise_gate, fx_notch, fx_pan
examples.
* Added support and examples for the Daisy Seed platform.
* Strengthened bw_svf algorithm for modulation and added prewarp_at_cutoff
and prewarp_freq parameters.
* Changed bw_wah to be a bandpass and not a lowpass filter.
* Renamed bw_vol as bw_gain, added new smooth_tau parameter, and changed gain
parameter API to express values in linear gain an dB.
* Added new bw_log10f_3(), bw_pow10f_3(), bw_dB2linf_3(), and bw_lin2dBf_3()
math routines.
* Fixed computation bug in bw_sqrtf_2().
* Avoid a warning related to a potentially uninitialized variable in
bw_env_gen.
* Reworked example source code structure and Makefiles.
* Stopped using dynamic memory allocation for individual modules in example
code.
* Adjusted noise levels in synth_mono example.
* Added BW_RESTRICT to bw_svf_process1() arguments.
* Fixed bad defintion of bw_pink_filt_set_sample_rate_scaling().
* Now using bw_ppm in synth_mono and synth_simple examples.
* Moved header inclusions where most appropriate in bw_env_follow.
* Added missing API documentation in bw_pink_filt.
* Fixed typo in the documentation of bw_svf_set_Q().
* Fixed license headers in all source files.
0.2.0
-----
* Refactored API of DSP modules for better flexibility and performance.
* Removed bw_inline_one_pole and bw_inline_slew_rate (functionality
implemented by bw_one_pole and bw_slew_rate, respectively).
* Added bw_wah and bw_example_fx_wah.
* Added bw_satur and bw_example_fx_satur.
* Added bw_pink_filt.
* Added BW_RESTRICT and removed BW_MALLOC, BW_REALLOC, and BW_FREE from
bw_common.
* Added new monophonic synth example bw_example_synth_mono.
* Added new bw_sin2pif_3(), bw_cos2pif_3(), bw_tan2pif_3(),
bw_omega_3lognr(), and bw_tanhf_3() fast math routines.
* Using bw_one_pole for smoothing bw_vol.
* Simplified and rewritten example synth, renamed as
bw_example_synth_simple.
* Renamed bw_example_fx to bw_example_fx_svf are removed output "Level"
parameter from it.
* Using correct "Fx|Filter" VST3 subcategory for bw_example_fx_svf.
* Correctly handling note on events with velocity 0 as note offs.
* Using official logo as VST3 plugin icon.
* Minor performance improvements in bw_svf.
* Fixed potential bug when setting parameters in examples.
* Fixed missing initialization of sticky mode in bw_one_pole.
0.1.0
-----
First release.