MAIDENS 1.4: Atonal Line Generator, configuration and generated music

The Atonal Line Generator

What It Is

This is a module dedicated to synthesizing free atonal lines.

What It Does

The module mixes stochastic procedures with balancing algorithms to make melodic and rhythmic decisions that yield melodic itineraries, which are stylistically valid in the atonal realm. Results’ musicality heavily relies on the provided configuration — and a solid background in music theory can only help here — but so does a firm understanding of the way the generator works.

Implementation Summary

The Atonal Line Generator approaches pitch and duration separately: while duration is handled mostly stochastically, pitch is treated, for the most part, deterministically.

The generator segregates the intervalic constituents of the melody in two semantically distinct classes:

  • step motion intervals: they include primes and seconds and convey a sense of introspection and cohesion;
  • skip motion intervals: they include all the rest and are seemingly loquacious, expansive and unstable.

Also, by looking at the way intervals progress in the melody, one can distinguish:

  • ascending motion: seen as optimistic, daring but also dramatic;
  • descending motion: an icon of fall, humility but also recovery.

The balancing algorithms previously noted attempt to deliver an even distribution of the above, by analyzing a portion of the already generated music and acting accordingly.

Configuration Parameters

A significant share of the processes employed by Atonal Line are non-deterministic. As a direct consequence, there will be situations where musical output does not seem to reflect the current configuration (if not defy it, altogether). You must consider the results statistically, and only amend the configuration when several melodies generated by the same set of parameters fail to meet your expectations.

Atonal Line uses 10 configuration parameters, which are described below.

Initial Direction Is Up

The generator operates on a predefined selection of (simple) melodic profiles. Namely, you can choose one of four possible essential melodic profiles: peak, valley, ascent or descent. To reach any of these, you combine this parameter with the Climax point parameter. Effectively, by switching this parameter on or off, you control whether the direction of the first melodic profile segment is ascending or descending. For instance, with this parameter set to on (checkbox ticked), you lock onto a peak or ascent melodic profile, excluding the other two.

Initial Direction Weight

This parameter puts a weight (or likeliness) for subsequent melodic segments to replicate the direction of the first one. This usually tends to bend the melody up or down. The higher the value, the more apparent the bent, and on occasion this can change the overall melodic profile, to the point that it contradicts the joint effect of the Initial direction is up and Climax point parameters.

Climax Point

This is the third parameter that controls the overall melodic profile. The percent value resolves to a point in time relative to the full length of the melody to generate. The melodic segments following this point in time reverse their natural tendency of going up or down. In other words, the climax point is responsible for the exact position of the ridge of a peak profile, or the pit of a valley profile. If set to extreme values (0% means start, 100% means end), the Climax point will turn, e.g., a peak into an ascent, or a valley into a descent.

Use Rests

This is self-explanatory. Set this parameter to on (checkbox ticked), so that your generated melody contains rests; set it to off to obtain a continuously playing line. Usually you want to leave this checked, as rests provide a sense of phrasing to your melody, which adds to its musical meaning.

Notes to Rests Ratio

This parameter is only meaningful if Use rests is also turned on. It accepts a percentage value that establishes about how many rests will there be. To its lowest value of 10%, the music generated will sound very punctualistic, much like Webern and Nono‘s. To its highest value (90%), a dense, breathless and somewhat lyrical music may be produced (like in Schöneberg‘s early works, for instance).


Atonal Line provides a fixed, narrow selection of musical durations to use in generated melodies. You have wholes (1/1), halves (1/2), quarters (1/4), eighths (1/8) and sixteenths (1/16).

This parameter lets you define which of the available durations should be used, and about how often. You use the picker to select combinations of durations and odds. The odds picked for each duration get summed up and converted into percentages. The percentages are fed into a non-deterministic process — therefore, your input is taken as a hint rather than a firm instruction.

Example: suppose you pick these values: 1/2 +50, 1/2 -10 and 1/16 +10. They get summed up internally as 1/2 40 and 1/16 10, and interpreted by the program as “use preferably 80% halves and 20% sixteenths”. The generated melody will, most likely, use about four times more halves than sixteenths.

Step Motion Intervals

This parameter specifies what melodic interval to be used in the step motion passages, and about how often. You handle this value very much like you handle the Durations.

For example, suppose you pick these values: 2M +50, 2m +10, 2m -1 and 1p +1. They get summed up internally as 2M 50, 2m 9 and 1p 1, and interpreted by the program as “use preferably 83% major seconds, 15% minor seconds and 2% perfect primes”. The generated melody will, most likely, contain about five times more major seconds than minor seconds, and only scarcely perfect primes.

Skip Motion Intervals

This parameter behaves identically to Step Motion Intervals, the only difference being that it addresses the melodic intervals to be used in skip motion passages.

Analysis Window

As previously mentioned, Atonal Line uses a mix of deterministic and stochastic processes to produce melodic lines.

Constructing the melody is based on a feed-back loop: the notes already added are observed and evaluated, and based on that, a decision is made on what to add next. Evaluating all existing notes is impractical from a performance perspective. Instead, the algorithm only looks at some of the most recently added notes, and Analysis window establishes how many of them.

For example, setting Analysis window to 5 means that only five of the most recent notes in the melody are evaluated.

The practical implication is that the higher the Analysis window value, the more qualitative an educated guess will be made on what to add next, and the more thought-out the resulting music will sound. This will also consume more processing power and generation will take longer. Conversely, the smaller the Analysis window, the more chaotic the resulting music will be (the process will be faster, though).

A value of 5 tends to provide a good balance both in terms of musicality and computer resources. High and low extremes tend to give dull or pointless melodies, respectively.

Max Adjustment

This parameter is related to Analysis Window.

As described, for each new note to be added to the melody, educated decisions are to be made. If Analysis window determines the quality of these decisions, Max adjustment controls their weight, or importance in the decision-making process.

For example, let’s suppose that the algorithm found out that — at some point in the melody — the most tuneful thing to do would be adding an up major third. If Max adjustment was set to 80%, then there are 80% chances for his to happen. That is, there are four time more chances for an up major third to be added than any other permitted interval.

High values are likely to produce eloquent melodies that work for solos or descants. Low values tend to yield aimless lines that might work for inner voices or as part of non-thematic surfaces.

What o Use It For

You use Atonal Line to synthesize free atonal melodies. Statistically, generated lines are good enough to serve as a starting point for inner/secondary voices, or as raw material for solos.

Note: the complete list of pending bugs, features and epics is available in Jira.

Search Documentation

Hint: use the browser's search feature to search within results (use Ctrl+F on Windows or  ⌘+F on macOs).