Skip to content

SamueleGiraudo/Bud-Music-Box

Repository files navigation

Bud Music Box

|3^^|3

A tool to generate random music from short patterns using operads, colored operads, and bud generating systems.

Copyright (C) 2019--2023 Samuele Giraudo - [email protected] -

Quick overview and examples

This program offers a complete language allowing to represent musical patterns, to compute over them, and to randomly generate some of them. Results can be converted to files in the abc format and then into MIDI files.

Main functionalities

  1. Multi-pattern creation
  2. Multi-pattern operations
  3. Specificating the context
  4. Colored multi-patterns and random generation

Some examples

  1. An example on the Hirajoshi scale. Listen here.
  2. An example on the Hirajoshi scale. Listen here.
  3. An example on the Hirajoshi scale. Listen here.
  4. An example on the natural major scale. Listen here.
  5. An example on the harmonic minor scale. Listen here.
  6. An example on the minor pentatonic scale. Listen here.
  7. An example on the minor pentatonic scale. Listen here.
  8. An example on the major pentatonic scale. Listen here.

Other examples

  1. A Mix of patterns. Listen here.
  2. A horizontal transformations. Listen here.
  3. A vertical transformations. Listen here.
  4. Some local variations. Listen here.
  5. A full piece. Listen here.

Versions

Here is the changelog of the different versions.

Installation

The following instructions hold for up-to-date Linux systems.

Dependencies

The following programs are needed:

  • make
  • ocaml
  • ocamlbuild
  • ocamlfind
  • menhir
  • abcmidi
  • abcm2ps
  • timidity

Moreover, a proper installation of a SoundFont is necessary.

Building

Here are the required steps to build the interpreter Bud Music Box:

  1. Clone the repository somewhere by running
git clone https://github.com/SamueleGiraudo/Bud-Music-Box.git
  1. Install all dependencies (see the section below).

  2. Build the project by running make.

This creates an executable bmb. The following sections explain how to use it.

User guide

This page contains the description of the Bud Music Box instruction set and language.

Files containing such instructions must have .bmb as extension. Given such a file Program.bmb, the command

./bmb --file Program.bmb

executes the instructions of Program.bmb, sequentially from the first one to the last one.

Miscellaneous

To get the syntax highlighting in the text editor vim for the Bud Music Box language, put the file bmb.vim at ~/.vim/syntax/bmb.vim and the file bmb.vim at ~/.vim/fdetect/bmb.vim.

Theoretical aspects

An operad is an algebraic structure wherein elements are operations. This generative method is based upon an abstraction of polyphonic musical phrases called multi-patterns, forming the music box model. The set of these objects is endowed with the structure of an operad, thus enabling us to perform computations on musical phrases. Indeed, the operad structure on multi-patterns makes it possible to consider any multi-pattern as an operation on multi-patterns. The main idea is that one can, from a set of small musical phrases, randomly generate a new musical phrase by computing various random compositions of these patterns.

Bibliography

  • About operads:

    • M. Méndez. Set operads in combinatorics and computer science. Springer, Cham, SpringerBriefs in Mathematics, xvi+129, 2015.

    • S. Giraudo. Nonsymmetric Operads in Combinatorics. Springer Nature Switzerland AG, ix+172, 2018.

  • About operads and combinatorial generation:

    • S. Giraudo. Colored operads, series on colored operads, and combinatorial generating systems. Discrete Math., 342, 6, 1624--1657, 2019.

    • S. Giraudo. Combinatorial operads from monoids. J. Algebr. Comb., 41, Issue 2, 493–538, 2015.

  • About the operad of patterns: