P. 1
Tc Synth Tut Tech Essay

Tc Synth Tut Tech Essay

|Views: 6|Likes:
Published by cqchunter

More info:

Published by: cqchunter on Nov 18, 2012
Copyright:Attribution Non-commercial


Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less





As stated in the introduction, I needed to define the problems apparent with basic
MaxMSP patches, in contrast to clearly defined ‘good sounding’ attributes of synths
known for their sound quality.

There seem to be two main areas of problems common in basic MaxMSP patches:

1. High frequency glitches in turning audio on and off, switching between oscillators,
and fast variations of frequency and amplitude.

2. Basic oscillators and filters have a ‘harsh’ sound compared with Reaktor or


1. High frequency glitches in turning audio on and off, switching between oscillators,
and fast variations of frequency and amplitude.

The solution to the glitching of transitions in MaxMSP is relatively simple: using a
combination of linear and logarithmic/exponential ramps (line~ and curve~ respectively)
it is possible to smooth out the transitions. Figure 2 shows my initial patch of this idea,
which successfully smoothes out all transitions.


Figure 2 Patch to Smooth Transitions of a Simple Saw / Sine Synth (inc.


2. Basic oscillators and filters have a ‘harsh’ sound compared with Reaktor or

I was unable to discover a conclusive solution to the harsh oscillators or filter sound of
MaxMSP, as this is a quite massive undertaking, one that could easily form a project in
its own right. However, I did manage to discover some interesting alternative methods to
creating better sounding oscillators and I hope to both build on this research and do the
same with filters.

I started by looking at the basic core oscillators in Reaktor and it was immediately clear
that the programming paradigm of Reaktor is totally different to MaxMSP. Reaktor,
particularly v5 with its lower level ‘core’ functionality, takes more of a Digital Signal
Processing engineering approach and tends to not suffer with the irregular timing like
MaxMSP does. On the other hand MaxMSP has more of a programming language feel,
which allows it to be far more flexible.

I went through the core tutorial, built the basic sawtooth synth and compared that to the
multiosc synth (in the core building blocks) using a 440Hz tone. As to be expected from
a saw with no interpolation at its falling edge, it sounded much ‘buzzier’ and ‘harsher’
than the multiosc. It sounded quite similar to the MaxMSP object phasor~.

The multiosc still had some slight top end ‘fizzyness’, due to a small amount of aliasing,
but when compared back to back with the tone from the MaxMSP object saw~ (the
bipolar, apparently anti-aliased sawtooth object) at the same meter levels, the multiosc
had far more energy in the mid range and about the same amount of ‘fizzyness’.
Because of this, at the same overall perceptual loudness, the multiosc sounded much
warmer and smoother.


As you can see in Figure 3, the spectral content confirms the initial and expected
findings in comparing the phasor~ saw~ and Reaktor tutorial plots.

However, comparing the saw~ spectrum (MAX SAW) to the multiosc spectrum (RKT
MOSC), the spectrum is similar, except for the very top end, where the saw~ plot tails off
at the Nyquist frequency. This is surprising, as one would expect a warmer and
smoother sound to have less top end evidence of aliasing. Looking at the plots alone,
one would think that the saw~ should be easily the best sounding, but it is not.

Figure 3 Spectral Content of the Four Tones Discussed

The Reaktor ensemble that I used for comparing the tutorial sawtooth and multiosc
sawtooth can be seen below in Figure 4.


Figure 4 Ensemble to Compare the Tutorial Sawtooth and Multiosc Sawtooth (Plot
Showing Tutorial Sawtooth (Note vertical falling edge))

The two important elements in how Reaktor creates the sawtooth and the other multiosc
oscillators are:

1. the absence of lookup tables; and

2. a system of anti-aliasing, or low pass filtering in the time domain. In broad terms,
the edges of the waveform rounded off by interpolation algorithm rather than a
digital filter.

An analysis of the elements that make up multiosc saw shows that it uses a basic
accumulator to create the ramp of the sawtooth and some interesting interpolation at the
falling edge (the anti-aliasing).

The accumulator uses what Reaktor refers to as the speed increment (inc), which is the
amount that the wave should increase every sample if it is to go from -1 to 1 in the


duration of one period. This is shown mathematically as inc=2xF/Fs, where F is the
frequency of the desired note and Fs is the sample frequency (shown in the Reaktor
structure as SR.R). The modules creating inc can be seen in the top left of Figure 4 as
can the accumulator which is the macro Phase2.

The interpolation is carried out by the macro SawAA, (standing for anti-alias, although it
does not fully remove aliasing as shown in Figure 3). SawAA can be seen as part of the
saw module and in its own structure window in Figure 5.

This works by triggering an equation at the maximum and minimum step of the
sawtooth, which smoothes the falling edge.

The equations, (interpreted directly from Reaktor, hence the cumbersome form), are:

maximum value = ((((1-|i|) - ph)/|i|) * |(((1-|i|) - ph)/|i|)|) + ph

minimum value = ((((|i|-1) - ph)/|i|) * |(((|i|-1) - ph)/|i|)|) + ph

Where |i| is the absolute value of inc, and ph is the result of the accumulator, i.e. the
amplitude of the saw wave until interpolation.


Figure 5 The Structures Making Up the Relevant Elements of the Multiosc Saw
Oscillator (Plot Showing Multiosc Sawtooth (Note slightly curved falling edge))

The difference in approaches to generating a sawtooth can be seen quite clearly when
considering the waveforms in the time domain. (See Figure 6.)


Figure 6 Time Domain Representation of the Four 440Hz Tones Discussed:
MaxMSP Phasor~ (no anti-alias), MaxMSP Saw~, Reaktor Multiosc and the Reaktor
Tutorial Sawtooth (no anti-alias), Respectively

It has proved a significant challenge to implement this system of smoothing in MaxMSP,
as the good sample-by-sample timing is essential. However, with overdrive enabled I
found the patch shown in Figure 7 was able to smooth the transition using a basic
intuitive interpolation y = x – (0.25 – inc) and y = -x + (0.25 – inc).


Figure 7 Initial Sawint Patch to Mimic the Mechanism of SawAA

You're Reading a Free Preview

/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->