**open source variation of the juce plugin demo**, available on github: https://github.com/aaronleese/JucePlugin-Synth-with-AntiAliasing

### Background – Aliasing & Bandwidth

Let’s start off by considering a square wave. Like any other real world signal, a square wave can be thought of as an infinite sum of sine waves. Adding them all up, you get a perfect square wave. The first synths (additive synths), generally worked by summing up 8 or 10 sine waves to get something approximating a square wave. This is what we call**“bandwidth limited”**, meaning that the signal is made up of a

**finite number**of sine waves. Summing up sine waves however, is a fairly inflexible and non-causal (which will be discussed more later, but essentially means you can’t use this method for certain real time functions). We wanted a synth that was more versatile, and so we settled on the idea of creating a bandwidth limited subtractive synth using the minBlep method for antialiasing.

### Hard Syncing and minBleps

Another feature that we became aware of and wanted to add to our synth was hard syncing; which, according to Sound on Sound journalist Gordon Reid, is the least understood feature for many users of a synthesizer [1]. Simply put, a hard synced synth is one in which one oscillator (the master) causes another (the slave) to reset. If should be clear by now what challenge this presents: namely, that every time the waveform resets it introduces a nonlinearity. This means that additive synths, especially if using pre-computed waves, will simply not do. Enter the minimum phase band-limited step (or minBlep). The minBlep waveform is the real world version of a step; that is, it is the waveform that can move most quickly from one level to another without using any sine waves that are too high. This is important because “too high” sine waves (ones above the sampling rate) get reflected (aliased) to within the audible spectrum, and result in the bad sound artifacts we have mentioned. The idea behind using a minBlep is that whenever a nonlinearity occurs, you add this waveform to the streaming audio (beginning exactly at the location of the nonlinearity), and effectively remove the higher frequency components of the step, while keeping the desirable ones.### Tuning the minBlep

We can of course, take this idea one step further, and generate a waveform which will limit the band to be**below**the sampling rate. In this way, we can tune up the number of harmonics we would like to use. You can think of this are harmonic depth.