Harmonizing Melody
ArtSong provides several useful techniques for ‘harmonizing’ a melody. Two basic techniques will be demonstrated here:
- the harmony moves at the same rhythm as the melody, and
- the harmony moves with a different rhythm than the melody. Both harmonization techniques demonstrated here can be used to algorithmically harmonize a ‘melody’ while it is being algorithmically generated or to harmonize pre-existing melodies. Working with existing melodies, whether previously generated or imported from a MIDI file, is the subject of Advanced Topic 5 - Arranging.
Canon Algorithm
The easiest way to create a chord or second voice that moves along with the melody voice is by using the Canon algorithm, located on the ‘Arrange’ tab of the Algorithms Palette. The Canon algorithm basically copies the contents of a target track with programmable delay, transpose, and accuracy.
Add an instance of the Canon algorithm to your project, drag or move the track that will harmonize the melody into the Canon ‘container’ as shown below. Then draw the Canon event to imitate the desired track, set the delay to zero 0:00:000 (default).


- Select the ‘Variables’ tab and set the ‘Transpose’ variable to the desired interval between the target voice and the harmonizing voice.
- Since ‘Transpose’ is a composition variable it can be assigned to any general algorithm.
Using Track `Voice Count' Composition Variable
Set the ‘Voice Count’ variable in the target (‘Track 2’ – above) Tracks Property Editor to 1 in order to create a single voice that follows the melody at the desired interval. See below:

Set the ‘Voice Count’ variable in the target track to greater than 1 (shown with value = 3 below) in order to create chords that follows the melody.\

Duration Group
Use the Duration Group or Algorithmic Duration Group algorithms, located on the ‘Arrange’ tab of the Algorithms Palette to create a melodic harmonization that has a distinct chordal rhythm.
Add an instance of the Duration group algorithm and place the melody track in the top or /first position; add a second track(s) beneath the first track. Other tracks in the Duration Group will generate note durations by summing duration values in the preceding track.
- Set the ‘Voice Count’ and ‘Chordal Intervals’ properties in the chord track as desired.
In the example below ‘Track 2’ has been set up with Voice Count = 3 and Chordal Intervals = 5:

- Draw in a Duration event and set the number of note attacks to sum for note durations.
- The Duration Event uses a grid to express a vector of note attack values. In the grid shown at left the note attacks vector is: 2, 1, 1
- The Attacks Multiplier property (value = 2 at left) is a factor to apply to the individual note attack values.
- The resultant attack vector in our example is 4, 2, 2.
Notice in the example above that the ‘chord’ durations in Track 2 are the sums of 4, 2, 2, 4, 2, 2, etc note durations from Track 1. Don’t forget that the lengths displayed above include the articulation values; measure from the start of one chord to the start of the next
In the example above, the chord durations are a function of the individual note durations in Track 1 which in turn are being generated algorithmically.
»
|