项目作者: billhails

项目描述 :
Prolog Code to generate modulating chord sequences
高级语言: Prolog
项目地址: git://github.com/billhails/harmony-generator.git
创建时间: 2018-09-27T06:20:13Z
项目社区:https://github.com/billhails/harmony-generator

开源协议:GNU General Public License v3.0

下载


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.