The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Music::Chord::Progression - Create network transition chord progressions

VERSION

version 0.0001

SYNOPSIS

  use Music::Chord::Progression;

  my $prog = Music::Chord::Progression->new;

  my $notes = $prog->generate;

DESCRIPTION

Music::Chord::Progression creates network transition chord progressions.

ATTRIBUTES

max

The maximum number of chords to generate.

Default: 8

net

The network transitions between chords of the progression.

Default:

  { 1 => [qw( 1 2 3 4 5 6 )],
    2 => [qw( 3 5 )],
    3 => [qw( 2 4 6 )],
    4 => [qw( 1 2 3 5 )],
    5 => [qw( 1 )],
    6 => [qw( 2 4 )] }

valence

The chord name parts of each scale position.

The number of items in this list must be equal and correspond to the number of keys in the net.

Default: [ '', 'm', 'm', '', '', 'm' ]

scale_name

The name of the scale.

Default: major

scale_note

The name of the scale starting note.

Default: C

octave

The octave number of the scale.

Default: 4

tonic

Whether to start the progression with the tonic chord or not.

Default: 1

flat

Whether to use flats instead of sharps in the chords or not.

Default: 0

graph

The network transition graph.

Default: Graph::Directed

verbose

Show the progress of the generate method.

METHODS

new

  $prog = Music::Chord::Progression->new;
  $prog = Music::Chord::Progression->new(
    net        => { 1 => [...], ... },
    valence    => ['m','','m','m','',''],
    scale_name => 'minor',
    scale_note => 'A',
    octave     => 5,
  );

Create a new Music::Chord::Progression object.

generate

Generate a new chord progression.

SEE ALSO

Data::Dumper::Compact

Graph::Directed

Moo

Music::Chord::Note

Music::Scales

AUTHOR

Gene Boggs <gene@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2020 by Gene Boggs.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.