Tale's JSFX Pack v20230711 (11 July 2023) + lfo/four/poly: Added BP filtered square approximation. + waveform_generator: Added BP filtered square approximation. v20230527 (27 May 2023) + music_box: Added toy music box synth plug-in. + pc_speaker: Added PC speaker square wave synth plug-in. v20230212 (12 February 2023) + mono_synth/drum_synth: Added instrument tag. v20221124 (24 November 2022) + midiq: Added SysEx support to simple interface. + midiq: Minor nitpicks/optimizations. + lcg: Optimized random generators for speed. + Updated system requirements to REAPER v4.60+. v20220621 (21 June 2022) + drum_synth: Fixed Bass Drum 2 filter reset. + rbj: Optimized filter setting functions. + rbj: Deprecated scale coefficient function. + lfo: Added rounded square/rectangle, tanh approximation. + poly: Added stepped sine. + waveform_generator: Added polyBLEP stepped sine. v20211224 (24 December 2021) + four/lfo/poly: Added alternating/bipolar camel sine. + poly: Added (incorrect) cycloid. + waveform_generator: Added alternating/bipolar camel sine, polyBLEP cycloid. + waveform_generator: Tweaked draw waveform offset. + zdf: Added specialized set LP/HP/BP. + zdf/rbj: Nitpicked/optimized bandwidth to Q. + Documentation: Minor ZDF SVF improvements, recalculated LFO RMS values with zero DC. + Happy holidays! v20210110 (10 January 2021) + waveform_generator: Added polyBLEP LP/HP filtered square/saw. + waveform_generator: Fixed naive LP/HP filtered square gain. + waveform_generator: Added Retina support. + poly: Optimized hard sync saw. v20210103 (3 January 2021) + insert_to_bus: Added insert to bus convertor plug-in. + four/lfo/poly: Added hyper triangular wave. + poly: Added hard sync saw. + lfo: Optimized modified triangle, LPF square order 2 approximation. + lfo: Deprecated "fast" exp(x) approximation. + 2021: Happy New Year! v20200730 (30 July 2020) + four/lfo/poly: Added square/saw minus fundamental, integrated LPF square approximations. + poly: Added stepped triangle/saw, fixed parabola. + os: Normalized/fixed up/downsample gain. + examples: Added waveform generator/viewer. + covid-19: Stay safe! v20191125 (25 November 2019) + midi_vibrato: Fixed Poly to Channel Aftertouch conversion. v20191124 (24 November 2019) + midi_vibrato: Added MIDI vibrato via Pitch Bend plug-in. + colored_noise: Improved stereo width. + drum_synth: Fixed GUI pad trigger, optimizations. + four/lfo/poly: Added cubic saw, saw pulse, sine saw waveforms. + lfo/poly: Many (minor) optimizations. + uint: Added 32/64-bit absolute value, signed/unsigned/float convertors. + Documentation nitpicks. v20190122 (22 January 2019) + zdf_filter: Added multimode zero-delay feedback (ZDF) filter effect. + tube_amp: Corrected PDC delay at 8x oversampling. + rc_filter: Minor optimizations/nitpicks. + array: Optimized find while loop, return value. + array: Fixed single column init typo. + array: Fixed find searching past end of buffer. + four: Added hard sync saw. + lfo: Minor optimizations, added precise sin/cos. + midiq: Added alternate rewind/collect functions. + poly: Added parabola, bipolar squared sine waveforms. + poly: Added band-limited curve polynomial. + rbj: Added set gain, dry/wet modifiers. + rbj: Added Transposed Direct Form 2. + rbj: Renamed reset Direct Form 1, 2. + zdf: Added set gain modifier. + zdf/rbj: Added optional input value to reset. + zdf/rbj: Removed set bypass/mute. + Has it really been 464 days, WTH?! v20171015 (15 October 2017) + drum_synth: Added GUI. + drum_synth: Added bass drum 2, shaker, sticks. + colored_noise: Added notch filter. + Changed license of plug-ins to LGPL. + Changed license of libraries/examples to WTFPL. + Renamed fft_synth[esis], noise[_generator], oversample[r], sine[_oscillator], wavetable[_oscillator], window[_functions] .jsfx-inc libraries; added legacy versions for backward compatibility. + cplx: Added complex.jsfx-inc complex math library. + uint: Added uint.jsfx-inc 32/64-bit unsigned integer operations library. + four: Added fft_real_synth.jsfx-inc real FFT version of Fourier synthesis library. + four: Added alternating sine, bipolar squared sine, camel sine, HP filtered saw approximation, HP filtered square, integrated saw, logit approximation, LP filtered square approximations, pulse sine, uneven staircase, variable pulse width staircase waveforms. + four: Added four_setf(note, tuning) to set MIDI note frequency. + four: Added get RMS from Fourier coefficients. + lfo: Added alternating sine, bipolar squared sine, camel sine, HP filtered saw approximation, HP filtered square, integrated saw, logit approximation, LP filtered square approximations, pulse sine, uneven staircase, variable pulse width staircase waveforms. + lfo: Improved fast sine/cosine approximations. + lfo: Added lfo_setf(note, tuning) to set MIDI note frequency. + poly: Added alternating sine, camel sine, half-wave rectified saw, HP filtered saw approximation, integrated saw, logit approximation, LP filtered square approximations, pulse sine, uneven staircase, variable pulse width half-wave rectified sine, variable pulse width staircase waveforms. + poly: Added poly_setf(note, tuning) to set MIDI note frequency. + sin: Added sin_setf(note, tuning) to set MIDI note frequency. + wave: Added wave_setf(note, tuning) to set MIDI note frequency. + midiq: Added simple ("queueless") interface. + midiq: Validate incoming MIDI messages. + wnd: Added confined Gaussian, Dolph-Chebyshev, Planck-Bessel, Planck-taper, Rife-Vincent class II/III window functions. + wnd: Deprecated average functions. + zdf: Added multi-mode filter function. + Improved/updated examples, documentation. + Many (minor) optimizations. + mono_synthGUI/wavetable_synth: No longer supported, but still included for legacy's sake. + Happy birthday, Martin! :-) v20160802 (2 August 2016) + array: Added get last row pointer. + lfo/poly: Optimized x^2 as sqr(x). + zdf: Fixed/simplified peaking EQ/low/high-shelf. + Added mono/poly synth array example. + Americanized documentation. v20160228 (28 February 2016) + wnd: Added Rife-Vincent class I. + wnd: Added average functions. + wnd: Updated/improved examples. + wnd: Improved documentation. v20160222 (22 February 2016) + wnd: Added window_functions.jsfx-inc window function library. + Added window function viewer example. + Added Low-pass windowed FIR/FFT filter examples. v20151121 (21 November 2015) + mono_synthGUI: Added GUI version of mono_synth (thanks argee!). + four: Limited harmonic count to half FFT size. v20151107 (7 November 2015) + wave: Optimized Catmull-Rom spline interpolation. + wave: Added Hermite, B-spline, 2nd-order-osculating interpolation. + wave: Fixed Lagrange interpolation. v20151101 (1 November 2015) + wavetable_synth: Added cycloid wavetable. + wavetable_synth: Adjusted modified square wavetable pulse width. + Added icon to Windows installer. + Fixed compatibility warning after closing installer on Windows 10. + four: Added naive Fourier series summation. + Minor library documentation improvements. v20151025 (25 October 2015) + poly: Optimized half-wave rectified sine, triangular pulse, trapezoid. + lfo/four: Added parabola, cycloid. v20151024 (24 October 2015) + rc_filter/tube_amp: Improved RC filter precision. + four: Added fft_synthesis.jsfx-inc FFT bandlimited synthesis library. + four: Added fourier_series.jsfx-inc Fourier series waveforms library. + wave: Added wavetable_oscillator.jsfx-inc wavetable oscillator library. + lfo: Reimplemented sine as Maclaurin series. + lfo: Added (Maclaurin series) cosine, ramp, variable pulse width half-wave rectified sine, half-wave rectified saw, LP filtered square, HP filtered saw, stepped sine, stepped triangle, stepped saw, hard sync saw. + lfo: Optimized modified triangle, full-wave rectified sine, circle. + lfo: Corrected phase of full-wave rectified sine, triangular pulse. + lfo: Fixed sample and hold skipping first sample. + poly: Added cosine, ramp. + poly: Optimized triangle, rectangle, modified triangle, modified square, half-wave rectified sine, triangular pulse. + poly: Corrected phase of full-wave rectified sine, triangular pulse. + poly: Fixed triangular pulse global instead of local variable typo. + sin: Optimized sync phase. + rc: Added high precision setting/filter functions. + rc: Optimized setting/filter functions. + rbj: Reimplemented peaking EQ and low/high shelf. + rbj: Added bypass/mute filters. + rbj: Added bandwidth/Q convertor functions. + rbj: Optimized set frequency, coefficient scaling. + zdf: Reimplemented filter setting functions (could break existing code, see documentation). + zdf: Fixed constant peak gain band-pass filter. + zdf: Added bypass/mute filters. + zdf: Added bandwidth/Q convertor functions. + zdf: Optimized set frequency, set feedback precomputation factor, filter processing. + malloc: Added 65,536 item boundary alignment. + malloc: Fixed free() being lazy. + malloc: Reduced realloc() code size. + midiq: Added msg2/3 support to midiq_add(). + midiq: Changed queue size to number of messages. + midiq: Added free MIDI queue buffer. + array: Swapped size/num, changed init behavior (could break existing code, sorry!). + array: Added get first/next row pointer. + array: Added optional starting point to find. + array: Added free buffer. + Added tags/author to effects. + Improved library documentation. + Extracted examples from libraries. v20150607 (7 June 2015) + wavetable_synth: Implemented pan. + mono_synth: Fixed initial volume/pan gain. + array: Added array.jsfx-inc simple two-dimensional array library. + midiq: Added midiq_alloc(). v20150527 (27 May 2015) + mono_synth: Added last-note priority to mono mode. + mono_synth: Fixed hold pedal releasing replaying notes. + os: Added os_os2() for 2x downsampling only. + os: Simplified existing example, added second example. v20150415 (15 April 2015) + poly_mono_midi_router: Fixed hanging duplicate notes in round-robin mode. + poly_mono_midi_router: Safer MIDI status byte parsing. v20150414 (14 April 2015) + poly_mono_midi_router: Added round-robin. v20150408 (8 April 2015) + drum_synth: Added tambourine, cowbell. + drum_synth: Moved/interleaved volume/pan sliders. + drum_synth: Tweaked drive. + tube_amp: Added tube amp effect. + os: Added oversampler.jsfx-inc 2x oversampler library. v20150405 (5 April 2015) + lcg: Reimplemented using Lehmer random number generator (MINSTD). + lcg: Optimized random/white noise generators. + lcg: Added unit testing. + colored_noise/drum_synth/mono_synth: Fixed noise gain depending on sample rate. + poly: Optimized waveform generators. + poly: Restored REAPER v4.25..v4.591 support. v20150322 (22 March 2015) + rc_filter: Added multimode RC filter effect. + malloc: Added malloc.jsfx-inc dynamic memory management library. + wavetable_synth: Added velocity control, phase lock. + wavetable_synth: Added combo organ, full organ wavetables. + colored_noise/mono_synth/wavetable_synth: Nitpicked gain calculation. + rbj: Removed Direct Form I/II instance variables. + zdf: Nitpicked gain over Q in documentation. v20150215 (15 February 2015) + drum_synth: Improved low/mid/high tom sound. + drum_synth: Optimized drive algorithm, non-multichannel output. + wavetable_synth: Extended filter Q range. + wavetable_synth: Implemented tuning. v20150208 (8 February 2015) + drum_synth: Added simple drum synth (GM compatible, although incomplete). + wavetable_synth: Added paraphonic wavetable synth (work in progress). + Improved NSIS installer (added sections, formatted license/changelog). v20150118 (18 January 2015) + colored_noise: Added LP/BP/HP filter. v20141223 (23 December 2014) + mono_synth: Workaround for last touched parameter bug. v20141220 (20 December 2014) + adsr: Fixed instant (0 ms) attack. + adsr: Removed sustain -120 dB lower limit. + adsr: Don't revert to decay when updating sustain. + Added destination folder already exists warning to installer. v20141212 (12 December 2014) + mono_synth: Added mono/poly mode (16 notes max). + mono_synth: Added LFO (PWM on PW waveforms, FM otherwise). + mono_synth: Added modified square, pulse-width trapezoid/triangular pulse waveforms. + mono_synth: Added velocity control. + mono_synth: Fixed instant (0 ms) attack. + poly_mono_midi_router: Added MIDI note router. + midi_sustain: Added MIDI sustain emulator. + colored_noise: Added colored noise generator. + sin: Added sine_oscillator.jsfx-inc efficient sine/cosine wave oscillator library. + midiq: Split up msg23 into msg2 and msg3. + midiq: Added channel and status byte filters to midiq_collect(). + midiq: Made midiq_init() buffer size optional. + poly: Replaced leaky integrator with polyBLAMP. + poly: Optimized high-frequency fade out. + poly/lfo: Added variable pulse width trapezoid, modified square. + poly/lfo: Removed automatic set default pulse width (fixes/adds zero pulse width support). + lfo: Added sample and hold waveform. + lcg: Added grey, black noise. + adsr: Improved accuracy when scale != 1.0. + adsr: Added reset to off state. + zdf/rbj: Added reset filter states. + Removed legacy (unsupported) mono_synth.jsfx-inc, poly_blep2x.jsfx-inc, tone_generator.jsfx-inc libraries. + Renewed various library examples. + Minor library documentation additions/improvements. + Minor fixes/optimisations/nitpicks. v20130405 (5 April 2013) + mono_synth: Added MIDI channel slider. + synth: Added synth_all_notes_off() function. v20130404 (4 April 2013) + mono_synth: Added pan slider (0 dB pan law, thanks Justin Frankel!). v20130401a (1 April 2013) + random_midi_notes: Added random MIDI note generator plug-in. + lcg: Added rng.lcg_rand2(x) that uses rng.seed. + Windows NSIS installer. v20130401 (1 April 2013) + synth: Added mono_synth.jsfx-inc mono synth library. + adsr: Added adsr.jsfx-inc ADSR envelope library. + mono_synth: Fixed sample drift in ADSR. + mono_synth: Fixed retriggering filter decay. + tg: Added cacheless rectangle and circle (slow!). + tg: Fixed rectangle init not clearing cache. + Documentation nitpicks. v20130323 (23 March 2013) + lfo/poly/poly2: Added variable pulse width to tripulse. + lfo/poly/poly2/tg: Automatically set default pulse width. + poly/poly2: Merged trapezoid and tripulse integrators. v20130322 (22 March 2013) + zdf: Prevent denormals, part deux. v20130321 (21 March 2013) + lcg: Added noise_generator.jsfx-inc noise generator. + mono_synth: Implemented new noise generator. + zdf: Prevent denormals. v20130317 (St. Paddy's Day 2013) + Added documentation to .jsfx-inc libraries. + lfo/poly/tg: Changed phase and pulse width range to 0..1. + lfo/poly/tg: Rewrote waveform functions. + poly: Rewritten waveform functions are ~30% faster on average. + lfo: Added DC offset functions. + poly2: Added 2x oversampled polyBLEP tone generator. + ab_mono: Added A/B mono plug-in. + mono_synth: Fixed waveform when changing to half-wave rectified sine, Hammond, or staircase. + poly: Fixed triangle leaky integrator not initialising to current phase. + poly: Fixed initializers resetting leaky integrator feedback coefficient. v20130214 (14 February 2013) + zdf: Added zdf_filter.jsfx-inc zero-delay feedback state variable filter. + mono_synth: Replaced RBJ with ZDF filter. + mono_synth: Added filter Q slider. + lfo: Fixed rectangular wave, oops! + rbj: Automatically limit corner frequency. v20130210 (10 February 2013) + mono_synth: Replaced Fourier series with faster polyBLEP tone generator (poly_blep.jsfx-inc). + mono_synth: Added new waveforms (modified triangle, triangular pulse, Hammond, staircase). + mono_synth: Added white noise mix. + mono_synth: Added low-pass filter with decay. + lfo/tg: Added new waveforms. + lfo/tg: Minor changes (added lfo_setdt/tg_setdt). + rc: Slightly more efficient frequency setting. v20120829 (24 January 2013) + tg/lfo: Fixed overflow on very high frequencies, part deux. v20120828 (28 August 2012) + mono_synth: Added Pitch Wheel range slider. + tg/lfo: Fixed overflow on very high frequencies. + tg/lfo: Added sync to negative time values. v20120817 (17 August 2012) + midiq: Fixed offset/timing bug (thanks Fabrizio Benedetti). + mono_synth: Optimized 50% pulse as square wave. v20120810 (10 August 2012) + tg: Reduced aliasing. v20120809a (9 August 2012) + Removed denormalization functions. v20120809 (9 August 2012) + Initial release. Copyright (C) 2012-2023 Theo Niessink