$0.00 0


In this tutorial, I'll begin building a formant filter in Reaktor. A formant filter is used...

In this tutorial, I’ll begin building a formant filter in Reaktor. A formant filter is used to shape sounds into a spectrum that is similar to the human voice producing vowel sounds. As such, they can be used to create ‘talking’ synth lines (although the typical method to get such a sound is to use bit crushers).

Unfortunately, many synths do not contain formant filters, and Reaktor itself does not ship with one either, to my knowledge. I first encountered a formant filter in Thor, which is a part of Reason. They are a lot of fun!

This is an intermediate level tutorial, and it is assumed that the reader is familiar with my previous work on filter design in Reaktor, which can be found here. It is only necessary to read the first two or three. You may also want to make yourself familiar with Core if you are not already, there are some beginner tutorials here.

As I usually do with more complex topics, I’ll use this first tutorial to outline everything we want to accomplish, and most of the implementation will be covered in a follow-up tutorial next week.


A formant is defined as a peak in the spectral graph of the human voice. A picture is worth a thousand words:

This is the spectrum of a noise oscillator passing through a formant filter set to mimic the vowel ‘A’ in a soprano voice. The peaks in the graph are the frequencies that have been accentuated by the formant filter.


Recently, I made a members only video showing how to make a crude formant filter using a group of five Primary bandpass filters in parallel. With the resonance set high enough, each bandpass filter is used to accentuate one of the formants in the vowel sound. Afterward, all five signals can simply be mixed together to create the final sound.

[aside title = “Pro Tip”]You can save some CPU by using a serial filter structure. [/aside]

The bandpass filters aren’t entirely ideal – in a formant filter we want to be able to specify the bandwidth of the pass signal, something we don’t get direct control over in the Primary modules. To that end, we will build a simple two pole resonator filter that has inputs for both the central frequency and the bandwidth.

Another thing that can be improved upon is the structure can be serial instead of parallel. The parallel method, already described above, looks something like this (using Primary filters as an example):

Each filter receives the audio input individually, and the outputs of the filter are mixed back together. This is a perfectly valid filter structure and many powerful synths utilize the parallel filter scheme to great effect.

However, in the case of a formant filter, you can save some CPU by using a serial connection:

Here the output of each filter simply runs into the next filter. This is useful because we can cut out the mixer module entirely! It is also nice because with a parallel structure, each filter needs to be be an amplitude value as well, whereas with a serial filter, the levels are controlled automatically.


So, if our filter is going to consist of five resonator filters in serial, and each resonator has a frequency value and a bandwidth value, it is important to consider how the user will control all of these parameters.

While it is certainly possible to simply supply the user with ten knobs and let them program out each vowel painstakingly, it is also clear that this is a pretty clunky solution – who wants to bother with that many knobs for a filter?

There is also the issue that stationary formant filters are not nearly as nice sounding as filters that move between different vowels controlled by an LFO or other modulator. This of course similar to how speech is more interesting to listen to than somebody saying ‘AAAAHHHHHH’ at a set pitch!

A standard solution that both does away with the multitude of knobs and makes for easy modulation is to use an XY graph to control which vowel is being used. The values for each parameter is stored in a table and the appropriate value is read out for whichever vowel is active.

As an example, here’s Thor’s formant filter:

With this in mind, I wish to make a similar setup that uses the X axis of the XY module to control which vowel is being spoken (A, E, I, O, U) and the Y axis further classifies between soprano, alto, tenor, bass and countertenor voicings.

At any point in time, the filter can therefore be morphing between a total of 4 values (in between two points on the X axis, and in between two points on the Y axis). For example, you could be between A and E on the X axis, and be morphing between soprano and alto on the Y axis. This allows you to create some pretty interesting morphing sounds.

With the idea of morphing between 4 given points, I created the following Core cell:

The structure has two tables, Freq, and Band, that contain the parameter values for each vowel sound. The V1-V4 inputs gives the indices of the four vowels to morph between. P1 and P2 control the X and Y positions of that morph, between 0 and 1. A simple linear function is used to morph between the values and arrive at a final frequency and bandwidth.

The above structure controls the parameters for a single resonator, and will be duplicated 5 times, for each formant. Each table needs it’s own values as well, a table of formant frequencies and bandwidths can be found in an appendix to the CSound manual, here.


We have mapped out the design of the formant filter pretty thoroughly in this tutorial. Next time, I’ll get into the actual implementation of the resonator filter and hopefully end up with a final product. Stay tuned!

Have a Question or Comment About This Tutorial?

Want to ask a question about this tutorial or perhaps you have something to add?

Click through to our forum post about this tutorial and join the conversation!

Visit: Advanced Formant Filter in Reaktor


Building in Reaktor for Beginners

ADSR Courses

Add to cart
SAVE 40%

Sequencer Modules in Reaktor

ADSR Courses

Add to cart
SAVE 40%

FFT (Fast Fourier Transform) with Reaktor

ADSR Courses

Add to cart
SAVE 40%

Reaktor Core Masterclass

ADSR Courses

Add to cart
Waveform Loaded
Waveform Played
Clear all
Create an account to use wishlists
Create an account to save tutorials
Follow your favourite labels, formats and genre's and ADSR will show what's new in those on your next visit.
  • Create product wishlist
  • Save your favorite tutorials
  • Regular discounts and exclusives
  • Never miss a sound! Follow your favorite labels.
Sign up to My ADSR to ensure you're ahead of the pack. Save your favorite content and be notified of new content. You'll never miss a thing!
Create your account now!
Sign up to My ADSR to ensure you're ahead of the pack. Save your favorite content and be notified of new content. You'll never miss a thing!
  • Get days all ADSR courses free
  • Create product wishlist
  • Save your favorite tutorials
  • Regular discounts and exclusives
Create your account now!
adsrsounds.com login Video streaming login
Remember me
Forgot your password?
Create your account

Send info
  1. Enter your email address
  2. Click "Send info"
  3. Check your inbox for an activation link
  4. Visit activation link and enter set new password
Sign in
Create your account
IMPORTANT: Is this product compatible with your system? Please check the product system requirements tab before purchasing. To proceed with this purchase you must check the box to confirm you have checked the requirements.

I have read the system requirements and agree to the return policy. I understand that refunds will not be given due to limitation of my software or operating system.

I don't agree
, you have loyalty credit available. To redeem click the button to claim !
Claim your free sounds

For every $5 you spend on ADSR receive 1 free credit for Sample Manager.

Even better, we have back-dated this so any purchases you made since 2017 have also been credited to your account!

Click the button below to claim your free credit.

Get my free credits
Loyalty credits
1Every purchase you make on ADSR* now earns you 1 loyalty credit for every $5 spent
2Once you make a purchase your credits are added to your account
3Credits can be redeemed in ADSR Sample Manager to download individual loops and samples
4To redeem simply download ADSR Sample Manager and/or log into Sample Manager with your ADSR login details
5Credits will have been automatically added to your account
6Loyalty credits expire 30 days after initial purchase
* Not including video subscriptions