-
v 1.2.0 Stable
released this
2024-12-04 11:40:54 +00:00 | 1 commits to main since this release- Added BW_INCLUDE_WITH_QUOTES, BW_NO_CXX, and BW_CXX_NO_EXTERN_C to bw_common and used them everywhere.
- Added optional sticky gain-reach threshold and related API to bw_gain.
- Added gate parameter to bw_bd_reduce and fx_bitcrush example.
- Added phase_inc_min and phase_inc_max parameters and related debugging checks to bw_phase_gen.
- Added bw_dry_wet_get_wet() and bw_dry_wet_get_wet_cur() and corresponding C++ API.
- Added bw_signfilli64(), bw_mini64(), bw_maxi64(), bw_clipi64(), bw_minu64(), bw_maxu64(), bw_clipu64(), bw_log2_1p2xf(), bw_log_1pexpxf(), and bw_log10_1p10xf() to bw_math.
- Added bw_buf_copy() and bw_buf_copy_multi() to bw_buf.
- Added bw_note_queue_all_notes_off() to bw_note_queue.
- Strengthened bw_env_gen implementation and fixed bw_env_reset_state() and bw_env_reset_state_multi() to take into account skip_sustain parameter value.
- Fixed rounding bug in bw_phase_gen when frequency is tiny.
- Fixed bug in bw_note_queue_is_valid() by which the 128th event or note pressed was incorrectly considered invalid.
- Accomodated MSVC reporting incorrect C++ standard support in bw_common.
- Added more checks in bw_osc_pulse_coeffs_is_valid() and bw_osc_tri_coeffs_is_valid().
- Revised debugging checks in *process_multi() in all modules.
- Added debugging checks on combined parameter limits in *reset_state() in bw_hs1, bw_hs2, bw_ls1, bw_ls2, bw_peak, bw_phaser.
- Added debugging check in bw_phase_reset_state() to ensure phase_0 is in valid range and documented valid range.
- Added debugging check in bw_env_gen_process1() to ensure that output is in valid range.
- Added missing static inline to bw_voice_alloc().
- Added missing BW_RESTRICT to the output arguments of bw_reverb_process1().
- Fixed buffering issue in fx_bitcrush example.
- Fixed process() call in fxpp_pan.
- Fixed sample counting in synth* examples.
- Fixed fx_bitcrush on Daisy Seed.
- Adapted all examples to Tibia 0.0.4.
- All iOS examples now target iOS 14.0.
- Clarified which transfer functions are implemented in the documentation of bw_mm1 and bw_mm2.
- Fixed documentation typo in bw_phase_gen's module description.
- Removed spurious sentence from the documentation of bw_reverb_reset_state().
- Fixed typos in the documentation of bw_note_queue_reset().
Downloads
-
v 1.1.0 Stable
released this
2024-02-24 18:23:25 +00:00 | 54 commits to main since this release- 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.
Downloads
-
v 1.0.0 Stable
released this
2023-09-28 11:31:20 +00:00 | 138 commits to main since this release- 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.
Downloads
-
v 0.6.0 Pre-Release
released this
2023-08-05 07:11:31 +00:00 | 262 commits to main since this release- 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.
Downloads
-
v 0.5.0 Pre-Release
released this
2023-07-13 14:40:31 +00:00 | 287 commits to main since this release- 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.
Downloads
-
v 0.4.0 Pre-Release
released this
2023-04-19 06:49:20 +00:00 | 372 commits to main since this release- 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.
Downloads
-
v 0.3.0 Pre-Release
released this
2023-02-22 13:35:50 +00:00 | 413 commits to main since this release- 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.
Downloads
-
v 0.2.0 Pre-Release
released this
2022-12-04 18:19:08 +00:00 | 479 commits to main since this release- 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.
Downloads
-
v 0.1.0 Pre-Release
released this
2022-11-15 23:49:51 +00:00 | 531 commits to main since this releaseFirst public alpha release
Downloads