Sei sulla pagina 1di 18

NEL FFT Suite 2017

Spectral Processors for Kyma 7


Designed by
Cristian Vogel and Gustav Scholda

TM �
NEVERENGINE LABS
This guide was compiled by Cristian Vogel based on technical documentation
originally authored by Cristian Vogel and Gustav Scholda.

All artwork by Cristian Vogel using StructureSynth


All rights reserved.
Published by NeverEngine Labs August 11th 2017
www.neverenginelabs.com

Many thanks to all the subscribers to the WireFrames Lab who supported and
motivated us, and of course the biggest thanks to Carla Scaletti and Kurt Hebel
the creators of Kyma for their massive support and for having created the
awesome Kyma sound design environment upon which all our work is based.
The NEL FFT Suite consists of 9 processors and 21 sound design examples that all use
advanced FFT techniques to shift, smear and blur audio at high quality and in realtime. The
processors were all made using our own WireFrames library, which was developed during the
NeverEngine Labs 'WireFrames Lab' in 2017. Many thanks to all the subscribers who
supported our work during the development phase.

What is FFT?
That is a very pertinent question, but we are not going to go into it in here. Instead, we refer
you to a very good article that tries to explain the Fourier Transform in very simple terms. 


https://betterexplained.com/articles/an-interactive-guide-to-the-fourier-transform/ 


You may also feel like watching Pete Johnstons' entertaining presentation from KISS2016


https://vimeopro.com/symbolicsound/kiss2016-presentations/video/190487545

The Fast Fourier Transform is a computationally efficient Fourier Transform used widely in
signal processing. In Kyma there is one core prototype which 'takes an input from the time
domain and produces an output signal in the frequency domain or vice versa' - simply called
FFT. We started there and added special processing techniques to manipulate the phases
and magnitudes of a complex signal in the frequency domain, before transforming it back to
the time domain. All our processors work on that level. As this type of programming can be
quite tricky to understand we have encapsulated our favourite treatments as user friendly
custom Classes that create fantastic high quality sound design from any given source.
The Classes are:

NEL FFT HighOrderFormantShift

* Very efficient high quality formant/pitch shifter.

NEL FFT DeepBlur

* Advanced FFT spectral blur effect

NEL FFT BiSmooth

* Highly efficient bidirectional smoothing

NEL FFT StochasticShift

* A complex algorithmic formant shifter

NEL FFT DecayClouds

* A dense FFT delay processor.

NEL FFT SpectralAnnealing

* A type of algorithmic stretch process

NEL FFT HoltWintersSmooth

* A unique spectral smoothing and stretching algorithm

NEL FFT MultibandProcessor

* A highly efficient multiband stretching, shifting and filtering processor

NEL FFT StochasticMask

* A type of algorithmic filtering technique

The processors are excellent at blurring and stretching, shifting and evolving any audio
source. They are highly efficient, and have all been tested to run on the Paca and
Pacarana at up to 96K and up to the maximum FFT window length of 16384 samples. If
you want to use high sample rates like 96kHz please keep in mind that this will change
the resolution of the FFT processors which always distributes bins between 0 and
halfSampleRate Hz. If you double the sample rate you also need to double the FFTSize
to get the same result e.g. 48 kHz @ 4096 is equal to 96 kHz @ 8192. In general you
should consider if higher sample rates than 48kHz are really needed. The only reason to
do it is if you are working with sample sources recorded at that sample rate.
NEL FFT HighOrderFormantShift
Very efficient high quality formant/pitch shifter.

First order is standard range, but you can shift higher or lower
by defining the Order constant before running. For example an
Order of 2 doubles the shift range, an Order of 3 doubles it again
and so on.

Attenuate
Attenuate the input source before the FFT processing. If your TimeConstant is long, you may
not hear the effect immediately.

ShiftFormants
positive values pitch shift formants upwards, negative values pitch shift formants
downwards. 0 means no shifting.

FFTsize
Select an FFT size from 256 up to 16384 .. different FFTSizes will sound quite different in
quality.

Stereo
Builds the stereo version of the processor when checked

Gain
Output gain after processing.

StereoWidth
Internal mid side encoder allows you to adjust the stereo width after processing.

Input
Add an input. If stereo each side will be processed seperately. If mono, then a stereo blur will
still be generated.

StereoWidthProcessor
Activate the internal mid side stereo width processor. Turn it off here to save on some DSP
when replicating.

Order
First order is standard range, but you can shift higher or lower by defining the Order
constant before running.

