Skip to main content

Network transition chord progressions

Project description

Chord Progression Network

Network transition chord progression generator

DESCRIPTION

This class generates network transition chord progressions. The transitions are given by a net of scale positions, and the chord "flavors" are defined by a chord_map of types. The chords that are returned are either named chords or lists of three or more named notes with octaves.

The chord types are as follows:

'' (i.e. an empty string) means a major chord.
'm' signifies a minor chord.
'7' is a seventh chord and 'M7' is a major 7th chord.
'dim' is a diminished chord and 'aug' is augmented.
'9', '11', and '13' are extended 7th chords.
'M9', 'M11', and 'M13' are extended major-7th chords.
'm9', 'm11', and 'm13' are extended minor-7th chords.

For the major scale (ionian mode), this chord_map is ['', 'm', 'm', '', '', 'm', 'dim']. The dorian mode is ['m', 'm', '', '', 'm', 'dim', '']. A chromatic scale is all minors. This can be set in the constructor, or seen by printing it after Generator construction.

The tonic attribute means that if the first chord of the progression is being generated, then for 0 choose a random successor of the first chord, as defined by the net attribute. For 1, return the first chord in the scale. For any other value, choose a random value of the entire scale.

The resolve attribute means that if the last progression chord is being generated, then for 0 choose a random successor. As for the tonic, for 1, return the first chord in the scale, and for any other value, choose a random value of the entire scale. In all other cases (i.e. the middle chords of the progression), choose a random successor.

By default, all chords and notes with accidentals are returned as sharps. If you want flats, set the flat attribute to True in the constructor.

If the substitute attribute is set to True, then the progression chords are subject to extended, "jazz" chord, including tritone substitution. For now, for this work-in-progress advanced option, please see the substitution() method in the source...

SYNOPSIS

from chord_progression_network import Generator

g = Generator( # defaults
    max=8,
    scale_note='C',
    scale_name='major',
    octave=4,
    net={
        1: [1, 2, 3, 4, 5, 6],
        2: [3, 4, 5],
        3: [1, 2, 4, 6],
        4: [1, 3, 5, 6],
        5: [1, 4, 6],
        6: [1, 2, 4, 5],
        7: [],
    },
    chord_map=[ '', 'm', 'm', '', '', 'm', 'dim' ],
    tonic=1,
    resolve=1,
    flat=False,
    chord_phrase=False,
    substitute=False,
    verbose=False,
)
phrase = g.generate()

MUSICAL EXAMPLES

from music21 import chord, stream
from chord_progression_network import Generator

g = Generator(verbose=True)
phrase = g.generate()

s = stream.Score()
p = stream.Part()

for notes in phrase:
    p.append(chord.Chord(notes, type='whole'))

s.append(p)

s.show()
from music21 import chord, duration, stream
from chord_progression_network import Generator
from random_rhythms import Rhythm

r = Rhythm(
    durations=[ 1/2, 1/3, 1, 3/2, 2 ],
    groups={1/3: 3, 1/2: 2},
)
motifs = [ r.motif() for _ in range(4) ]

s = stream.Score()
p = stream.Part()

g = Generator()

for m in motifs:
    g.max = len(m)
    phrase = g.generate()
    for i, d in enumerate(m):
        c = chord.Chord(phrase[i])
        c.duration = duration.Duration(d)
        p.append(c)
s.append(p)

s.show()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

chord_progression_network-0.1.7.tar.gz (43.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

chord_progression_network-0.1.7-py3-none-any.whl (30.2 kB view details)

Uploaded Python 3

File details

Details for the file chord_progression_network-0.1.7.tar.gz.

File metadata

File hashes

Hashes for chord_progression_network-0.1.7.tar.gz
Algorithm Hash digest
SHA256 5b145cf5b7cd173a3391f974a4d939beae80e46acd5813883b7d8c68c181ec52
MD5 afe179e3bb51ee5caf3c4cb922696b2d
BLAKE2b-256 a900b9fc333ebdb56339d8df6a895218ba590dbcb125e7fb53e9e42c036a48e8

See more details on using hashes here.

File details

Details for the file chord_progression_network-0.1.7-py3-none-any.whl.

File metadata

File hashes

Hashes for chord_progression_network-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 c592ba6a14ff4f854a083b3c46b0ef8769a38357d93d43cb00b7a2ef8f9baee8
MD5 ffdcc6fa2f7dac480dfed61cf0486c81
BLAKE2b-256 25a94e13935f2f75ec16f45b6a8b1427c4bed029874cf466d0a5ab40a99f8c39

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page