Skip to content
Ognjen Sobajic edited this page Nov 28, 2017 · 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 vague
  • Harmony/Vertical analysis
  • Being able to analyze 3rd Rachmaninoff concerto

Proposed algotihm 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 goverened by its rules. The objective is, roughly, to find as many cross-similarities as possible.

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 at least twice in any of the given strings, possibly in a same string. Once its identified, the substring is added to the string set and its occurances (at least two) are substituted with the reference to the newly added string. The process is then repeated on the augmented set of strings.

At the end the set of strings contains possibly numerous new strings representing

Identifying tune similarities is not that trivial as identifying repeating sub-string in a string. Tunes are deemed equal if they are transposably equal in any diatonic scale.

Example: T1 = abcabc T2 = abab

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

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

Clone this wiki locally