For example an Order of 2 doubles the shift range, an Order of 3 doubles it again and so on.
NEL FFT DeepBlur
NEL DeepBlur is an advanced FFT spectral blur effect.
Experiment with different input sources and different FFT
sizes for discovering what range of sounds the algorithm
can generate. Live inputs will also work fine.

The TimeConstant parameter defines a regular interval where


a snapshot of the current FFT magnitude and phase data will be
taken. Within the very same time it will interpolate from the previous
snapshot to the current snapshot. This interpolation can even be done in
reverse. With the Freeze parameter, you can simply sample and hold at each TimeConstant,
without interpolating from the old values to the new ones.

Another unique feature of our FFT blur design, which comes from the NEL WireFrames
technology at its core, is that each of the FFT bands can offset the start time of its blurring
interval individually. Each of the FFT bands can also have a different time constant for the
blurring, in relation to the main TimeConstant. These complex algorithms dealing with many
hundreds or thousands of FFT bands, have been simplified and presented as two Spread
parameters. Negative and positive values should be explored to alter the distributions of the
blur onset times and time constants. Use the Reset parameter to pull the start time
distributions back to the same point.

You can also shift spectrum formants up and down before the blurring takes place.

Additionally when working with the stereo version, optional mid side stereo width
processing becomes available.

There are two modes; X4 and X2. The X4 version is a richer sounding processor but is less
efficient than the X2 version. The X4 model uses more internal delay lines than the X2 model.
In fact, some extra parameters will become available in X4 mode, allowing for
unconventional sound design effects using the extra the delay lines.

You also must choose True Stereo or Mono processing. True Stereo processes both channels
of the Input audio separately. In stereo mode, an optional width control will become
available. If you need to squeeze a bit of extra DSP, you can switch this feature off.

TIP: The X4 stereo version has been tested at 96K on a Paca with a live input or Sample as an
input. You will need to disable the Width processor and ignore the OutOfRealtime message
to repeat this at 96K.

Attenuate
Attenuate the input source before the FFT processing. If your TimeConstant is long, you may
not hear the effect immediately. 1 means no attenuation, 0 is fully attenuated (silence)

ShiftFormants
positive values shift formants upwards, negative values shift formants downwards. 0 means
no shifting.
SpreadStartTimes
Negative and positive values should be explored to alter the distributions of the blur onset
times

DelayMod
A sound design feature which modulates internal delaylines using Fractal Noise.

SpreadTimeConstants
Negative and positive values should be explored to alter the distributions of the blurring
time constant over all the FFT bands at once.

DelayScale
Only becomes available in the X4 Version.
A sound design feature which modulates internal delaylines of the FFT. Generally leave set
to 1 for smooth blurring, but some cool chopping effects can emerge when set to low values.

Stereo
True Stereo processes both channels of the Input audio seperately. In stereo mode, an
optional width control will become available. If you need to squeeze a bit of extra DSP, you
can switch this feature off.

Feedback
Only becomes available in the X4 Version.
A sound design feature which modulates internal delaylines of the FFT.

StereoWidth
Internal mid side encoder allows you to adjust the stereo width after processing.

FFTsize
Select an FFT size from 256 up to 16384 .. different FFTSizes will sound quote different in
quality. FFT Size examples: 1024, 2048, 4096, 8192, 16384

StereoWidthProcessor
Activate the internal mid side stereo width processor. Turn it off here to save on some DSP
when replicating.

Freeze
A sound design feature which modulates internal delaylines of the FFT. Generally leave set
to 1 for smooth blurring, but some cool chopping effects can emerge when set to low values.

TimeConstant
The base time constant in seconds defining the interval for the blurring (or freezing)

Gain
Make up gain on the output after all processing

X2
In this efficient X2 version, an internal 2x FFT overlapping takes place whilst phases are
randomised using carefully tuned parameters to create the deep blur
Input
Add an input. If stereo each side will be processed seperately. If mono, then a stereo blur will
still be generated.

X4
The X4 version is a richer sounding processor but is less efficient than the DeepBlurX2
version.

Reset
Use the Reset parameter to pull the start time distributions back to the same point.

Seed
choose a unique seed any positive value below 1.

NEL FFT BiSmooth


Highly efficient FFT bidirectional smoothing with Formant
Shift before the smooth occurs.

Attenuate
Attenuate the input source before the FFT processing. If your TimeConstant is long, you may
not hear the effect immediately. 0 represents full attenuation to zero, 1 is no attenuation.

SmoothAttackTime
Attack smoothing time in seconds

BypassFormantShift
If you need even more efficiency you can bypass the formant shift to do only FFT BiSmooth.
Through delay time will be shortened by FFTLength/2 samp

