Creating improvisations on chord progressions using suffix trees

Lorraine A.K. Ayad, Marc Chemillier*, Solon P. Pissis

*Corresponding author for this work

Research output: Contribution to journalArticlepeer-review

1 Citation (Scopus)


Technology nowadays takes an increasing part of “creativity” in live music software such as the OMax-ImproteK-Djazz improvisation environment. Specifically, Djazz implements techniques for indexing and creating improvisations using a given chord progression. It relies on a database that we call a dictionary, storing musical sequences (audio or MIDI) associated with known chord changes. We define an improvisation on a given chord progression x as a sequence obtained by concatenating musical phrases identified with factors of x that can be found in the dictionary. Given a query sequence x and a dictionary D, we present an algorithm that finds an improvisation on x with respect to D. We use the suffix tree data structure to index D and then produce a graph formulation of the problem in order to find a suitable improvisation in linear time, with respect to the length of x.

Original languageEnglish
Pages (from-to)233-247
Number of pages15
JournalJournal of Mathematics and Music
Issue number3
Publication statusPublished - 2 Sept 2018


  • chord progression
  • chords
  • decomposition
  • F1.1
  • F4.3
  • improvisation
  • open music
  • suffix tree

Cite this