GithubHelp home page GithubHelp logo

billhails / harmony-generator Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 0.0 50 KB

Prolog Code to generate modulating chord sequences

License: GNU General Public License v3.0

Prolog 100.00%
music harmony-sdk harmony music-composition

harmony-generator's Introduction

harmony-generator

Prolog Code to generate modulating chord sequences

Rationale

Rather than a single monolithic application, this is a set of modules constituting a harmony library. Each module is intended to take the output of a previous module and rewrite it in some way, in a pipeline. The intention is to be able to pick and mix later modules, relying on a common intermediate format but at the moment each module is more or less tied to the format of the previous module's output.

The plan is to add modules that will do voice placement (SATB ranges,) voice leading (inversions, common notes, suspensions, anticipations and passing tones,) validation (disallow parallel fifths etc.) and finally output to MusicXML that can be directly imported into notation software like Sibelius or MuseScore.

Directory Layout

  • src/run.pl - top level loader.
  • src/original.pl - an early attempt, all code in one file, kept for reference.
  • src/harmony/ - the library.
  • src/harmony/chords.pl - utility, calculates notes of chord.
  • src/harmony/key_chain.pl - pipeline, generates a sequence of keys.
  • src/harmony/note.pl - utility, map note names to numbers.
  • src/harmony/padding.pl - pipeline, takes sequence of pivot chords and adds padding chords.
  • src/harmony/pivot_chords.pl - pipeline, takes sequence of keys and produces sequence of pivot chords.
  • src/harmony/sequences.pl - utility, common chord sequences for padding.

harmony-generator's People

Contributors

billhails avatar

Stargazers

 avatar

Watchers

 avatar  avatar

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.