Additive Editor
Once you have accessed the Source Edit page, clicking the ADDITIVE button at the top of the right-hand half of the page will bring Alchemy’s Additive Editor into view.
Overview
The Additive Editor serves two purposes. First, it allows detailed editing of additive resynthesis data. And second, it allows you to design sounds from the ground up by creating the additive data yourself. In both cases, potentially large amounts of data are involved. Alchemy uses special graphical representations of the data in order to make these tasks manageable.
As explained on the main Additive page (see ‘A brief introduction’), additive synthesis represents each sound as a sum of individual partials. The additive data describes each partial in terms of four parameters — amp, pitch, pan, and phase — each of which changes over time. You can think of the additive data, therefore, as a series of ‘snapshots’, each of which captures the amp/pitch/pan/phase of every partial at a particular point in time. In between snapshots, each parameter updates smoothly towards its next snapshot value. When played in succession and with the right timing, the whole series of snapshots describes a potentially complex and continuously evolving sound.
Note: Phase is not really an independent parameter. A partial’s phase at any moment in a sound’s evolution is determined by the phase at the beginning of the sound and by the (possibly changing) pitch of the partial. Since pitch information is captured in each snapshot, phase information doesn’t have to be. The phase of each partial is only specified at the very beginning of the sound.
Breakpoints and partial bars
Alchemy presents the additive data using a pair of graphical displays. The first of these displays is a breakpoint envelope located in the bottom half of the Additive Editor view. Each breakpoint in this display corresponds to one of the ‘snapshots’ described above: it is positioned at a certain point in time, and it contains the amp, pitch, and pan values of every partial at that timepoint. That, of course, is a lot more information than can be represented with a single point, which is where the second display comes into play.
The larger display, in the top half of the Additive Editor view, consists of a series of partial bars whose levels represent the amp, pitch, pan, or phase values of every partial, depending on the mode of the display. Normally, the values on display are those contained in the currently selected breakpoint — so the relationship between the breakpoint envelope and the partial bars display can be depicted as follows:
In the image above, the partial bars display shows the partial amplitude values contained in the currently selected breakpoint. By changing the mode of this display, you can also view the partial pitch or pan values contained in the currently selected breakpoint (as well as the initial phase value of each partial). Finally, the partial bars display can also be switched into an OVERALL mode, in which the partial amp/pitch/pan values are averaged across all the breakpoints. Working in OVERALL mode, you can quickly adjust the level of a certain partial across the entire sound, without having to step through individual breakpoints.
Back to the breakpoint envelopes. You now know that the timing (or x value) of a breakpoint represents the timing of a ‘snapshot’ that captures the amp/pitch/pan/phase values of every partial at that timepoint. And you know that you can inspect all of the partial values contained in a breakpoint via the linked partial bars display. But what does the level (or y value) of a breakpoint signify?
Normally, when the partial bars display mode is AMP, PAN, or PHASE, breakpoint levels represent partial amplitudes. The precise meaning of a breakpoint level depends on the mode to which the breakpoint envelope itself is set. In ALL PARTIALS mode, each breakpoint level represents the sum of the partial amplitudes contained in a particular snapshot. If you raise or lower a breakpoint level in ALL PARTIALS mode, you’ll see all the partial amp bars rise or fall accordingly. In SELECTED PARTIAL mode, each breakpoint level represents the amplitude of the one partial currently selected in the partial bars display. (The currently selected partial is indicated with a highlight in the partial bars display; note that partial number 1 is highlighted in the image above.) If you raise or lower a breakpoint level in SELECTED PARTIAL mode, you’ll see only the currently highlighted partial amp bar will respond by rising or falling.
If, instead, the partial bars display mode is PITCH, then breakpoint levels represent partial pitches. Again the precise meaning of a breakpoint level depends on the mode to which the breakpoint envelope itself is set. In ALL PARTIALS mode, each breakpoint level represents the fundamental pitch. In SELECTED PARTIAL mode, each breakpoint represents the pitch of the currently selected partial.
Note: If you look closely at the breakpoint envelope as you select different partials in SELECTED PARTIAL mode, you may notice (depending on the additive data) that the time positions of breakpoints vary from one partial to the next. This is one of the keys to the high quality of resynthesis in Alchemy: each partial can have an independent set of breakpoints. But this is not normally a concern for users. Whenever you work in ALL PARTIALS mode, Alchemy presents a series of breakpoints ‘linked’ to all of the partials, and adjustments to individual partial times and values are handled automatically behind-the-scenes.
Detail knob
Let’s import a factory sample in order to get a closer look at typical additive data. You can do this without exiting the Source Edit page, so we’ll start from there.
- If you are not already viewing the Source Edit page, access it by clicking the Source A EDIT button. Then click the ADDITIVE button across the top of the Edit page to bring the Additive Editor into view.
- On the top left-hand side of this Source Edit page is a content field. (In an initialized preset, it reads ‘Saw’; if you have already imported an audio file, it will show the filename; if you started with an initialized preset and have already made changes to the partial bars or breakpoint envelope, it will read ‘EditorData’.) Click this field and choose Import from the popup menu.
- In the ensuing Import dialog, set the import mode to ADDITIVE and select ‘FACTORY’ > ‘Keys’ > ‘Clavinet-FM’ > ‘Clavinet-C3.wav’. Leave the import settings at their default values and click IMPORT. (A more detailed description of this process is offered on the Import page.)
As soon as Alchemy has finished its calculations, you will be able to hear the resynthesized clavinet as you play your MIDI controller, and likewise you will be able to see the additive data displayed in the editor. We’ll focus on the breakpoint envelope display at the bottom of the page. Assuming the Detail knob is at its default value of 50%, you should see a total of 12 breakpoints in the envelope — you may have to scroll or zoom the display to view them all.
In reality, there are many more than twelve points at which partial amp, pitch, and pan values are defined. To see the complete series of breakpoints, increase Detail to 100% by turning the knob fully clockwise. You should now see something on the order of 500 breakpoints, but a precise count is beside the point. For anything other than the most excruciatingly precise sort of editing, the 100% view is more detail than you need to see.
The beauty of the Detail function is that, no matter how high or low you set it, any adjustments you make — to a breakpoint time or level, or to individual partial amp/pitch/pan/phase values in the partial bars display — are channeled through the currently selected breakpoint and applied appropriately to the underlying data.
Note: If you are programming an additive sound from scratch, rather than editing resynthesis data, you may find it useful to work at 100% Detail, so that you can see the exact data that you’re creating.
Partial bars display and controls
Several controls are positioned above the partial bars display.
- The FILE button offers various commands for transferring content from breakpoint to breakpoint:
- Copy Breakpoints — Copies all the partial data contained in the currently selected breakpoint(s), and places it on the clipboard.
- Paste Breakpoints — Pastes all the partial data from the clipboard to the currently selected breakpoint(s).
- Paste Breakpoints Amp (Pitch, Pan) Data — Pastes one type of partial data from the clipboard to the currently selected breakpoint(s). If the partial bars display is set to AMP mode, the command is named ‘Paste Breakpoints Amp Data’, and so on.
- Paste All Breakpoints Amp (Pitch, Pan) Data— Pastes one type of partial data from the clipboard to every breakpoint. If the partial bars display is set to AMP mode, the command is named ‘Paste All Breakpoints Amp Data’, and so on.
A common use of ‘Paste All Breakpoints Pitch Data’ is in case a resynthesized sound has unwanted pitch fluctuations. First of all, you can resolve these artifacts by reducing the PVar (pitch variation) control on the Source A/B/C/D sub-page; but this aligns each partial with its harmonic tuning, which may change the character of the sound too much. So another approach is to use ‘Copy from Breakpoint’ to capture data from a single breakpoint, and then to ‘Paste All Breakpoints Pitch Data’. Result: the partial pitch values of the copied breakpoint are applied to all breakpoints, so the inharmonic features of the copied breakpoint are preserved while the fluctuations from one breakpoint to the next are successfully eliminated.
- When the OVERALL button is off (unlit), the partial bars display shows the values contained in the selected breakpoint. When it is on (lit), the partial bars display shows values averaged across all breakpoints.
- The AMP, PITCH, PAN, and PHASE buttons determine which type of partial data is shown in the partial bars display.
- The Edit Mode field contains options such as ‘One’, ‘All’, ‘Octaves’, and so on, which are described in more detail below.
- The Edit Shape field contains the options ‘Flat’, ‘Bright’, and ‘Dark’, which are described in more detail below.
- When the SNAP Y button is engaged, partial levels will snap to meaningful units when dragged. This is mainly useful when the display is set to PITCH mode, in which case partial levels will snap to semitones.
Several editing actions are performed directly in the display:
- To adjust a partial level, drag it up or down, or click directly at the desired height of the partial bar.
- You can drag left or right across multiple partials to set their levels with a single ‘painting’ action.
- For fine control over a partial level, hold shift as you drag up or down.
- The top right corner of the partial bars display reports the currently selected partial number and its pitch, amp, pan, or phase value.
- To set a partial level to zero, you can drag it below the baseline; or you can right-click it.
- You can set multiple partial levels to zero, once you’ve dragged a partial below the baseline, by keeping the mouse button pressed and dragging left or right. You can also ‘zero’ multiple partials by clicking and holding the right mouse button and then dragging left or right.
- To select a partial without changing its value, click below the baseline. (Selecting a partial will bring its amplitude envelope into view when the breakpoint envelope display is in SELECTED PARTIAL mode.)
- The total number of partials may be as high as 600. To work with partials that are currently out of view, use the standard scroll bar and/or zoom handles at the bottom of the partial bars display.
Note. Higher partials that are part of the additive data may not be heard unless the NOsc (number of oscillators) control on the Source A/B/C/D sub-page is set sufficiently high. (For instance, raising the amplitude of partial number 72 will have no effect when NOsc = 60.) Conversely, setting a higher NOsc value will have no effect in ADDITIVE mode unless there is actually data for the higher partials.
- The Edit Mode field (above the partial bars display) lets you choose whether edits performed in the display apply to only one partial (in ‘One’ mode, which is the default) or to any of various groups (such as ‘Odd’, ‘Even’, and ‘Octaves’). For instance, if you choose the ‘Octaves’ group and then drag upwards in the display, then the fundamental and all octave-related partials (2, 4, 8, etc.) will increase.
- When editing a group, click/drag at the position of the highest partial that you want to be affected. For instance, if the Edit Mode is ‘Odd’ and you drag partial 15 downwards, then the levels of the odd partials from 1 through 15 will be reduced.
- When editing a group, hold the control key (Windows) or command key (Mac) to scale existing levels proportionally. When manipulated this way, partials with higher levels will increase/decrease more, partials with lower levels will increase/decrease less, and partials with zero levels will remain at zero. In contrast, normal dragging adds to or subtracts from all partial bars equally. The following pictures illustrate the difference between normal dragging and control-dragging (command-dragging).
- The Edit Shape field (above the partial bars display) lets you choose whether edits applied to groups are applied evenly across the entire group (if Shape is set to ‘Flat’) or if they are weighted to favor the lowest partials of the group (‘Dark’) or the highest ones (‘Bright’).
Breakpoint envelope display and controls
The area above and to the left of the breakpoint envelope display is home to a number of controls.
- The FILE button gives access to a pop-up menu in which you can Clear all data from the current Source, or translate a picture into additive data via the Import Image command, which is described in more detail towards the bottom of this page.
- A pair of display mode buttons determines how information is presented in the breakpoint envelope display. In ALL PARTIALS mode, the breakpoint levels represent the sum of all the contributing partial amplitudes (or the rise and fall of the fundamental pitch). In SELECTED PARTIAL mode, the breakpoint levels represent amplitude values of the one partial that is selected (and highlighted) in the partial bars display (or the pitch fluctuations of the currently selected partial).
- The Detail knob controls the resolution of the breakpoint envelope display. It is described in more detail in a separate section, above.
- The SnapX field allows you to constrain the time position when you move or create breakpoints. The ‘None’ setting leaves these actions unconstrained, while the ‘4’/‘8’/‘16’/‘32’/‘64’ settings constrain them to increasingly fine grids. (At the highest SnapX settings, you’ll need to zoom in to see all the gridlines.)
- The Mode field controls the behavior of the envelope when a breakpoint is dragged. In ‘Normal’ mode, other points remain stationary when one point is dragged. In ‘Slide’ mode, dragging one point causes all the subsequent points the move in tandem, so that the relative distance between these points is preserved. In ‘Stretch’ mode, dragging left compresses earlier points and stretches later points, while dragging right stretches earlier points and compresses later points; in either case the total length of the envelope is preserved.
Notice that breakpoint levels remain fixed in ‘Stretch’ mode, so you can only drag left/right.
Working in the breakpoint envelope display is much like working with any of Alchemy’s multi-segment envelopes (see the MSEG page for details). Here are some additional things you should know:
- The time and level of the selected breakpoint are reported in the parameter value display at the top of the interface.
- When the Additive Editor is in PITCH mode, breakpoint levels represent partial pitches. (You can edit these levels to eliminate a pitch wobble, or to create vibrato.) When the Additive Editor is in any other mode, breakpoint levels represent partial amplitudes.
- Unlike MSEGs and ModMaps, the additive breakpoint envelope always consists of straight-line segments with no convex/concave curvature.
- The very first and very last breakpoints always have amplitudes of zero; in sounds with fast attacks, you’ll find a second breakpoint with a nonzero amplitude at a time position very close to the first breakpoint. (You may need to increase the Detail setting in order to find that second breakpoint.)
- If you select multiple breakpoints (by dragging around them), then the partial bars display will display the average value of each partial across the selected breakpoints, and any edits you perform on the partials will be applied to all of the selected breakpoints.
- The Loop markers, or All of the warp markers, may be superimposed on the breakpoint envelope according to the setting of the Main editor’s Show Markers field (at the far left of the Edit page, towards the bottom). Set this field to ‘None’ if you want to hide all markers. For a full explanation of the warp markers, see the main Source Edit page.
- When you drag warp markers in the breakpoint envelope display, they always snap to existing breakpoints. (Compare the main Source Edit page, where warp markers can be dragged freely to any position.)
- Positioning the loop start and end markers both on the same breakpoint creates a sustain point, which means you can listen to that point in the sound for as long as you wish. By doing this repeatedly at different breakpoints, you can ‘investigate’ successive snapshots of the additive data in order to locate ones you may wish to edit.
Image import
Alchemy is capable of importing images (in PNG, or Portable Network Graphics, format) and translating them into additive synthesis data. You can easily convert existing images into sounds, and you can design new sounds by using (external) graphics software and drawing the image you want to import.
Note that Alchemy’s Spectral Editor has its own image import capabilities, and you can get characteristically different results by importing an image into either the additive or the spectral engine.
The translation from image to additive data works as follows:
- Each column of pixels represents a ‘snapshot’ in the additive data. The leftmost column describes snapshot 1, the next column to the right describes snapshot 2, and so on. (These snapshots are timed at a steady rate of 20 per second.)
- Within each column, there is a one-to-one correspondence between pixels and partials: the bottom row represents partial 1, the second row up represents partial 2, and so on. Thus the height of your image determines the number of partials — an image 100 pixels tall, for instance, translates to a sound using 100 partials.
- The brightness of each pixel determines the amplitude of a particular partial in a particular snapshot. A black pixel corresponds to silence, while a white pixel corresponds to maximum amplitude. (You can import both color and grayscale images; color information other than brightness is discarded.)
Importing an image with many bright pixels gives you additive data with many high-amplitude partials, which may cause clipping to occur. If the results of an image import are unexpectedly noisy, you can reduce the overall amplitude in a number of ways. First, you can reduce the Vol setting of the additive element. Second, you can edit the data by setting the Additive Editor to OVERALL mode, selecting the ‘All’ edit mode, and dragging downwards in the partial bars display. And third, you can use your graphics software to darken the image before importing it.
Example: Creating a simple additive sound from scratch
In this example, we’ll introduce some basic principles of additive programming in Alchemy by creating a simple ‘plucked’ sound from scratch.
- Initialize Alchemy by choosing the ‘Clear’ command in the Title bar’s FILE menu.
- Go to the Source A sub-page, just to get a better look at the current state of the preset. When initialized, Source A is in VA mode, the oscillator waveform is set to the basic ‘Saw’, NOsc = 1, and the Pitch profile is set to ‘Unison’. For additive synthesis, we normally want an entirely different configuration. We need Source A to be in ADD mode, and we typically want the oscillator waveform set to the basic ‘Sine’, with a larger value of NOsc (permitting many partials to be active), and with the Pitch profile set to ‘Harmonic’. However, it is not necessary to change any of these settings from their initial values — as soon as you enter the Additive Editor and start creating data, the configuration of Source A switches, automatically, to a sensible set of defaults for additive programming. So let’s get right to work…
- Click the Source A EDIT button to open the Source Edit page, and then click ADDITIVE at the top of the page to bring the Additive Editor into view.
- Since we’re starting from scratch rather than editing resynthesized data, let’s increase Detail to 100% for an accurate view of all the data. (The breakpoint envelope display won’t appear any different, since there are not yet any additional details to be shown.)
- If the second breakpoint in the envelope is not already selected, click it. (This is a typical starting point, since the first breakpoint always sits at time zero and level zero, and can’t be altered.)
- Now ensure that the partial bars display is set to AMP mode, and that OVERALL mode is off, and draw in some bars to define the harmonic content of the beginning of the sound. Since our goal is a ‘plucked’ sound, we want a bright sound with a significant number of active partials at the beginning, which will then decay to a darker sound further on. A design such as the following one, which can be created in a single sweep across the display, works well. But you needn’t copy it precisely.
- Play a few notes on your MIDI controller to confirm that the sound now begins with a bright timbre as intended. This is a step in the right direction, but more needs to be done. For instance, the default loop mode is ‘Continuous’, so the sound will loop indefinitely when you hold a note. To switch looping off, change the Loop mode to ‘None’ in the field at the far left of the Edit page.
- Progress. But now the end of the sound falls off too abruptly instead of decaying smoothly. A quick solution is to delete the second-to-last point. (Afterwards, drag warp marker 5 back to the final point.)
- Now the results sound reasonably good. But let’s re-shape the decay so that most of the energy falls off quickly and the tail of the decay is less dramatic. Select breakpoint 2 again, and then choose ‘Copy Breakpoint’ from the partial bars display FILE pop-up menu. Then select breakpoint 3, drag it most of the way towards breakpoint 2, and choose ‘Paste Breakpoint’ from the partial bars display FILE pop-up menu. Then reduce or eliminate the higher partials in the data you’ve just pasted. With breakpoint 3 still selected, the final result should look something like this:










