# Announcing DSP Testbench

**URL:** <https://forum.juce.com/t/announcing-dsp-testbench/33098>\
**Category:** Useful Tools and Components\
**Created:** [April 28, 2019, 10:54am UTC](https://forum.juce.com/t/announcing-dsp-testbench/33098 "2019-04-28T10:54:55Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![andrewj](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/andrewj/32/13428_2.png) [@andrewj](https://forum.juce.com/u/andrewj)\
**Post date:** [April 28, 2019, 10:54am UTC](https://forum.juce.com/t/announcing-dsp-testbench/33098/1 "2019-04-28T10:54:56Z")

</div>

Hi all, I’ve just made one of my side projects public because I thought some of you might find it handy.

[DSP Testbench](https://github.com/AndrewJJ/DSP-Testbench) is designed to help JUCE developers to analyse their DSP by providing a test harness for code inheriting from `juce::dsp::ProcessorBase`. The harness provides signal sources, routing, analysis and monitoring functions.

 ![Screenshot](https://github.com/AndrewJJ/DSP-Testbench/raw/master/screenshot.png)

You can read about all the handy features in the [README.md](https://github.com/AndrewJJ/DSP-Testbench/blob/master/README.md) - but the basic idea is that you can route various signal sources through A/B versions of your DSP code to assess the impacts of tweaks and optimisations. One of the niftiest features is a snapshot function which lets you reliably analyse the same segment of audio each time. This is really handy for checking an impulse response for example - and yes, impulse and step signal sources are provided 🕶

If you want to have a play, you can grab the repo from [GitHub](https://github.com/AndrewJJ/DSP-Testbench).

### How to use

To make use of DSP Testbench, you need to include your own code, wrap it appropriately and build the project.

- Navigate to the `Source\Processing` folder and take a look at `ProcessorExamples.h/.cpp`. This shows how to inherit from ProcessorHarness and shows examples of how to override the necessary pure virtual functions.
- Create a local branch of the repository before proceeding
- Copy (or create) your own code into the project folder
  - Make sure you add these files to the Projucer project also
  - Either extend `ProcessorExamples.h/cpp` or create your own wrapper class and include it in `MainComponent.cpp`

- Instantiate your processor harness in the `MainContentComponent` constructor
  - If optimising code, then use two separate wrappers and instantiate them separately

- Build, run and test!

---

<div class="post-metadata">

**Author:** ![matt](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/matt/32/18340_2.png) [@matt](https://forum.juce.com/u/matt)\
**Post date:** [April 28, 2019, 5:56pm UTC](https://forum.juce.com/t/announcing-dsp-testbench/33098/2 "2019-04-28T17:56:09Z")

</div>

Slick!

Matt

---

<div class="post-metadata">

**Author:** ![andrewj](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/andrewj/32/13428_2.png) [@andrewj](https://forum.juce.com/u/andrewj)\
**Post date:** [January 23, 2021, 3:00am UTC](https://forum.juce.com/t/announcing-dsp-testbench/33098/3 "2021-01-23T03:00:47Z")

</div>

FYI - I’ve just updated this for JUCE 6 and fixed a bug with the scopes if using secondary monitors.
