Teaching AI to Write Melodies

This blog documents the process of teaching an AI system to generate melodies from the Skiptune database. Expect experiments, mistakes, and occasional surprises, and at the end expect melodies that sound as if a human wrote them.

  • Introducing the Skiptune AI Project

    Problem to Be Solved The Skiptune database is a database of 83,000 melodies from around the world and across several centuries.  These melodies are encoded in a special way (a pitch difference followed by a duration ratio), and we want to explore whether an AI model can learn melodic structure from this representation.   The…

    Continue reading

  • Cluster Analysis–Part 2

    Before using cluster analysis to see whether musical styles emerge naturally from the Skiptune database, we first needed to answer a more basic question: What characteristics of a tune should the computer measure? 34 Metrics Early on in the Skiptune project, as we were entering tunes, we found ourselves wondering if certain patterns we were…

    Continue reading

  • Cluster Analysis–Part 1

    This week we talk about how to apply cluster analysis to the Skiptune database. Skiptune is unusually well suited to clustering because we have both the symbolic melodies and extensive metadata. We distinguish clustering the tunes themselves from clustering composers, genres, historical periods, or musical fragments. The most interesting analysis, given what we’ve already built, would be…

    Continue reading

  • Cluster Analysis

    Cluster analysis is a family of statistical and computational methods for answering a deceptively simple question: Given a collection of things described by several characteristics, can we discover natural groups among them without deciding beforehand what those groups are? In other words, cluster analysis starts without known labels. You can understand why cluster analysis is…

    Continue reading

  • Search Paradox–Final

    Last week we stopped because we realized we needed more analysis done on more search lengths to provide a bit more certainty to our tentative conclusions.  Our initial set of runs happened to settle on an inflection at our last search length of 20 tuples.  This week we run the search algorithm with 22-, 24-,…

    Continue reading