The reKontakte Performance Instrument

by Luke Dahl

The reKontakte Performance Instrument is a musical instrument implemented in ChucK and controlled using an M-Audio Trigger Finger.  The instrument is inspired by Karlheinz Stockhausen's piece Kontakte, and my goal in creating it was to allow the performance of some of the varied textures and timbres that occur in the piece.  In particular I wanted to recreate the famous gesture that occurs starting at the end of Struktur IX and continuing into Struktur X, in which a continuous tone with varying pitch gradually transforms into discrete sonic 'blips' that continue to vary in pitch.

I also wanted the instrument to be intuitive to use and fun to play.  A number of people have played it and found it easy to learn and capable of a variety of textures and sounds.

How to install and launch it:

To use the instrument you will need to:
  1. Install Chuck and the MiniAudicle  (the miniaudicle is not required but these instructions will use it.)  Both are available here:
  2. Find yourself an M-Audio Trigger Finger Drum Control Surface
  3. Using the M-Audio Enigma software (one of the most confusing pieces of software I've ever used!) install the 'Luke'sMultiAfterTouch' bank, which is bank 12 in this preset bank: TFingerBank.xml
  4. Download and pulse1.wav
  5. Open in MiniAudicle, and set the current directory to the location of pulse.wav (this can be done in Preferences.)
  6. Start the virtual machine, and add the shred.

How to play it:

The reKontakte Performance Instrument is really four parallel identical instruments.  Each column of the trigger finger controls one of the instruments.  The first column plays low pitches, the second column plays medium low pitches, the third column playes medium high pitches, and the fourth column plays high pitches.

Each instrument has four different ways of being played, which are controlled by the four rows of pads.  Hitting a pad on the top row will make one discrete sonic event, a 'bonk' kind of sound.  The second row of pads creates quickly repeating events.  The velocity with which the pad is struck sets the repetition rate, harder strikes repeat more quickly, and if the pad is held down the pressure on the pad controls the pitch of the instrument.  The third row also creates repeating events, but on this row aftertouch pressure controls the repetition rate.  These two rows are similar but allow the creation of different types of sonic gestures.

The fourth row of pads also create quickly repeating sounds.  The repetition rate is controlled by the sliders -- one slider for each of the four instruments -- and pressure on the pad controls the pitch.  This allows for a wide variety of sounds.  For example, setting the sliders low and striking the pads creates repeating rhythms that decay slowly.  Setting the sliders high and striking creates quickly decaying pitched sounds.  Varying the pressure while the sliders are high creates interesting, almost vocal sounding, timbres.  By holding a pad down and moving the slider sounds can be made to vary from discrete to continuous and pitched and back.  

trigger finger control mapping

For each of the four instruments a pitch is chosen randomly (from the appropriate pitch range) every time the same pad is hit.  To keep the same pitch you can hit one pad in a column then another pad in the same column.

The volumn can be controlled with knob 4, and the amount of reverberated sound can be set with knob 8.  Knob 5 controls the amount of LFO applied to panning, and knob 5 controls the rate of the LFO.

How it works:

All of the sounds from this instrument are generated from the sound pulse1.wav, which is a single sonic event taken from a recording of Stockhausen's Kontakte.  Part of the character of the instrument is due, I believe, to the slightly distorted, analog tape character of this sound.  This sound is repeated at varying rates and with varying pitch to create the sounds of the reKontakte instrument.  It is easy to substitute in a different sound and explore the sonic affordances within.The synthesis is really quite simple in principle, and the effectiveness of the instrument is due solely to the propitious choice of control parameters.

The software is organized around a custom class called kontakteBuff.  There are four kontakteBuffs instantiated, one for each instrument.  Each kontakteBuff keeps track of the synthesis parameters for a set of six SndBuf objects that create the sound for that instrument.  When sounds are repeated the sound comes from one of the six SndBufs in sequence.  This minimizes the chances of clicks due to a buffer being set to start playing a new sound before it has finished the previous.

Each kontakteBuf object responds to messages from a shred midiCtl, which processes midi messages coming from the TriggerFinger controller.

A useful chuck file: is a ChucK file that simply parses incoming midi messages from an M-Audio Tringer Finger controller that is set to bank 12 in the preset bank, TFingerBank.xml.  It processes afterotuch pressure from each pad separately. You may find it useful as a starting point for making Trigger Finger-controlled ChucK patches.