- NaN related Bugfixes: better avoidance of NaNs and better treatment of them.
- Performance enhancement.
- Updated "RandomPad.txt" example for improved stability and tone.
- Compiled with the latest Visual Studio (2026, ver. 18.5.1) and SDK (10.0.26100.7705).
Free programmable VST Instrument,Audio effect,MIDI processor/sequencer,SoundFont import,Temperaments,Multi I/O v1.0.200
- KVRist
- Topic Starter
- 305 posts since 17 May, 2022
Current version, 1.0.190 beta:
My youtube channel: https://www.youtube.com/channel/UCRwIM2 ... D9DlgfjzLQ
Thread on my programmable VST: viewtopic.php?t=581986
Official page on my VST on KVRAudio: https://www.kvraudio.com/product/crescendo-by-bjt2
Thread on my programmable VST: viewtopic.php?t=581986
Official page on my VST on KVRAudio: https://www.kvraudio.com/product/crescendo-by-bjt2
- KVRist
- Topic Starter
- 305 posts since 17 May, 2022
Current version, 1.0.191 beta:
- Introduced REVERB4: a new, fully-extended instruction with 13 automatable parameters for total control over the prime-number matrices.
- Inverted Signal Topology: Reversed the internal chain (now Diffusion -> Tank) to improve transient response and eliminate "muddy" onsets.
- Presence Boost: Refined the Early Reflections stage to act as a presence reinforcer (optimized for Grand Pianos and percussive attacks).
- Standardized parameter names across all versions to align with professional studio terminology.
- Full rewrite of the manual section covering the REVERB suite, including technical tips on the parameters and geometric scaling.
- New Example: Included a dedicated "Full Reverb" effect file to showcase the new architecture.
- Compiled with the latest Visual Studio (2026, ver. 18.5.1) and SDK (10.0.26100.7705).
My youtube channel: https://www.youtube.com/channel/UCRwIM2 ... D9DlgfjzLQ
Thread on my programmable VST: viewtopic.php?t=581986
Official page on my VST on KVRAudio: https://www.kvraudio.com/product/crescendo-by-bjt2
Thread on my programmable VST: viewtopic.php?t=581986
Official page on my VST on KVRAudio: https://www.kvraudio.com/product/crescendo-by-bjt2
- KVRist
- Topic Starter
- 305 posts since 17 May, 2022
Current version, 1.0.192 beta:
- Introduced UIMOD option for setting the Zoom.
- Save the Zoom in the DAW project file.
- Changed default font to Segoe UI with improved ClearType rendering and sub-pixel alignment for better readability.
- Fixed UI rendering artifacts: Standard controls now correctly inherit background textures and transparency for a seamless 3D look.
- Fixed UI residual flickering and performance enhancements.
- Compiled with the latest Visual Studio (2026, ver. 18.5.1) and SDK (10.0.26100.7705).
My youtube channel: https://www.youtube.com/channel/UCRwIM2 ... D9DlgfjzLQ
Thread on my programmable VST: viewtopic.php?t=581986
Official page on my VST on KVRAudio: https://www.kvraudio.com/product/crescendo-by-bjt2
Thread on my programmable VST: viewtopic.php?t=581986
Official page on my VST on KVRAudio: https://www.kvraudio.com/product/crescendo-by-bjt2
- KVRist
- Topic Starter
- 305 posts since 17 May, 2022
Current version, 1.0.193 beta:
I've just pushed version 1.0.193, and it's a bit of an 'academic crossover.'
As a researcher in the medical field, I’ve spent years working with Non-Local Means (NLM) for 2D/3D MRI denoising.
I decided to port those principles into Crescendo to see how they handle the complex noise distributions found in 1970s analog masters.
Unlike standard FFT subtractors that leave behind 'metallic' artifacts, this implementation operates entirely in the time domain.
By utilizing a Truncated Linear Kernel, the algorithm performs a massive statistical search through the signal history to differentiate between periodic musical harmonics and incoherent noise (like tape hiss).
It’s particularly effective against audio noise.
If you’re running a high-performance CPU, try pushing the Block Size higher, up to 267 for offline restoration.
The way it reconstructs mid-range textures and vocal 'warmth' is significantly more transparent than any frequency-domain filter I've tested.
- Introducing Non-Local Means (NLM) denoising engine, directly from medical research: Porting MRI statistical denoising to the 1D audio domain. Dual-mode processing: Use zero-delay lightweight settings for real-time live filtering, or push the NLM parameters for maximum precision in offline rendering.
- Bugfixes and performance enhancements.
- Compiled with the latest Visual Studio (2026, ver. 18.5.1) and SDK (10.0.26100.7705).
I've just pushed version 1.0.193, and it's a bit of an 'academic crossover.'
As a researcher in the medical field, I’ve spent years working with Non-Local Means (NLM) for 2D/3D MRI denoising.
I decided to port those principles into Crescendo to see how they handle the complex noise distributions found in 1970s analog masters.
Unlike standard FFT subtractors that leave behind 'metallic' artifacts, this implementation operates entirely in the time domain.
By utilizing a Truncated Linear Kernel, the algorithm performs a massive statistical search through the signal history to differentiate between periodic musical harmonics and incoherent noise (like tape hiss).
It’s particularly effective against audio noise.
If you’re running a high-performance CPU, try pushing the Block Size higher, up to 267 for offline restoration.
The way it reconstructs mid-range textures and vocal 'warmth' is significantly more transparent than any frequency-domain filter I've tested.
Last edited by bjt2 on Sat May 16, 2026 11:42 am, edited 2 times in total.
My youtube channel: https://www.youtube.com/channel/UCRwIM2 ... D9DlgfjzLQ
Thread on my programmable VST: viewtopic.php?t=581986
Official page on my VST on KVRAudio: https://www.kvraudio.com/product/crescendo-by-bjt2
Thread on my programmable VST: viewtopic.php?t=581986
Official page on my VST on KVRAudio: https://www.kvraudio.com/product/crescendo-by-bjt2
- KVRist
- Topic Starter
- 305 posts since 17 May, 2022
Current version, 1.0.194 beta:
- Added NLMH with hyperbolic weights. RECOMMENDED: better than NLM in most situations.
- Compiled with the latest Visual Studio (2026, ver. 18.5.1) and SDK (10.0.26100.7705).
My youtube channel: https://www.youtube.com/channel/UCRwIM2 ... D9DlgfjzLQ
Thread on my programmable VST: viewtopic.php?t=581986
Official page on my VST on KVRAudio: https://www.kvraudio.com/product/crescendo-by-bjt2
Thread on my programmable VST: viewtopic.php?t=581986
Official page on my VST on KVRAudio: https://www.kvraudio.com/product/crescendo-by-bjt2
- KVRist
- Topic Starter
- 305 posts since 17 May, 2022
Current version, 1.0.195 beta:
- UI bugfixes for some GPUs or Hosts.
- Tweaked NLM/NLMH weights.
- Compiled with the latest Visual Studio (2026, ver. 18.5.1) and SDK (10.0.26100.7705).
My youtube channel: https://www.youtube.com/channel/UCRwIM2 ... D9DlgfjzLQ
Thread on my programmable VST: viewtopic.php?t=581986
Official page on my VST on KVRAudio: https://www.kvraudio.com/product/crescendo-by-bjt2
Thread on my programmable VST: viewtopic.php?t=581986
Official page on my VST on KVRAudio: https://www.kvraudio.com/product/crescendo-by-bjt2
- KVRist
- Topic Starter
- 305 posts since 17 May, 2022
Current version, 1.0.196 beta:
I performed long experimentations with '70s pieces with a bit of hiss.
Vinyl crackles can't be reduced too much: the noise is too impulsive.
Hiss of old tapes or masters is manageable, see the NLM example video above, simulating a piece with hiss noise.
Notice that the video was recorded with the old version with potential residual artifacts due to the speed optimization, that I ditched in the new version.
The last version has higher quality, especially at the settings in the example files.
From the main page:
Introducing the Non-Local Means (NLM) Denoising Engine:
The core philosophy of this restoration engine is to bypass the historical limitations of spectral subtractors. Traditional noise reduction plugins rely heavily on Fast Fourier Transform (FFT) analysis, which inevitably introduces pre-ringing, phase smearing, and the infamous "musical noise" artifacts (gargling, metallic transients) due to threshold masking in the frequency domain.
By operating entirely within the pure time-domain, our custom Non-Local Means (NLM) engine evaluates the statistical self-similarity of the audio stream. It detects and preserves coherent musical harmonics while mathematical variance isolates and attenuates chaotic, unstructured noise.
Key Architectural Pillars:
Medical-Imaging Port (MRI-Grade Filtering): This engine features a first-of-its-kind porting of state-of-the-art denoising algorithms originally developed for high-resolution Medical Imaging (such as MRI and CT scans). These complex 3D spatial filtering techniques have been meticulously adapted and optimized into a 1D real-time audio stream, providing unprecedented precision in separating micro-dynamics from background hiss.
Custom Hyperbolic Kernel: Instead of relying on traditional transcendental exponential functions—which are computationally heavy and often exhibit aggressive truncation curves—the algorithm introduces a proprietary hyperbolic weighting kernel. This custom mathematical implementation is not only significantly faster on a clock-cycle level, but it also delivers a smoother, more natural decay curve that prevents gating artifacts on low-level acoustic decays and reverb tails.
True Zero-Latency Time-Domain Processing: For real-time applications, the engine can operate with absolute zero latency. By avoiding block-based frequency transformations, the phase response of your track remains perfectly linear, making it safe for live filtering, tracking, or insertion into complex mixer routing matrices where phase alignment is critical.
Optional Bidirectional Look-Ahead Mode: When maximum restoration quality is required, the engine can be switched into a bilateral/bidirectional mode. By introducing a minor, predictable host-compensated latency (a few hundred samples), the algorithm gains the ability to analyze future samples. This look-ahead capability improves statistical accuracy, allowing for deep restoration without compressing the perceived depth of the audio.
Dual-Mode Processing Scalability: The architecture scales seamlessly from zero-delay, lightweight setups designed for live monitoring, up to massive, high-precision parameter boundaries optimized for critical offline rendering and mastering.
Technical Insights & Optimization Guide:
The default settings included in the new example files have been forge-tested through long experimentation sessions on highly dynamic 1970s masters and tape tracks containing prominent background hiss.
When configuring the engine, it is important to understand the nature of the target noise:
Impulsive Noise (Vinyl Crackles): Due to the statistical, continuous nature of Non-Local Means analysis, highly impulsive transients like clicks, pops, and vinyl crackles cannot be drastically reduced. The algorithm is designed to protect transients, meaning sudden impulses are interpreted as valid musical events rather than continuous noise.
Continuous Noise (Tape Hiss & Master Hum): This is where the NLM engine excels. Broadband tape hiss, analog preamp noise, and master hum are perfectly manageable.
The NLM demonstration video available above showcases the capabilities of the engine simulating a heavy hiss environment. Note that the noise level usually found in high quality '70s masters is much lower than seen in the example video (-60dB vs -50dB).
How to Dial in the Parameters:
Strength (First Step): Always treat the Strength parameter as your primary control. It acts as the threshold scaling for the noise-floor evaluation. Adjust this first until the hiss recedes to a comfortable level.
Block Size (The Quality Factor): If your CPU speed allows it, increase the Block Size. Increasing the block size is completely safe, does not introduce phase distortion, and represents the most effective way to improve the fidelity of the audio restoration. For optimal results, it is highly recommended to keep the Block Size over 100 samples in Bidirectional mode or over 200 samples in Zero-Latency mode. This is particularly ideal for offline mastering rendering.
Window Size (Handle with Care): While a larger search window can increase statistical accuracy, raising it too high introduces a risk of time-domain artifacts and micro-echoes. Keep the window size conservative: do not exceed 10 samples in Bidirectional mode or 20 samples in Zero-Latency mode. When processing offline, prioritize maximizing the Block Size while increasing the Window Size only minimally.
Important Sample Rate Notice:
The sample numbers and boundaries specified above (e.g., 10/20 for Window, 100/200 for Block) are calibrated for standard 44100 Hz and 48000 Hz sampling rates. If you are operating within high-resolution projects (96 kHz, 192 kHz, or higher), these sample limits must be scaled up proportionally to cover the same temporal duration (in milliseconds). Please note that the computational complexity is proportional to the product of block size and window size, so doubling them for 96 kHz sampling rate means quadrupling the CPU load: Real-time live processing may become too heavy for the CPU; in these scenarios, utilizing the plugin within an offline rendering/mastering workflow is highly recommended.
- NLM Filter: removed a performance hack that was compromising audio quality.
- NLM Filter: optimized NLM thresholds and removed stereo-link and linear weighting. Now NLM uses only an hyperbolic weighting function.
- NLM Filter: added bidirectional (look-ahead) version, in addition to the zero latency version.
- NLM Filter: New NLM filter examples including multi stage versions.
- NLM Filter: Performed experimentations with actual noisy audio files to find the best settings.
- Example files have manually tuned settings. Just tune strenght or increase block/windows size if necessary.
- Added BIQUADEQDB function for invertible equalization.
- Compiled with the latest Visual Studio (2026, ver. 18.5.1) and SDK (10.0.26100.7705).
I performed long experimentations with '70s pieces with a bit of hiss.
Vinyl crackles can't be reduced too much: the noise is too impulsive.
Hiss of old tapes or masters is manageable, see the NLM example video above, simulating a piece with hiss noise.
Notice that the video was recorded with the old version with potential residual artifacts due to the speed optimization, that I ditched in the new version.
The last version has higher quality, especially at the settings in the example files.
From the main page:
Introducing the Non-Local Means (NLM) Denoising Engine:
The core philosophy of this restoration engine is to bypass the historical limitations of spectral subtractors. Traditional noise reduction plugins rely heavily on Fast Fourier Transform (FFT) analysis, which inevitably introduces pre-ringing, phase smearing, and the infamous "musical noise" artifacts (gargling, metallic transients) due to threshold masking in the frequency domain.
By operating entirely within the pure time-domain, our custom Non-Local Means (NLM) engine evaluates the statistical self-similarity of the audio stream. It detects and preserves coherent musical harmonics while mathematical variance isolates and attenuates chaotic, unstructured noise.
Key Architectural Pillars:
Medical-Imaging Port (MRI-Grade Filtering): This engine features a first-of-its-kind porting of state-of-the-art denoising algorithms originally developed for high-resolution Medical Imaging (such as MRI and CT scans). These complex 3D spatial filtering techniques have been meticulously adapted and optimized into a 1D real-time audio stream, providing unprecedented precision in separating micro-dynamics from background hiss.
Custom Hyperbolic Kernel: Instead of relying on traditional transcendental exponential functions—which are computationally heavy and often exhibit aggressive truncation curves—the algorithm introduces a proprietary hyperbolic weighting kernel. This custom mathematical implementation is not only significantly faster on a clock-cycle level, but it also delivers a smoother, more natural decay curve that prevents gating artifacts on low-level acoustic decays and reverb tails.
True Zero-Latency Time-Domain Processing: For real-time applications, the engine can operate with absolute zero latency. By avoiding block-based frequency transformations, the phase response of your track remains perfectly linear, making it safe for live filtering, tracking, or insertion into complex mixer routing matrices where phase alignment is critical.
Optional Bidirectional Look-Ahead Mode: When maximum restoration quality is required, the engine can be switched into a bilateral/bidirectional mode. By introducing a minor, predictable host-compensated latency (a few hundred samples), the algorithm gains the ability to analyze future samples. This look-ahead capability improves statistical accuracy, allowing for deep restoration without compressing the perceived depth of the audio.
Dual-Mode Processing Scalability: The architecture scales seamlessly from zero-delay, lightweight setups designed for live monitoring, up to massive, high-precision parameter boundaries optimized for critical offline rendering and mastering.
Technical Insights & Optimization Guide:
The default settings included in the new example files have been forge-tested through long experimentation sessions on highly dynamic 1970s masters and tape tracks containing prominent background hiss.
When configuring the engine, it is important to understand the nature of the target noise:
Impulsive Noise (Vinyl Crackles): Due to the statistical, continuous nature of Non-Local Means analysis, highly impulsive transients like clicks, pops, and vinyl crackles cannot be drastically reduced. The algorithm is designed to protect transients, meaning sudden impulses are interpreted as valid musical events rather than continuous noise.
Continuous Noise (Tape Hiss & Master Hum): This is where the NLM engine excels. Broadband tape hiss, analog preamp noise, and master hum are perfectly manageable.
The NLM demonstration video available above showcases the capabilities of the engine simulating a heavy hiss environment. Note that the noise level usually found in high quality '70s masters is much lower than seen in the example video (-60dB vs -50dB).
How to Dial in the Parameters:
Strength (First Step): Always treat the Strength parameter as your primary control. It acts as the threshold scaling for the noise-floor evaluation. Adjust this first until the hiss recedes to a comfortable level.
Block Size (The Quality Factor): If your CPU speed allows it, increase the Block Size. Increasing the block size is completely safe, does not introduce phase distortion, and represents the most effective way to improve the fidelity of the audio restoration. For optimal results, it is highly recommended to keep the Block Size over 100 samples in Bidirectional mode or over 200 samples in Zero-Latency mode. This is particularly ideal for offline mastering rendering.
Window Size (Handle with Care): While a larger search window can increase statistical accuracy, raising it too high introduces a risk of time-domain artifacts and micro-echoes. Keep the window size conservative: do not exceed 10 samples in Bidirectional mode or 20 samples in Zero-Latency mode. When processing offline, prioritize maximizing the Block Size while increasing the Window Size only minimally.
Important Sample Rate Notice:
The sample numbers and boundaries specified above (e.g., 10/20 for Window, 100/200 for Block) are calibrated for standard 44100 Hz and 48000 Hz sampling rates. If you are operating within high-resolution projects (96 kHz, 192 kHz, or higher), these sample limits must be scaled up proportionally to cover the same temporal duration (in milliseconds). Please note that the computational complexity is proportional to the product of block size and window size, so doubling them for 96 kHz sampling rate means quadrupling the CPU load: Real-time live processing may become too heavy for the CPU; in these scenarios, utilizing the plugin within an offline rendering/mastering workflow is highly recommended.
My youtube channel: https://www.youtube.com/channel/UCRwIM2 ... D9DlgfjzLQ
Thread on my programmable VST: viewtopic.php?t=581986
Official page on my VST on KVRAudio: https://www.kvraudio.com/product/crescendo-by-bjt2
Thread on my programmable VST: viewtopic.php?t=581986
Official page on my VST on KVRAudio: https://www.kvraudio.com/product/crescendo-by-bjt2
- KVRist
- Topic Starter
- 305 posts since 17 May, 2022
Current version, 1.0.197 beta:
- Performance enhancements on the NLM filter code: up to 20% on old CPUs.
- Tweaked kernel function and weights to allow increasing more the window without artifacts.
- Compiled with the latest Visual Studio (2026, ver. 18.5.1) and SDK (10.0.26100.7705).
My youtube channel: https://www.youtube.com/channel/UCRwIM2 ... D9DlgfjzLQ
Thread on my programmable VST: viewtopic.php?t=581986
Official page on my VST on KVRAudio: https://www.kvraudio.com/product/crescendo-by-bjt2
Thread on my programmable VST: viewtopic.php?t=581986
Official page on my VST on KVRAudio: https://www.kvraudio.com/product/crescendo-by-bjt2
- KVRist
- Topic Starter
- 305 posts since 17 May, 2022
Current version, 1.0.198 beta:
- Soundfont: Fixed bug causing missing layers in specific circumstances. They are now correctly summed and stacked. Re-import all your files.
- Compiled with the latest Visual Studio (2026, ver. 18.5.1) and SDK (10.0.26100.7705).
My youtube channel: https://www.youtube.com/channel/UCRwIM2 ... D9DlgfjzLQ
Thread on my programmable VST: viewtopic.php?t=581986
Official page on my VST on KVRAudio: https://www.kvraudio.com/product/crescendo-by-bjt2
Thread on my programmable VST: viewtopic.php?t=581986
Official page on my VST on KVRAudio: https://www.kvraudio.com/product/crescendo-by-bjt2
- KVRist
- Topic Starter
- 305 posts since 17 May, 2022
Current version, 1.0.199 beta:
- Soundfont code restructure for bugfixes and better performance of the generated code, exploiting the new features of OSCG. Re-import all your files.
- Changed default font weight.
- Compiled with the latest Visual Studio (2026, ver. 18.5.1) and SDK (10.0.26100.7705).
My youtube channel: https://www.youtube.com/channel/UCRwIM2 ... D9DlgfjzLQ
Thread on my programmable VST: viewtopic.php?t=581986
Official page on my VST on KVRAudio: https://www.kvraudio.com/product/crescendo-by-bjt2
Thread on my programmable VST: viewtopic.php?t=581986
Official page on my VST on KVRAudio: https://www.kvraudio.com/product/crescendo-by-bjt2
- KVRist
- Topic Starter
- 305 posts since 17 May, 2022
Current version, 1.0.200 beta:
- Compiled with the latest Visual Studio (2026, ver. 18.6.1, compiler 14.51) and SDK (10.0.28000.1839).
My youtube channel: https://www.youtube.com/channel/UCRwIM2 ... D9DlgfjzLQ
Thread on my programmable VST: viewtopic.php?t=581986
Official page on my VST on KVRAudio: https://www.kvraudio.com/product/crescendo-by-bjt2
Thread on my programmable VST: viewtopic.php?t=581986
Official page on my VST on KVRAudio: https://www.kvraudio.com/product/crescendo-by-bjt2
- KVRAF
- 3432 posts since 28 Jan, 2006 from Phoenix, AZ
I am very interested in the NLM filter for denoising samples for sample libraries, but I downloaded it, loaded up NLM and NLMH and the DAW stutters, it's unusable in the current state. This seems like a great candidate for offline denoising. Is there any way I can try out this algorithm outside of the audio plugin? I am a capable programmer but not so capable as to be able to recreate NLM with just a description.
- KVRist
- Topic Starter
- 305 posts since 17 May, 2022
If it stutters then your CPU is not enough powerful for your settings.Architeuthis wrote: Wed May 27, 2026 12:03 am I am very interested in the NLM filter for denoising samples for sample libraries, but I downloaded it, loaded up NLM and NLMH and the DAW stutters, it's unusable in the current state. This seems like a great candidate for offline denoising. Is there any way I can try out this algorithm outside of the audio plugin? I am a capable programmer but not so capable as to be able to recreate NLM with just a description.
You can always try it offline, but for on line processing try to lower block size e.g. set half the value (depending on the example file).
It's strange though. The default values that i put in the example files are supported by my old sandy bridge... Only my old celeron needed to lower block size e.g. halving them.
What CPU do you have? At what sample rate your DAW is set?
The default sample numbers in the files were tested with 48KHz of sample rate. If you use higher sample rate, even if you have a more powerful CPU you may have to lower the block size. For higher sample rates offline processing is advised.
Offline processing depends on the DAW. I tried with my old celeron and Ableton Live 9.7.5 just loading a file in the UI, setting an high quality setting, ignoring the stuttering and just exporting normally with the function in the menu. Other DAWs should be similar.
If you want to test the algorithm out of a DAW you have to implement audio read and audio write.
Better to use a DAW. If you don't want to mess with a DAW, you can try with SAVIHOST or VSTHOST. They have the WAV exporting option...
I discovered that FFMPEG has an implementation of NLM filter for offline processing, but probabily uses the standard Buades et al. implementation. I found a different weighting function that works better for audio. If you want to try to implement it, you can search on line for the pseudocode for the 3D version and adapt to 1D. I already developed the 3D version in CUDA and multi GPU years ago (i am a researcher in the medical field) and so i had only to adapt it.
Note for higher sample rate: if you double the sample rate, you use double the cpu, but to have the same filtering, you should double also window and block size to have the same effect, occupying eight time the CPU than at 48KHz. It is advised to lower the sample rate to 48KHz if you want live denoising.
My youtube channel: https://www.youtube.com/channel/UCRwIM2 ... D9DlgfjzLQ
Thread on my programmable VST: viewtopic.php?t=581986
Official page on my VST on KVRAudio: https://www.kvraudio.com/product/crescendo-by-bjt2
Thread on my programmable VST: viewtopic.php?t=581986
Official page on my VST on KVRAudio: https://www.kvraudio.com/product/crescendo-by-bjt2
