NAME
Music::ToRoman - Convert notes and chords to Roman numeral notation
VERSION
version 0.1100
SYNOPSIS
use Music::ToRoman;
my $mtr = Music::ToRoman->new(
scale_note => 'A',
scale_name => 'minor',
);
my $roman = $mtr->parse('Am'); # i (minor)
$roman = $mtr->parse('Bo'); # iio (diminished)
$roman = $mtr->parse('Bdim'); # iio (diminished)
$roman = $mtr->parse('Bb'); # bII (flat-two major)
$roman = $mtr->parse('CM'); # III (major)
$roman = $mtr->parse('C'); # III (major)
$roman = $mtr->parse('Cm9/G'); # iii9/VII (minor ninth with seven bass)
$roman = $mtr->parse('Cm9/Bb'); # iii9/bii (minor ninth with flat-two bass)
$roman = $mtr->parse('D sus4'); # IV sus4 (major suspended)
$roman = $mtr->parse('DMaj7'); # IV maj7 (major seventh)
$roman = $mtr->parse('E7'); # V7 (dominant seventh)
$roman = $mtr->parse('Em7'); # v7 (minor seventh)
$roman = $mtr->parse('Fmin7'); # vi min7 (minor seventh)
$roman = $mtr->parse('G+'); # VII+ (augmented)
$mtr = Music::ToRoman->new(
scale_note => 'A',
scale_name => 'dorian',
chords => 0,
);
$roman = $mtr->parse('A'); # i
$roman = $mtr->parse('B'); # ii
$roman = $mtr->parse('C'); # III
$roman = $mtr->parse('D'); # IV
$roman = $mtr->parse('E'); # v
$roman = $mtr->parse('F#'); # vi
$roman = $mtr->parse('G'); # VII
$roman = $mtr->parse('Amin7'); # i min7
$roman = $mtr->parse('Bo'); # iio
$roman = $mtr->parse('CMaj7'); # III maj7
$roman = $mtr->parse('D7'); # IV7
$roman = $mtr->parse('Em'); # v
DESCRIPTION
Music::ToRoman
converts named chords to Roman numeral notation. Also individual "chordless" notes may be converted given a diatonic mode scale_name.
ATTRIBUTES
scale_note
Note on which the scale is based. Default: C
This must be an uppercase letter from A-G either alone or followed by #
or b
.
scale_name
Name of the scale. Default: major
The diatonic mode names supported are:
ionian / major
dorian
phrygian
lydian
mixolydian
aeolian / minor
locrian
major_tonic
Note on which the major
scale is based. Default: 'C'
This must be an uppercase letter from A-G and followed by a #
.
This attribute is required when the scale_note is either a double-sharp or double-flat and the scale_name is neither major
nor ionian
.
chords
Are we given chords to parse with major (M
) and minor (m
) designations?
Default: 1
* Must be a Boolean value.
If this is set to 0
, single notes can be used to return the major/minor Roman numeral for the given diatonic mode scale_name.
verbose
Show the progress of the parse method. Default 0
METHODS
new
$mtr = Music::ToRoman->new(
scale_note => $note,
scale_name => $name,
);
Create a new Music::ToRoman
object.
parse
$roman = $mtr->parse($chord);
Parse a note or chord name into a Roman numeral representation.
For instance, the Roman numeral representation for the aeolian
(or minor) mode is: i ii III iv v VI VII
- where the case indicates the major/minor status of the given chord.
This can be overridden by parsing say, BM7
(B dominant seventh), thus producing II7
.
If a major/minor chord designation is not provided, M
major is assumed.
If the chords attribute is set to 0
and a single note is given, the diatonic mode of the scale_name is used to find the correct Roman numeral representation.
A diminished chord may be given as either o
or dim
, and both are rendered as o
.
SEE ALSO
https://en.wikipedia.org/wiki/Roman_numeral_analysis
For example usage, check out the files eg/roman and eg/basslines in Music::BachChoralHarmony.
App::MusicTools vov
is the reverse of this module, and is significantly powerful.
AUTHOR
Gene Boggs <gene@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2019 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.