Skip to content
Ognjen Sobajic edited this page Mar 1, 2020 · 17 revisions

Welcome to the MusicTools wiki!

Efforts towards Artificial Composer

There are two components of a musical piece which are intertwined:

  • horizontal
  • vertical

Horizontal component is how individual tones are structured in harmonies as well how harmony progresses from one to another.

Vertical component is the overall structure of the musical piece, i.e. how the piece is composed of parts and how these parts are related.

Efforts towards Computational Music Analysis

The software will have the following features:

  • It will find the shortest grammar for the composition and depict the composition graphically as a DAG (Direct Acyclic Graph).

  • It assumes fugal-like compositions where each channel plays one and no more than one tone at time.

  • It allows users to modify the parts and replay the modified composition.

  • It can analyse multiple compositions at once. This virtually allows analysis of entire corpus and retrieving some interesting stats on composers. For example what is the most common two-measure phrase used by Bach.

  • Phrases are resilient to vertical and horizontal (and both) inversions.

Future work includes:

  • Non-fugal compositions e.g. pieces for piano where voices are fuzzy
  • Harmony/Vertical analysis
  • Being able to analyze 3rd Rachmaninoff concerto

Proposed algorithm for music analysis

The proposed algorithm is based on the smallest grammar problem, but with a slightly different objective. As our intent is not compression here we must not be governed by its rules. Therefore the objective is, roughly, to find as many cross-similarities as possible, rather than to minimize overall cost of storing the rules.

The musical piece is represented as a set of strings each representing a single voice (or instrument or track). The first step is to identify the longest substring occurring more than once in any of the given strings, possibly in a same string. Once its identified, the substring is added to the string set and its occurrences (at least two) are substituted with a symbolic reference to the newly added string. The process is then repeated on the augmented set of strings. The process is done when no such a string can be found.

At the end, the set of strings contains possibly numerous new strings representing musical phrases which repeat.

Identifying tune similarities is not trivial as identifying repeating sub-strings in a string. Tunes are deemed equal if they are transposably equal in a diatonic scale. Diatonic scales of interest are:

  • Major/minor
  • Harmonic minor
  • Melodic minor

Sections may be also chromatically equal which is stronger than diatonic equality.

Example: T1 = abcabc T2 = abab

Step 1: T1 = R1R1 T2 = abab R1 = abc

Step 2: T1 = R1R1 T2 = R2R2 R1 = R2c R2 = ab

No more substitutions can be found.

Possible parameters to the algorithm:

  • bool: recognize harmonical/vertical inversions
  • bool: recognize temporal/horizontal inversions
  • the resolution for parts e.g. bar, 4th, 8th etc.

Applications of the algorithm

Applications can be numerous:

  • detailed analysis of a musical piece and identifying recurring motifs
  • analysis of corpus, e.g. part of entirety of composer's work and finding similarities
  • finding similarities between two musical pieces