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++ . * 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.