-
-
10 Feb 2021 23:14:54 UTC
- Distribution: Music-ToRoman
- Module version: 0.1900
- Source (raw)
- Browse (raw)
- Changes
- Homepage
- How to Contribute
- Repository
- Issues
- Testers (725 / 0 / 0)
- Kwalitee
Bus factor: 1- 91.30% Coverage
- License: perl_5
- Perl: v5.6.0
- Activity
24 month- Tools
- Download (24.66KB)
- MetaCPAN Explorer
- Permissions
- Subscribe to distribution
- Permalinks
- This version
- Latest version
- NAME
- VERSION
- SYNOPSIS
- DESCRIPTION
- ATTRIBUTES
- METHODS
- SEE ALSO
- THANK YOU
- AUTHOR
- COPYRIGHT AND LICENSE
NAME
Music::ToRoman - Convert notes and chords to Roman numeral notation
VERSION
version 0.1900
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('Bdim'); # iio (diminished) $roman = $mtr->parse('B dim'); # ii o $roman = $mtr->parse('Bo'); # iio $roman = $mtr->parse('Bø'); # ii7b5 (half-diminished) $roman = $mtr->parse('Bb'); # bII (flat-two major) $roman = $mtr->parse('CM'); # III (major) $roman = $mtr->parse('C'); # III $roman = $mtr->parse('Cm9/G'); # iii9/VII (minor-nine with seven bass) $roman = $mtr->parse('Cm9/Bb'); # iii9/bii (minor-nine with flat-two bass) $roman = $mtr->parse('Dsus4'); # IVsus4 (suspended) $roman = $mtr->parse('D sus4'); # IV sus4 $roman = $mtr->parse('D maj7'); # IV maj7 (major seventh) $roman = $mtr->parse('DMaj7'); # IVmaj7 $roman = $mtr->parse('D△7'); # IVmaj7 $roman = $mtr->parse('E7'); # V7 (dominant seventh) $roman = $mtr->parse('Fmin7'); # vimin7 (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'); # imin7 $roman = $mtr->parse('Bo'); # iio $roman = $mtr->parse('CMaj7'); # IIImaj7 $roman = $mtr->parse('D7'); # IV7 $roman = $mtr->parse('Em'); # v my @mode = $mtr->get_scale_mode; my @chords = $mtr->get_scale_chords;
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#
orb
.Note that the keys of
A#
andD#
are better represented byGb
andEb
respectively, because the scales contain notes with double sharps. Double flat scales are not supported.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#
orb
.This attribute is required when the scale_note is set to a double-sharp, and the scale_name is not
major
(orionian
).Again, double flat scales are not supported.
chords
Are we given chords to parse with major (
M
) or minor (m
/o
/dim
/ø
) designations?Default:
1
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, major_tonic => $tonic, chords => $chords, verbose => $verbose, );
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,
B7
(B dominant seventh), thus producingII7
.If a major/minor chord designation is not provided,
M
major is assumed.If the chords attribute is set to
0
, the scale_name is used to figure out the correct Roman numeral representation.A diminished chord may be given as either
o
ordim
. Half-diminished (m7b5
) chords can be given asø
. A decoration of△
may be given for say the△7
major seventh chord.Parsing a double flatted chord will only work in select cases.
get_scale_mode
@mode = $mtr->get_scale_mode;
Return the Roman representation of the mode.
get_scale_chords
@mode = $mtr->get_scale_chords;
Return the chords of the mode.
SEE ALSO
https://en.wikipedia.org/wiki/Roman_numeral_analysis
For example usage, check out the test files t/*-methods.t in this distribution. Also see eg/roman and eg/basslines in Music::BachChoralHarmony.
App::MusicTools
vov
is the reverse of this module, and is significantly powerful.THANK YOU
Dan Book (DBOOK) for the list rotation logic
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.
Module Install Instructions
To install Music::ToRoman, copy and paste the appropriate command in to your terminal.
cpanm Music::ToRoman
perl -MCPAN -e shell install Music::ToRoman
For more information on module installation, please visit the detailed CPAN module installation guide.