Additive

• ADD and VA mode buttons
• Using the Additive sub-page controls in ADD mode
• Using the Additive Formant Filter
• Example: Manipulating a resynthesized voice
• Advanced: Creating your own Pitch, Amp, and Pan profiles

A brief introduction to additive synthesis…

Additive synthesis produces complex sounds by summing together a number of simpler ones, known as partials. Typically, each partial is a pure sine wave tuned to be a multiple of some fundamental frequency f, so that you have partials at f, 2f, 3f, and so on. Additive synthesis puts the mathematician Joseph Fourier’s theory, which states that every static waveform can be decomposed into a sum of sine-wave partials, into practice.

Of course most musically useful sounds involve waveforms that change over time; producing these sounds with additive synthesis requires changing the level of each partial accordingly. Another important additive technique involves tuning partials higher or lower than their harmonic positions. These inharmonic partials are characteristic of the patterns produced when stiff materials such as metal and glass vibrate.

Two features make the additive engine in Alchemy so powerful. First, it offers an unusually large number of partials – as many as 600 in each of its four Sources. And second, the amplitude, pitch, and pan of each partial can be specified across an unlimited number of breakpoints. That adds up to a potentially huge amount of data, but Alchemy can manage the details for you thanks to its resynthesis capabilities.

Resynthesis is a two-step process. First, an audio file (in a standard format such as WAV or AIFF) is analyzed to determine its partials and their behavior over time. And second, a replica of the original sound is synthesized using the results of the analysis.

Resynthesis in Alchemy produces results that are remarkably close to the sound of the original audio file. But then the real fun begins: because you now have independent control over the amplitude, pitch, pan, and phase of each partial, you can manipulate sounds in ways that would be impossible to achieve with a conventional sampler.

Alchemy enables you to perform these manipulations in real-time using a variety of modulation possibilities, described below. For precision work, you can also make use of Alchemy’s dedicated Additive Editor, which allows you to work at varying levels of detail, right down to individual partial values and breakpoints.

ADD and VA mode buttons

The Additive element in each of Alchemy’s four Sources can operate in one of two modes. The ADD button on the left of the Additive sub-page puts the element in Additive mode, while the adjacent VA button puts it in Virtual Analog mode. (Turning on one mode turns the other off.) Importing additive data, or creating it from scratch in the Additive Editor, automatically sets the mode to Additive.

Controls on the Additive sub-page apply to both VA and Additive mode. The descriptions below explain how these controls work in Additive mode. The effect of the same controls in VA mode is explained on the Virtual Analog (VA) page.

Using the Additive sub-page controls in ADD mode

  • Wave pop-up menu. Selects the waveform used to play each partial. In ADD mode, the ‘Sine’ waveform in the ‘Basic’ category is nearly always preferred, as it allows more accurate resynthesis and requires considerably less CPU load. When the total number of partials is very small, however, other choices of waveform may give you richer and more interesting results.
  • Vol. Adjusts the volume of the Additive element, independent of other elements in the same source.
  • Sym. Controls the symmetry of the waveform used to play each partial. At the default value of 50%, this control has no effect. At higher or lower values, one half of the waveform is stretched while the other half is compressed. Modulating this parameter produces pulsewidth modulation. To minimize CPU usage, however, leave this control at 50% and avoid modulating it.
  • PVar. Use this control to reduce the amount of pitch variation present in the additive data. At 100%, the original pitch variation is applied in full; at 0%, the pitch of each partial is fixed at its harmonic value. (If you’re familiar with Cameleon 5000, keep in mind that ‘PVar’ in Alchemy is equivalent to ‘Harm’ in Cameleon 5000.)

Note that pitch offsets resulting from the Pitch knob (described below) are not affected by the PVar setting.

  • NOsc. Use this control to reduce the number of oscillators used to play the additive data (and hence the number of higher partials that are heard). Using fewer oscillators conserves processing power, and you can often reduce NOsc without noticeably changing the resulting sound. More drastic reductions in the NOsc value produce an effect comparable to lowpass filtering. (Try modulating this parameter with an AHDSR.)