SmoothDecayTime
Decay smoothing time. Internally multiplied by 10.

FFTsize
Select an FFT size from 256 up to 16384 .. different FFTSizes will sound quite different in
quality.

Stereo
Builds the stereo version of the processor when checked
Gain
Output gain after processing.

StereoWidth
Internal mid side encoder allows you to adjust the stereo width after processing.

Input
Add an input. If stereo each side will be processed seperately. If mono, then a stereo smooth
will still be generated.

StereoWidthProcessor
Activate the internal mid side stereo width processor. Turn it off here to save on some DSP
when replicating.

Seed
choose a unique seed any positive value below 1 for the random phase distribution.

ShiftFormants
positive values pitch shift formants upwards, negative values pitch shift formants
downwards. 0 means no shifting.

NEL FFT StochasticShift


FFTSize amount of independent "random
walks" shift the formants of each FFT frame ,
one walk affecting each individual FFT band. 

Choose from 4 different models.

Model
1: Both stereo channels share same walks (most efficient)

2: Each stereo channel has an independently seeded walks.

3: !Distribution spreads the StepSize of each path (in all other Models, !Distribution spreads
the TimeConstants)

4: Both stereo channels and each order of Formant Shift has independent stochastic
modulations (least efficient)
Attenuate
Attenuate the input source before the FFT processing. If your TimeConstant is long, you may
not hear the effect immediately. It is generally recommended to attenuate quite a bit to
avoid clippling inside the FFT. 1 is no attenuation, 0 means full attenuation (silence)

Order
First order is standard range, but you can shift higher or lower by defining the Order
constant before running. For example an Order 2 doubles the shift range, an Order of 3
doubles it again and so on.

ScaleWalk
Alter the overall effect of the walks.

Distribution
Spreads the distribution of TimeConstants (in Model 1,2 and 4) . Spreads the distribution of
StepSize in Model 3. Can be full range -1,1.

Seed
An initial value for the noise source, for repeatable random walking.

FFTsize
Select an FFT size from 256 up to 16384 .. different FFTSizes will sound quite different in
quality.

ShiftFormants
Positive values pitch shift formants upwards, negative values pitch shift formants
downwards. 0 means no shifting.

Gain
Output gain after processing.

StepSize
The maximum size of the random walk step each !timeconstant

InitialDeviation
Defines the maximum deviation of each random walk from 0 when they are initialised.
When InitialDeviation is set to 0, all random walks will start from 0.

StereoWidth
Internal mid side encoder allows you to adjust the stereo width after processing.

Initialise
Re-initialises the RandomWalks when positive

StereoWidthProcessor
Activate the internal mid side stereo width processor. Turn it off here to save on some DSP
when replicating.
Input
Add an input. If stereo each side will be processed seperately. If mono, then a stereo image
will still be generated.

TimeConstant
This represents the maximum duration a single walk takes to reach its new value in seconds.

JoinTogether
Turn this on to let the random walks join together towards their average value.

NEL FFT DecayClouds


An advanced FFT delay processor. The Clouds part
comes from the fact that each FFT band can be
distributed using many stochastic functions updating at
a rate defined by the !CloudTimeConstant parameter.

You set a basic delay factor, and a feedback factor.


Additionally, the !Damping parameter affects how the feedback
decays in terms of colour and amplitude slope.

By increasing the !CloudDelay or !CloudFeedback parameters, each FFT band (which could be
thousands) begins to de-correlate itself from the basic delay or feedback factor. In this way,
some FFT bins might begin to feedback more than others, or find their own shorter or
longer delay time. The whole cloud effect is affected by the !Damping parameter.

Finally, you can formant shift and then smooth the entire cloud.

Attenuate
Attenuate the input source before the FFT processing. If your TimeConstant is long, you may
not hear the effect immediately. 1 means no attenuation, 0 is fully attenuated (silence)

ShiftFormants
positive values shift formants upwards, negative values shift formants downwards. 0 means
no shifting.
CloudDelay
By increasing the !CloudDelay parameter, each FFT band (which could be thousands) begins
to de-correlate itself from the base delay factor.

CloudFeedback
By increasing the !CloudFeedback parameters, each FFT band (which could be thousands)
begins to de-correlate itself from the base feedback factor.

Stereo
True Stereo processes both channels of the Input audio seperately. In stereo mode, an
optional width control will become available. If you need to squeeze a bit of extra DSP, you
can switch this feature off.

Feedback
The base feedback parameter.

