NAME

Music::Chord::Progression::NRO - Generate Neo-Riemann chord progressions - DEPRECATED

VERSION

version 0.0400_1

SYNOPSIS

use MIDI::Util qw(setup_score midi_format);
use Music::Chord::Progression::NRO ();

my $nro = Music::Chord::Progression::NRO->new;
my $chords = $nro->generate;
$chords = $nro->circular;

# render a midi file
my $score = setup_score();
$score->n('wn', midi_format(@$_)) for @$chords;
$score->write_score('nro.mid');

DESCRIPTION

*DEPRECATED*

The Music::Chord::Progression::NRO module generates Neo-Riemann chord progressions.

ATTRIBUTES

base_note

$base_note = $nro->base_note;

The initial isobase, capitalized note on which the progression starts.

Default: C

base_octave

$base_octave = $nro->base_octave;

The initial note octave on which the progression starts.

Default: 4

base_scale

$base_scale = $nro->base_scale;

The major or minor quality of the initial chord.

Default: major

base_chord

$base_chord = $nro->base_chord;

The chord given by the base_note, base_octave, and the base_scale.

format

$format = $nro->format;

The format of the returned results, as either named ISO notes or midinum integers.

Default: ISO

max

$max = $nro->max;

The maximum number of circular transformations to make.

Default: 4

transform

$transform = $nro->transform;

The array-reference of Neo-Riemann transformations that define the chord progression.

Please see the Music::NeoRiemannianTonnetz module for the allowed transformations.

This can also be given as an integer, which defines the number of random transformations to perform.

Additionally the "non-transformation", I is allowed to return the the initial chord.

Default: 4

verbose

$verbose = $nro->verbose;

Show progress.

Default: 0

nrt

$nrt = $nro->nrt;

The Music::NeoRiemannianTonnetz object.

METHODS

new

$nro = Music::Chord::Progression::NRO->new; # use defaults

$nro = Music::Chord::Progression::NRO->new( # override defaults
  base_note   => 'Bb',
  base_octave => 5,
  base_scale  => 'minor',
  format      => 'midinum',
  max         => 12,
  transform   => [qw(I PRL R L R L R)],
);

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

generate

$chords = $nro->generate;

Generate a linear series of transformed chords.

circular

$chords = $nro->circular;

Generate a series of transformed chords based on a circular list of transformations.

The eg/nro-chain program puts it this way:

"Use a circular list ("necklace") of Neo-Riemannian transformations, plus I meaning "make no transformation." Starting at position zero, move forward or backward along the necklace, transforming the current chord..."

SEE ALSO

The t/01-methods.t and eg/* files

Carp

Data::Dumper::Compact

Moo

Music::NeoRiemannianTonnetz

Music::Chord::Note

Music::Chord::Namer

https://viva.pressbooks.pub/openmusictheory/chapter/neo-riemannian-triadic-progressions/

AUTHOR

Gene Boggs <gene@cpan.org>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2023 by Gene Boggs.

This is free software, licensed under:

The Artistic License 2.0 (GPL Compatible)