<<home  <<previous  next>>

Instant Decomposer




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.




e&i




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.



concept and build


Just before starting to learn dsp, I designed this cardboard impression of Instant Decomposer:




IDconcept



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:




screenshot




For each process, a pop-up window offers control over parameter settings. For example, here is the control window for the Fourier Filter:




fouriercontrol




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.



IDec's beating heart: the slicycle~ suite


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:



slicycle~.



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~.



modulate



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.




cleared


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.


slicycle_top


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.



slicycle_settings



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.



slicycles



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.


scrap~ and cripple~


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:




 scrap~cripple


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.




cripple~scheme



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.


voicebox~


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.


voicebox  voice-selector


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.



global control


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.




global-control


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.


recorder



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.



IDec_routing



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.




IDec




IDecTouch


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.



artistic application


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.


hardware setup


A typical electronic hardware setup for Instant Decomposer would look like this, with Supermouse on the right:




hardware




A simple 2 channel sound system is sufficient for public address. Instant Decomposer does not (yet) produce multichannel audio like quadraphony or ambisonics.



sharing


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.