Note that the additive engine processes partials in groups of four, so setting NOsc to a multiple of four gives you the best trade-off between high-end detail and CPU efficiency.

  • Pitch knob and pop-up menu. The Pitch knob applies a variable offset to each partial pitch. The nature of this offset depends on the setting chosen in the Pitch pop-up menu directly below the knob:
    • ‘Harmonic’ – this setting is the default in ADD mode and is the most useful choice in most situations. When Pitch = 0%, all partials are tuned precisely in unison at the fundamental frequency. When Pitch = 50%, all partials have their normal harmonic tuning. When Pitch = 100%, the partial tunings are stretched significantly. (If you’re interested in the math behind this stretching: partial n is tuned to the (2n – 1)th harmonic.)
    • ‘Unison’ – this setting is mainly intended for VA mode and has limited use in ADD mode. (See the description on the Virtual Analog (VA) page for details.)
  • Amp knob and pop-up menu. The Amp knob applies a variable offset to each partial pitch. The nature of this offset depends on the setting chosen in the Amp pop-up menu directly below the knob:
    • ‘Brightness’- set Amp above 50% to boost the brighter (higher) partials, or below 50% to boost the darker (lower) ones.
    • ‘Fifths’ – set Amp above 50% to boost the partials that are a fifth, plus one or more octaves, above the fundamental, or below 50% to boost the other partials.
    • ‘FiveMul’ – set Amp above 50% to boost every fifth partial (5, 10, 15, 20, …) and cut the others, or below 50% to cut every fifth partial and boost the others.
    • ‘Fundamental’ – set Amp above 50% to boost the fundamental and cut the other partials, or below 50% to cut the fundamental and boost the other partials.
    • ‘Octaves’ – set Amp above 50% to boost the partials that are one or more octaves above the fundamental, or below 50% to boost the other partials.
    • ‘OddEven’ – set Amp above 50% to boost the even partials and cut the odd ones, or below 50% to do the reverse. Boosting the odd partials creates a ‘hollow’ tone resembling the sound of a square wave.
    • Additional options in the Amp pop-up menu give you access to the Additive Formant Filter, which is described in more detail below.
  • Pan knob and pop-up menu. The Pan knob applies a variable offset to each partial’s stereo position. At 50%, all partials are centered. Values lower than 50% pan some partials left and other partials right; values greater than 50% pan partials in the opposite direction. The nature of these offsets depends on the setting chosen in the Pan pop-up menu directly below the knob:
    • ‘Brightness’ – pans darker partials to one side and brighter partials to the other.
    • ‘OddEven’ – pans odd partials to one side and brighter partials to the other.
    • ‘Unison’ – pans partials evenly across the stereo field.

    Note that you won’t hear the effect of Pan unless the Source’s Stereo button is engaged.

Using the Additive Formant Filter

The Additive Formant Filter produces complex filtering effects by adjusting the balance among all the oscillators that are summed together to play an additive sound. In other words, it changes the levels of partials relative to one another.

NOTE. Because the Additive Formant Filter depends on changing the balance among additive partials, it can be used to filter a combination of many oscillators summed together to produce a complex spectrum — a typical additive configuration — but it cannot be used to filter a single oscillator with a complex spectrum — a typical VA configuration. To create formant-filter effects with Alchemy in VA mode, the best approach normally involves using the Source Filters in a parallel configuration (click for more details on this technique).

The Additive Formant Filter can be applied to the Additive Element of any Source. To access it, click the Amp pop-up menu, scroll to ‘Formant ModMap’, and choose ‘Fmt 1’ (or create a new one). When you choose Fmt <N>, Alchemy will interpret the Nth ModMap as a description of how to boost/cut various frequencies: the horizontal (x) axis represents frequency, while the vertical (y) axis represents amplitude. When the Amp knob is set to its default value of 50%, x values translate to frequencies approximately as shown in the following table. The entire formant-filter shape can be shifted upwards or downwards as much as five octaves when the Amp knob is set to values above or below 50%.

modmap-fmt

To alter the characteristics of the formant filter Fmt <N>, simply edit the shape of ModMap N. For instance, here are ModMap shapes that produce (a) a filter with three prominent midrange formants, and (b) a steep comb filter.

3fmt-map

combfmt-map