CloudTimeConstant
This is the rate of change of the cloud which will begin to affect the multiple delays and
feedbacks when cloud delay or cloud feedback increases

Smoothing
Additional BiSmooth after the cloud

StereoWidth
Internal mid side encoder allows you to adjust the stereo width after processing.

FFTsize
Select an FFT size from 256 up to 16384 .. different FFTSizes will sound quote different in
quality. FFT Size examples: 1024, 2048, 4096, 8192, 16384

Damping
The !Damping parameter affects how the feedback decays in terms of colour and amplitude
slope.

StereoWidthProcessor
Activate the internal mid side stereo width processor. Turn it off here to save on some DSP
when replicating.

Gain
Make up gain on the output after all processing

Delay
The base delay time is set by this paramater

Input
Add an input. If stereo each side will be processed seperately. If mono, then a stereo blur will
still be generated.
NEL FFT SpectralAnnealing
Simulated Annealing is an algorithm which has roots in
the metallurgical process of annealing , a technique
involving heating and controlled cooling of a material to
increase the size of its crystals and reduce their defects.

The checking and comparison process is emulated by this


algorithm as it compares the values of each FFT magnitude
at its Input to the ones of a comparison input (noise in this
case) and keeps the best approximation creating unpredictable yet
beautiful spectral modification.

For example: an input value of 0.3 gets compared to a comparison input of 0.4. Since there
have been no other comparison values yet the output will be 0.4. In the next iteration the
comparison value is 0.25. The output will be 0.25 since there's less difference to the input
value. If the comparison value would have been 0.15 the output would stay at 0.4 (since it is
the best approximation yet). One iteration equals 1 FFT frame and each bin of that frame
gets compared individually.

Experiment with different input sources and different FFT sizes for discovering what range
of sounds the algorithm can generate. Live inputs will also work fine.

Annealing
Introduce the annealing algorithm. At 0 there is no simulated annealing and you will not hear
any output.

Seed
Choose a unique seed any positive value below 1.

ShiftFormants
positive values shift formants upwards, negative values shift formants downwards. 0 means
no shifting. Shifting happens before smoothing.

Attenuate
Attenuate the input source before the FFT processing. If your TimeConstant is long, you may
not hear the effect immediately. 1 means no attenuation, 0 is fully attenuated (silence)

Stereo
When true will build the Stereo input and output version

DampHighs
Tame some of the high frequencies by turning this value up

StereoWidth
Internal mid side encoder allows you to adjust the stereo width after processing.
FFTsize
Select an FFT size from 256 up to 16384 .. different FFTSizes will sound quote different in
quality. FFT Size examples: 1024, 2048, 4096, 8192, 16384

StereoWidthProcessor
Activate the internal mid side stereo width processor. Turn it off here to save on some DSP if
needed.

Input
Add an input. If stereo each side will be processed separately. If mono input, stereofy by
building two Mono instances of this effect with different seeds.

NEL FFT StochasticMask


FFTSize amount of independent "random walks" act as a
complex mask on the magnitudes of the FFT analysis, fading each
band in and out of the spectrum as a Walk crosses a certain threshold.

This exotic subtractive processor, can occasionally reach a point where all the
random walks happen to be clustered above the masking threshold , where you might
not hear anything at first. Either increase step size or step frequency and hear FFT bands
emerge into the audio output, according to the fade in and fade out values. Or if you are
feeling impatient, you can re-initalise the random walks with a high initial deviation setting
to re-distribute them.

Attenuate
Attenuate the input source before the FFT processing. If your TimeConstant is long, you may
not hear the effect immediately. It is generally recommended to attenuate quite a bit to
avoid clippling inside the FFT.

Masking
Turn up the ammount of masking.

Seed
An initial value for the noise source, for a repeatable random walk.

FadeInTime
Time taken for each FFT band to fade in smoothly, once it is unmasked.
ShiftFormants
Positive values pitch shift formants upwards, negative values pitch shift formants
downwards. 0 means no shifting.

FadeOutTime
Time taken for each FFT band to fade out smoothly, once it is masked.

StepSize
The maximum size of the random walk step each !timeconstant

FFTsize
Select an FFT size from 256 up to 16384 .. different FFTSizes will sound quite different in
quality.

Stereo
Builds the stereo version of the processor when checked

Gain
Output gain after processing.

StereoWidth
Internal mid side encoder allows you to adjust the stereo width after processing.

StereoWidthProcessor
Activate the internal mid side stereo width processor. Turn it off here to save on some DSP
when replicating.

Initialise
Re-initialises the RandomWalks when changing from zero to positive value

