# NAME

Music::Intervals - Mathematical breakdown of musical intervals

# VERSION

version 0.0503

# 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
);
$m->process;
# Then
print Dumper # any of:
$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);
# Show all the known intervals:
perl -MData::Dumper -MMusic::Intervals::Ratios -e'print Dumper $Music::Intervals::Ratios::ratio'
```

# DESCRIPTION

A `Music::Intervals`

object shows the mathematical break-down of musical intervals and chords.

This module reveals the "guts" of chords within a given tonality. By guts I mean, the measurements of the notes and the intervals between them.

* This module only handles equal temperament for the 12-tone scale only. *

# ATTRIBUTES

## cents

Show divisions of the octave.

Default: 0

## 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

## 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.

## process()

Do the actual computations!

## dyads()

Return pairs of the given combinations 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

https://github.com/ology/Music/blob/master/intervals - The predecessor to this module

http://en.wikipedia.org/wiki/List_of_musical_intervals

http://en.wikipedia.org/wiki/Equal_temperament

http://en.wikipedia.org/wiki/Just_intonation

# 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.