Example: Manipulating a resynthesized voice

  • Initialize Alchemy using by selecting FILE > ‘Clear’ in the Title Bar.
  • Click the ‘A’ button to view the Source A sub-page and choose ‘Import Audio’.
  • In the left-hand half of the Import dialog, select the sample ‘Factory’ > ‘Vocals’ > ‘Caroline-CamelAudio.wav’; then set the import mode to ADD+SPEC at the top right, and click IMPORT at the bottom right.
  • Now you can play a resynthesized version of the ‘Caroline-CamelAudio’ sample — play F-sharp 3 to hear the original pitch.
  • Try the following manipulations:
    • Reduce NOsc from 32 to about 4 and note how the voice becomes darker and less distinct. (Reset NOsc to 32.)
    • Try stretching and compressing the tuning of the partials by adjusting the Pitch knob. Because Caroline sings clear pitches, the original spectrum is harmonic; when stretched or compressed, the spectrum becomes inharmonic at most settings, giving it a glassy or metallic quality. A setting of 25% gives the effect of a deep male voice. (Reset Pitch to 50%.)
    • Explore the Amp and Pan knobs as well. (Turn on the Source STEREO button to hear the effect of Pan.)
  • Finally, let’s turn ‘Caroline-CamelAudio’ into a pad sound.
    • Set PVar to 0% in order to provide a steady pitch.
    • Slow down the playback by setting Stretch = 30% at the top of the Source A panel. Turn on the Source STEREO button.
    • Now set Pitch = 25% (using the ‘Harmonic’ profile), Amp = 0% (using the ‘OddEven’ profile), and Pan = 100% (using the ‘Unison’ profile).
    • Refine this result by adjusting the rest of the signal path. Explore the Main Filters. Try adding a ModFX or Delay module in the Effects rack.

Advanced: Creating your own Pitch, Amp, and Pan profiles

The preset profiles for Oscillator Pitch (Unison, Harmonic), Amp (Brightness, OddEven, etc.), and Pan (Unison, OddEven, etc.) are defined by special files stored in Alchemy/Libraries, where you will find subfolders named OscillatorPitch, OscillatorAmp, and OscillatorPan. These profile definitions are formatted as standard CSV files, which makes it easy to create your own definitions by using a text editor or spreadsheet, or by writing your own computer program that stores its output in a text file.

Each profile definition requires a pair of files with identical base names and different extensions: the profile corresponding to a knob value of 0% has the extension .csv, while the profile corresponding to a knob value of 100% has the extension .csv2. You may find it informative to study an existing pair, such as ‘Harmonic.csv’ and ‘Harmonic.csv2’ in the OscillatorPitch folder. Or read on for a more detailed explanation.

Each row of a profile definition holds just one value, corresponding to the pitch, amp, or pan value of a single partial. The first row applies to the first partial, the second row to the second partial, and so on. Since Alchemy generates up to 600 partials, an exhaustive profile definition should consist of 600 rows. If you are creating a new profile for a specific purpose, and you know you won’t use more than, say, 60 partials, then there’s no need to continue the profile definition beyond 60 rows. (If you use more oscillators than there are values in the profile definition, the surplus oscillators retain their previously set values.)

In a profile definition, pitch values are expressed as multiples of the fundamental frequency. ( So the values ‘1, 1, 1, …’ represent an exact unison; the values ‘1, 0.99, 1.01, …’ represent a detuned unison; the values ‘1, 2, 3, …’ represent the standard harmonic series; and so on.) Amp and Pan values are expressed on a scale from 0 to 1. (In the case of Pan values, this means from fully left to fully right in the stereo field).

Alchemy determines actual oscillator values by interpolating between the .csv and the .csv2 files, based on the position of the Pitch, Amp, or Pan knob. The details in the case of the ‘Harmonic’ Pitch profile are pictured below.

Let’s create a new Amp profile that will enable us to cut or boost the levels of the prime-number partials relative to the others. For simplicity, we’ll extend our profile only through the first 60 partials; constructing files of this length by hand in a text editor is a manageable task. When the Amp profile is set to our new ‘Primes’ definition, turning the Amp knob fully left should set the amplitudes of all prime-number partials to 0, and all nonprime-number partials to 1 (this tells us how ‘Primes.csv’ should be constructed), and turning the Amp knob fully right should do the reverse (this tells us how ‘Primes.csv2’ should be constructed).

The prime numbers up through 60 are: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59. So creating the ‘Primes’ profile involves the following steps:

  1. Create a plain textfile with one value per line, that value being ‘0’ for the prime-number lines (2nd, 3rd, 5th, 7th, 11th, …) and ‘1’ for the nonprime-number lines (1st, 4th, 6th, 8th, 9th, …); then save this file in Alchemy/Libraries/OscillatorAmp with the name ‘Primes.csv’.
  2. Create a second plain textfile with one value per line, that value being ‘1’ for the prime-number lines and ‘0’ for the nonprime-number lines; then save this file in Alchemy/Libraries/OscillatorAmp with the name ‘Primes.csv2’.
  3. The next time you load Alchemy in your host, the ‘Primes’ Amp profile should be listed along with the factory profiles. Give it a try!

Here’s an illustration of how the ‘Primes’ profile works (going as far as the 17th partial):