real-time sound reconstructor with a heartbeat
videoclip www.youtube.com/user/instantdecomposer,
audioclip click
here
The purpose of my interest in dsp technique is to create
a personal music tool that will process input sound in real
time. It shall do extreme transformation of acoustical sound sources,
recombining fragments into structures with musical relevancy.
Dissonance, chaos, rhythms and harmonies; all of these shall be
brought about with equal ease. The use of sound files or wavetables
stored on disk is explicitly avoided. It must be Liver than Live.
After three years of study and programming, this quest is now
fulfilled.
![]() |
Instant Decomposer is intended for solo-performance and
for collaborations in multiple-discipline projects. Think of sonic
sketches, live soundtrack for experimental film or theatre production,
live music for dance production, sonic support and voice-over for
puppet show or animation, interactive sound installations, and so on. I
would be happy to cooperate in adventurous live
projects of any kind.
Just before starting to learn dsp, I designed this cardboard
impression of Instant Decomposer:
![]() |
The cardboard model summarized a table full of hardware audio equipment, which I had interconnected with a lot of feedback loops and control lines. The hardware setup produced very pleasing results, that is, to my ears. But, since the machines were not designed for this type of use, it took approximately one hour to tune all knobs and produce some interesting status on the verge of instability. It was Decomposer, but not yet Instant.
During a one year course at the Sonology Department of the
Conservatory in The Hague, I learned the essentials of Max MSP, dsp
mathematics and C code, amongst other musical things. In 2009 I
produced a first and very incomplete Max MSP based version of Instant
Decomposer. It is designed as an
interactive industrial area roadmap, where you can control traffic
signs and traffic lights to route signal streams. The sound processing
is interpreted as a series of industrial processes, where source
material is
decomposed into fractions and redistributed to different plants
before final products are delivered:
![]() |
For each process, a pop-up window offers control over parameter
settings. For example, here is the control window for the Fourier Filter:
![]() |
The graphical interface aptly expressed my artistic intention and
style, and I was therefore very much pleased with Max MSP's extensive
graphical support.
There was however reason to abandon this version. A lot of the
underlying dsp had to be coded in C for this project.
Although this can be done using Max MSP's programming interface, Max
MSP itself is closed source software, and one can not learn details of
dsp programming from it. I found myself scrutinizing Pure Data source
code all the time. Eventually, the moment came when I dropped Max's
ease-of-use for Pure Data's openness. The work was restarted with Pd's
unobtrusive GUI elements on the front. As of now, august 2010, a fully
functional prototype of Instant Decomposer is completed, and I will
discuss it's components below.
The leading process in Instant Decomposer is the deconstruction and
recomposition of an audio stream from the soundcard. Since I want to
generate the acoustic input myself, or together with other people, the
software must take over the
task of cutting coherent audio segments and preparing them for replay.
The pages 'Slicing Odd Beats' and 'Slicing a Circular Buffer'
discussed a technique for high-quality realtime beat-slicing. Audio
slices recorded
into a circular buffer are eligible for replay until they are pushed
out according to the fifo (first in first out) principle. The only
human intervention required in this automated process is the input of
fresh sounds. Replay of the slices, at any pace and samplerate, is
automated as well, but subject to conditions set by the user. This is
all arranged in a unit named slicycle~, a couple of which together form
the beating heart in Instant Decomposer. Here is how the unit looks
with the plain but elegant Pure Data GUI elements:
![]() |
Since slicycle~ determines the creative possibilities of Instant
Decomposer to a large extent, I will discuss it's controls in detail
here as if this were
a user manual. Each square in the bottom
row is a fader, setting the playback sampling rate of an associated
slice replayer. Possible playback speeds are from 0.125 times
the original, up to 2 times the original. The three replayers are
basically triggered at each beat, each eighth note, and each sixteenth
note respectively. With a fader set at zero, that replayer will be
inactive. There is no way for the user to decide which slice in the
buffer will be selected for replay, as this is randomly chosen by the
routines. Further, there is no sequencer which can be programmed to
play only a subset of the beats, eighths and sixteenths. However, the
lengths of the recorded slices greatly influence the pattern.
A slice playback will never be interrupted by a new trigger, therefore
a lot of note triggers will be skipped when long slices occupy the
buffer, or with playback speeds set at a low value. The most
interesting patterns originate from a mix of fast and slow sounds. By
carefully playing sound material into slicycle~, you control the
percussive density and (ir)regularity in the output. It may not even be
percussive at all, when singing or playing long drones into slicycle~.
![]() |
The modulate-fader on the second row determines the range of random
deviation in the choice of playback sampling rate, as an offset of the
fader settings in the bottom row. The sampling rate during a slice
playback is itself kept constant. The amount of randomness extends the
range of playback speeds, up to almost 4 times the orignal. The
output can sound much more frenzied with modulation.
The rhythm-toggle, when switched to off, will decouple the event
triggers from BPM synchronisation, and the notes will then be played in
random
time intervals with fluctuating density compression and expansion. The
harmonic-toggle determines whether randomly choosen playback sampling
rates
will
at least harmonize with the respective input sounds or not.
![]() |
The input-toggle enables or
disables recording of audio into the audio buffer of the unit. The
recycle-toggle can stop all replay within the unit. The clear button
will
clear the unit's audio buffer after you doubleclick it. It will then
say
'cleared' instead of 'clear', so you know the audio buffer is emptied.
If
you click it once accidentally, nothing will be cleared.
![]() |
A bar with squares offers a visual indication, lighting up while
slice-recording is happening,
and jumping to the next square when a slice is done. A three-fold
switch on top sets the
maximum number of slices you want to have eligible for replay. The 'p'
button will open a pop-up window with technical
settings for slicerec~ and sliceplay~ objects, which can be set
according to performance conditions.
![]() |
Instant Decomposer has two slicycle~ units in it's actual prototype
implementation (aug. 2010). Their actions can be combined or alternated
at will. Apart from input source and global sync source they are
independant, so each one of both can have a distinguished function in
the musical output.
![]() |
Although slicycle~ can recompose even the dullest of input sounds
into musical patterns, things can be taken further, soundwise.
Therefore, the slicycle~ units are surrounded by sound-transforming
units, discussed here below.
These are the ominous names of units at the input and
output sides of Instant Decomposer. Their task is to reshape the input
sound
and recycled sounds from slicycle~, to an extent of
choice. Both scrap~ and cripple~ are collections of age-old sound
effects, most of them
passed on to the digital domain from acoustical or analog times.
Although scrap~ and cripple~ are very much alike, they are not
identical. Here is the lay out of both:
![]() ![]() |
By the way, all modules in Instant Decomposer have this 3x3 layout
of user parameter squares. The reason for this organisation is that
module
parameters can be operated from the Supermouse controller which
was described on an earlier page.
The effects in cripple~ are:
- state variable resonant filter, with optional random
step-modulated
frequency
- nonlinear distortion: crunch
- feedback delay line with frequency shift built in
- decimator / bit crusher
- reverb
The feedback delay line is routed around filter
section and cruncher, enabling extreme results as the sound is treated
anew
with every feedback pass. A slight frequency shift in the feedback
route ensures a more interesting developement of the sound by
inhibiting standing waves to build up. All effects are implemented in
stereo.
![]() |
The effects series in cripple~ is quite faithfully modeled according
to the table-filling hardware setup which was my Dinosaur Instant
Decomposer. Incorporated in that setup was an Adrenalinn box, an amp
modeler with a modulated resonant filter built in. It was from this
machine
that I got a taste for crunched filterpeaks. My other favourite, the
decimator / bit crusher has a different background. I love
this specific distortion type since the time I tried to get the
corruptest sounds from my S
900 in the mid-eighties. The mix of analog- and digital- style
distortions flourishes at best when it is fed by strong resonances,
coming from the modulated filter. With the parameters tuned in this
fashion,
Instant Decomposer shows it's particular, rather dirty character.
Distortion is the chili pepper of music, and I like it hot. But
of
course it is very well possibe to play heavenly clean sounds through
the reverb only.
The voicebox~ is a kind of magical box which can transform your
voice into various other voices. But it operates on instruments equally
well. Nine quick-knobs in the associated voice-selector module recall
the settings for each voice you have created. Parametric Fourier filter
and pitch shifter are the main
voice-moulding processes. The parametric Fourier filter is
extensively discussed on earlier pages.
![]() ![]() |
Decimator and ringmodulator can
do unnatural deformations, like those originating from detuned radio
receivers or poor cell phone connections. An amplitude
compressor/expander is
incorporated to improve the voice details while rejecting background
noise inbetween words or notes. Operating with an analytic signal, this
compander can cut sounds
very tight, which is useful in a noisy live-situation.
Very few things need to be controlled globally in Instant Decomposer:
input signal level and beat synchronisation. Associated with the input
signal is a signal ducker operating on the transformed output of
slicycle~ modules. Ducker depth is controlled from the global control
module.
![]() |
BPM tempo can be set with a fader or with two timed clicks on the
BPM tap button. The feel-fader covers the continuum between
straight 16ths till 16th note triplet feel. With a toggle, 6/8 meter
can be selected instead of the default 4/4. The synchronisation ticks
are used as
slicycle~'s metronome, but also for the delay lines and filter
modulation if so desired.
A very simple session-recorder is included to stream Instant
Decomposer's output to disk as a .wav file.
![]() |
The signal routing between modules is straightforward. The signal
goes in mono from left and/or right channel, and comes out as a mix of
stereo
signals. During performance, one of two input routes can be selected:
through voicebox~ and scrap~ (route B) or through
voicebox~ only (route A). Further, the inputs of each slicycle~ module
can be opened or closed separately.
![]() |
Since three of the modules have feedback routes within them, the
total routing can be slightly more complex than shown.
Below is a screenshot of Instant Decomposer's complete interface,
shown at reduced size. The actual size is around 720 x 620 pixels.
![]() |
One year after the conception of Instant Decomposer, it's user
interface received an extreme makeover in preparation for touch screen
operation. It got a large X-Y field with high-resolution continuous
controllers. On the left and right are push-buttons.
![]() |
In 2010 I was awaiting the introduction of tablet computers, but
Apple's iPad forced the market to focus on media players, and serious
touch-enabled tablet computers were discontinued even before their
official launch. The iPad and it's ARM-powered clones can not do the
hard number crunching of a full blast dsp tool like Instant Decomposer.
Steve Jobs verdicted that Apple laptops would never get touch screens,
and competitors seemed to silently follow this rule. In 2012, there is
new hope for touch-enabled computers: Intel promotes the production of
touch-screen ultrabooks (small form factor laptops). We'll see. In the
meantime I'm using an old Panasonic Toughbook, an industrial computer
with built in touch screen. A perfect solution for me, but they are not
widely available second-hand, and new models are crazy expensive.
Instant Decomposer is a versatile tool, allowing for organic
soundscapes, industrial noises, fast beats in IDM
or tekno style, or any crossover of such
ambiences. Due to the complexity of it's processing, Instant Decomposer
delivers surprising twists all the time. Yet the overall style at
any moment is
determined by the player(s), through the choice of input sound and
manipulation of controls. There is no way to literally master Instant
Decomposer - you rather live in symbiosis with it.
Sound
objects must be brought to every performance, or they must be found on
the spot. Instant Decomposer is not very picky on the nature and
quality of sound sources. The best starting point for transformation is
a decent microphone, which will pick all vibrations of a source. Many
an object lying around in household or venue may serve the musical
purpose. Parameter settings are decisive in getting the most out of it,
so it is worthwile to experiment a lot and build a repertoire of
fortunate combinations. Fresh ideas and technical skill are equally
valuable. Instant Decomposer is particularly well suited for events
with audience participation. It is quite exiting to hear your own sound
input being transformed into music so fast.
To hear some examples of Instant Decomposer output, click here.
A videoclip is at www.youtube.com/user/instantdecomposer.
A typical electronic hardware setup for Instant Decomposer would look
like
this, with Supermouse on the right:
![]() |
A simple 2 channel sound system is sufficient for public address.
Instant Decomposer does not (yet) produce multichannel audio like
quadraphony or ambisonics.
Since Instant Decomposer is my personal music tool, I will not
share it in the exact form as I use it. However, I am willing to share
techniques developed for it, so you can profit from my work
like I have profited from the work and publications of many other
people. I
have learned a lot from open source code, notably Miller Puckette's
Pure Data, which is also the essential framework for my developements.
The key technique in Instant Decomposer is the 'slicycle~ suite',
formed by two Pd classes [slicerec]~ and [sliceplay]~, plus the
routines that make them cooperate. This technique is documented on the
page Slicing Odd Beats.
In the meantime, I've also produced Slice//Jockey, a real-time
performance tool based on the same concept of instant recomposition. It
is just a bit less complicated than Instant Decomposer. Find Slice//Jockey here.