“OM-LEAD” library

ByLorenz Lehmann

“OM-LEAD” library


The library “OM-LEAD” is a library for rule-based, computer-generated real-time composition. The considerations and approaches in Joseph Branciforte’s text “FROM THE MACHINE: REALTIME ALGORITHMIC APPROACHES TO HARMONY AND ORCHESTRATION” are the starting point for the development.

The library currently comprises two functions that are written using both CommonLisp and existing functions from the OM package.

In addition, the composition is currently limited in the scope of the parameters to be controlled to the harmonics and the voice leading.

In the future, I would also like to write a function that allows composition on a temporal level with the parameters metrics and cue spacing.

Development: Lorenz Lehmann

Supervision and advice: Prof. Dr. Marlon Schumacher

My sincere thanks for their kind support go to Joseph Branciforte and

Prof. Dr. Marlon Schumacher.



The HARMON-PROGRESS function is a function that randomly selects a next chord from a list of chords (database) based on a selected initial chord (first-chord). These two chords are displayed as a new list. In the next step, the randomly selected second chord takes the place of the first chord, and the vacant second place is filled with another randomly selected second chord from the database.

In this way, the performer always has the next chord in view while the previous one is still being displayed and played.

Fig. 1

The results for the first two evaluations from the simplified example with letters make the functional principle clear:

=> (A J)

=> (J P)

=> …etc.

Chord lists are used instead of letters. A chord list has two dimensions: The first dimension contains the values that are derived from the elements of the list and can be used as arguments for processes. The second dimension contains the positions of the elements in the list. The count always starts at zero.

Example: Values (100 200 300 400)

Positions ( 0 1 2 3 )

This matrix is used so that the positions of the values determine which instrument they are assigned to.

Here, the value 100 would be assigned to instrument “0”, the value 200 to instrument “1” and so on. As a result, each permutation of the list would be regarded as a new chord with a new sound quality, as the values remain the same but the instrumentation has changed.

This idea is fundamental to the library and the mechanism of all its functions.


Pages: 1 2 3 4

About the author

Lorenz Lehmann author