Overview

This project consists of a four notes chord generator, using a microphone feeding a variable-length delay. The length of the delay is determined by the desired MIDI pitch, and four delays are used to generate the four notes. The sound source (microphone) is then used to choose the timbre of the resulting sound. Indeed, even if the fundamental frequency and so the pitch is independent of the sound source, the harmonics are determined by which sound is fed into the microphone. The same sound source is used to feed all four delays, so the whole chord has a common timbre.

System

Chord selection

To choose the chord(s), two methods are possible. The first is using the chord selector, which consist of three selectors, the key (arranged in fifths, Db = 0, Ab = 1, …, F# = 11), the type (major = 0 and melodic minor = 1) and the degree (I = 0, II = 1, …, VII = 6). The latter defines which chord within the chosen scale will be sent. For example, let’s consider the C major key. The degree I will be the C major quadriad (Cmaj7), the degree II will be Dm7, then III = Em7, IV = Fmaj7, V = G7, VI = Am7 and VII = Bm7b5. Those three selectors can be found in the middle left part of the patch shown in the image below. One limitation of this system is that sixth, ninth, eleventh and thirteenth chords cannot be accessed, as well as diminished seventh, sus, and any other types. But as every key is available, there are still a lot of chord progression possibilities. Those three selectors can either be accessed in the patch or using a Launchpad Pro, for which the pads are mapped to show colors corresponding to the PD selectors. The latter is the best solution, as it does not require the use of a mouse, and is therefore way more playable.

Pure Data patch
Pure Data patch (UI) of the Delay Harmonizer

The second chord selection method is by programming a sequence, shown in the bottom part of the patch image. The chord sequencer is eight steps long (but could easily be extended), and consists of three voices (key, type, and degree). For sake of clarity, the degree numbers are offset by 1, in order to have the correspondence I = 1, II = 2, etc. The tempo can also be determined, by changing the metro object’s creation argument (inside the subpatch content). Once the sequencer messages are changed, one has to click the set sequence button in order to update the values in the sequencer. The logic for the chord selection is in the chordselector subpatch.

Other elements

Each delay voice has a limiter, in order to avoid saturation. Thes are then mixed together, and the user is given the possibility to change the volume of each voice independently (middle right of the patch). The total mix of then sent to a flanger effect (frequency and depth can be modulated), and finally a VCF (frequency and Q can be modulated).

The other accessible parameters are the minimum MIDI note, which basically corresponds to the octave at which the chords are played (the root note can be up to 2 octaves lower than the rest, in order to have a bass sound), and the delay gain, whose modification leads to changing reverb time of chords. Both these paramters are modified on the UI patch, as shown on the patch picture. A gain of one gives infinite droning chord. A gain of 0.9 lets the user play chords rhythmically. The main use case of this patch is to harmonize a percussive track, like beatboxing of just claps. Other good sounds can be obtained too. For instance, with my cheap PC microphone, I obtained a very interesting sound by moving a cup around on the table. It’s also great to tap on the microphone or to click your tongue. A demonstration of the resulting sound generated by these excitation can be heard in the following recording.