Skip to content

accraze/python-twelve-tone

Repository files navigation

Overview

docs Documentation Status
tests Travis-CI Build Status Coverage Status
package PyPI Package latest release PyPI Wheel Supported versions

Twelve-tone matrix to generate dodecaphonic melodies.

https://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Schoenberg_-_Piano_Piece_op.33a_tone_row.png/640px-Schoenberg_-_Piano_Piece_op.33a_tone_row.png

Following a process created by the composer Arnold Schoenberg, this library computes a matrix to create twelve-tone serialism melodies which compose each of the 12 semitones of the chromatic scale with equal importance.

  • Save your compositions to MIDI
  • Free software: BSD license

Installation

pip install twelve-tone

The GuixRUs channel also provides twelve-tone.

Quick Start

You can quickly generate a random twelve-tone melody with the CLI

$ twelve-tone
['C# / Db', 'A# / Bb', 'F', 'D', 'G# / Ab', 'D# / Eb', 'F# / Gb',
    'A', 'C', 'G', 'B', 'E']

Or you can use the following methods in a script:

>>> from twelve_tone.composer import Composer
>>> c = Composer()
>>> c.compose()
>>> c.get_melody()
['C# / Db', 'A# / Bb', 'F', 'D', 'G# / Ab', 'D# / Eb', 'F# / Gb',
    'A', 'C', 'G', 'B', 'E']

After you have composed a matrix of tone rows, you can save the composition to MIDI:

>>> c.compose()
>>> c.save_to_midi(filename='TWELVE_TONE.mid')

The new MIDI file will be created in your current working directory. If you do not specify a filename for your file, it will default to example.mid.

Documentation

https://python-twelve-tone.readthedocs.io/

Development

To run the all tests run:

tox

Note, to combine the coverage data from all the tox environments run:

Windows
set PYTEST_ADDOPTS=--cov-append
tox
Other
PYTEST_ADDOPTS=--cov-append tox