InitialDeviation
Defines the maximum deviation of each random walk from 0 when they are initialised.
When InitialDeviation is set to 0, all random walks will start from 0.

TimeConstant
This represents the maximum duration a single walk takes to reach its new value in seconds.

Input
Add an input. If stereo each side will be processed seperately. If mono input, stereofy by
building two Mono instances of this effect with different seeds.

JoinTogether
Turn this on to let the random walks join together towards their average value.
NEL FFT HoltWintersSmooth
NEL HoltWinters Smoothing is an advanced FFT spectral
smoothing effect. Also known as double exponential
smoothing the Holt-Winters Smoother takes into
account the possibility of a series exhibiting some form
of trend. The trend can also be smoothed.

In this extremely efficient X2 version, an internal 2x FFT


overlapping takes place whilst phases are randomised
using carefully tuned parameters to create the deep blur.
Experiment with different input sources and different FFT sizes for
discovering what range of sounds the algorithm can generate. Live
inputs will also work fine.

You can also shift spectrum formants up and down before the blurring takes place.

Additionally you can choose internal level limiting and, when working with the stereo
version, mid side stereo width processing.

HoltWintersSmooth
Amount of HoltWinters Smoothing. Full range values from -1 to 1 will tilt the smoothing
across the Spectrum in different ways. At 0 there is no smoothing.

HoltWintersTrend
Amount of smoothing on the Trend. Full range values from -1 to 1 will tilt the smoothing
across the Spectrum in different ways. At 0 there is no smoothing. Will only become really
noticeable once the HoltWintersSmooth parameter gets above 0.5 or below -0.5.

Stereo
When true will build the Stereo input and output version

Attenuate
Attenuate the input source before the FFT processing. If your TimeConstant is long, you may
not hear the effect immediately.

DampHighs
Tame some of the high frequencies by turning this value up

Seed
choose a unique seed any positive value below 1.

ShiftFormants
positive values shift formants upwards, negative values shift formants downwards. 0 means
no shifting. Shifting happens before smoothing.

FFTsize
Select an FFT size from 256 up to 16384 .. different FFTSizes will sound quote different in
quality. FFT Size examples: 1024, 2048, 4096, 8192, 16384
StereoWidth
Internal mid side encoder allows you to adjust the stereo width after processing.

StereoWidthProcessor
Activate the internal mid side stereo width processor. Turn it off here to save on some DSP if
needed.

Input
Add an input. If stereo each side will be processed seperately. If mono input, stereofy by
building two Mono instances of this effect with different seeds.

NEL FFT MultibandProcessor


A highly efficient FFT multiband processor, allowing for
independent level, formant shift and exponential
smoothing of 8 frequency bands.

Choose between MelScale cutoff points or Octaves.

MelScale
When true, the upper frequencies will be selected from Beranek 1949 mel scale data from
Stevens and Volkmann 1940 ( 160 670 1420 2450 4000 6600 14000 Nyquist) when false,
then an Octave divison will be used (250 500 1000 2000 4000 8000 16000 Nyquist)

ShiftBands
Array of 7 hotvalues for each band. All expressions must be in curly brackets.
eg: { !LevelBand1 smooth: 3 s }

LevelBands
Array of 7 hotvalues for each band. All expressions must be in curly brackets.
eg: { !LevelBand1 smooth: 3 s }

SmoothBands
Ammount of smoothing for band. Uses exponential smoothing, so a 1 will be almost
completely frozen. Needs an array of 7 hotvalues for each band. All expressions must be in
curly brackets.
eg: { !SmoothBand1 * !bypass } 


Note: When smoothing is high (up close to 1) then level and shift modulations may take a
while to manifest at the output. Use this as a feature to make gradual morphs.
Attenuate
Attenuate the input source before the FFT processing. If your TimeConstant is long, you may
not hear the effect immediately. 0 represents full attenuation to zero, 1 is no attenuation.

Seed
choose a unique seed any positive value below 1 for the random phase generator

FFTsize
Select an FFT size from 256 up to 16384 .. different FFTSizes will sound quite different in
quality.

Stereo
Builds the stereo version of the processor when checked

Gain
Output gain after processing.

StereoWidth
Internal mid side encoder allows you to adjust the stereo width after processing.

Input
Add an input. If stereo each side will be processed seperately. If mono, input and module
processing is stereo, then a stereo image will be generated.

StereoWidthProcessor
Activate the internal mid side stereo width processor. Turn it off here to save on some DSP
when replicating.

Support:

support@neverenginelabs.com

Potrebbero piacerti anche