NAME
Music::Intervals - Breakdown of named musical intervals
VERSION
version 0.0602
SYNOPSIS
use Music::Intervals;
my $m = Music::Intervals->new(
notes => [qw/C E G B/], # Default: C major scale
size => 3, # Must be <= the notes
chords => 1, # Required for chord names
justin => 1, # Required for natural_*
equalt => 1, # Required for eq_tempered_*
freqs => 1, # Required for *_frequencies
interval => 1, # Required for *_intervals
cents => 1, # Required for *_cents
prime => 1, # Required for prime factors
integer => 1, # Required for integer notation
);
# Then
print Dumper(
$m->chord_names,
$m->natural_frequencies,
$m->natural_intervals,
$m->natural_cents,
$m->natural_prime_factors,
$m->eq_tempered_frequencies,
$m->eq_tempered_intervals,
$m->eq_tempered_cents,
$m->integer_notation,
);
# Find known intervals
$name = $m->by_ratio($ratio);
$ratio = $m->by_name($interval_name);
perl -Ilib -MMusic::Intervals::Ratios -E'say $Music::Intervals::Ratios::ratio->{C}{name}'
# unison, perfect prime, tonic
# Show all the 447 known intervals:
perl -MData::Dumper -MMusic::Intervals::Ratios -e'print Dumper $Music::Intervals::Ratios::ratio'
DESCRIPTION
A Music::Intervals
object shows the breakdown of musical notes, intervals and chords.
This module reveals the "guts" within a given tonality. And by guts I mean, the measurements of the notes and the intervals between them.
ATTRIBUTES
chords
Show chord names.
Default: 0
rootless
Show chord names with no root.
Default: 0
equalt
Show equal temperament.
Default: 0
justin
Show just intonation.
Default: 0
integer
Show integer notation.
Default: 0
cents
Show the logarithmic units of measure.
Default: 0
freqs
Show frequencies.
Default: 0
interval
Show note intervals.
Default: 0
prime
Show prime factorization.
Default: 0
octave
The octave to use.
Default: 4
concert
Concert pitch.
Default: 440
size
Chord size
Default: 3
tonic
The root of the computations.
Default: C
* Currently (and for the foreseeable future) this will remain the only value that produces sane results.
semitones
Number of notes in the scale.
Default: 12
temper
Physical distance between notes.
Default: semitones * 100 / log(2)
notes
The actual notes to use in the computation.
Default: [ C D E F G A B ]
The list of notes may be any of the keys in the Music::Intervals::Ratios ratio
hashref. This is very very long and contains useful intervals such as those of the common scale and even the Pythagorean intervals, too.
A few examples:
[qw( C E G )]
[qw( C D D# )]
[qw( C D Eb )]
[qw( C D D# Eb E E# Fb F )]
[qw( C 11h 7h )]
[qw( C pM3 pM7 )]
For natural_intervals this last example produces the following:
'C pM3 pM7' => {
'C pM3' => { '81/64' => 'Pythagorean major third' },
'C pM7' => { '243/128' => 'Pythagorean major seventh' },
'pM3 pM7' => { '3/2' => 'perfect fifth' }
}
Note that case matters for interval names. For example, "M" means major and "m" means minor.
midikey
Default: 69
chord_names
Computed hashref
eq_tempered_cents
Computed hashref
eq_tempered_frequencies
Computed hashref
eq_tempered_intervals
Computed hashref
integer_notation
Computed hashref
natural_cents
Computed hashref
natural_frequencies
Computed hashref
natural_intervals
Computed hashref
natural_prime_factors
Computed hashref
METHODS
new
$x = Music::Intervals->new(%arguments);
Create a new Music::Intervals
object.
dyads
Return pairs of the given notes with fractional and pitch ratio parts.
ratio_factorize
Return the dyadic fraction as a prime factored expression.
by_name
$ratio = $m->by_name('C');
# { ratio => '1/1', name => 'unison, perfect prime, tonic' }
Return a known ratio or undef.
by_ratio
$name = $m->by_ratio('1/1');
# { 'symbol' => 'C', 'name' => 'unison, perfect prime, tonic' }
Return a known ratio name or undef.
SEE ALSO
The t/ tests and eg/ example in this distribution
For the time being, you will need to look at the source of Music::Intervals::Ratios for the note and interval names.
Music::Intervals::Numeric for numeric-only note-intervals
http://en.wikipedia.org/wiki/List_of_musical_intervals
http://en.wikipedia.org/wiki/Equal_temperament
http://en.wikipedia.org/wiki/Just_intonation
Music::Scala - A powerful module encompassing thousands of scales and the ratios therein
AUTHOR
Gene Boggs <gene@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2021 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.