Coder Social home page Coder Social logo

lavender's Introduction

Lavender

Lavender is the culmination of my research into generative harmony. While the application is still very early in its development, Lavender itself is an algorithmic model of generative and adaptive harmony that learns from the choices of its user, creating a network of harmonic relations. A formalized model of this system is currently in the works, for those interested.

Usage

To use Lavender, simply run ./lavender. You will be presented with a shell-like interface. Lavender comes with four pitch sets already loaded into its bank. To make a chain, use the following syntax:

<~lavender~>$ 0 -> 1 ! 2 - 0 -> 3

Lavender will output a chain of supersets for you. Each number refers to the index of the pitch set in your bank. To see the bank, run the command list. To add a pitch set to the bank, run add <pset> (using a set of your choosing). The add_r command will simply add a random set to the bank (use add_r <n> for multiple random sets). One can clear the bank with the clear command.

The power of Lavender lies in the generate <n> command. With each chain that the user inputs, Lavender adds to a network of harmonic relations. The generate command outputs a random walk through this network. Just pass it the length of the chain you would like. There is also the path <start> <end> command that will return a random path between two specified sets.

One can also instruct Lavender to train itself with the train <n> command, which automatically runs n randomly generated chains using the current bank. One may also use the populate <n> <m> command, which will create n random sets and train the model m times.

The notate command will transform the most recent chain into music notation.

Operators
  • -> will calculate the superset with the most common tones.
  • ! will calculate the superset with the least common tones.
  • - will move arbitrarily between supersets

Dependencies

What's to Come

The most exciting part of Lavender is currently still in the making. Lavender will learn from the input you give it and allow you to generate endless streams of harmonic material based on your taste. I plan to expand Lavender to handle octave-specific and microtonal harmonies as well as translate all of this into music notation through the wonderful Abjad API.

Special thanks to the Oberlin Conservatory for supporting this research!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.