The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Music::Intervals - Mathematical breakdown of musical intervals

VERSION

version 0.0502

SYNOPSIS

  use Music::Intervals;
  $m = Music::Intervals->new(
    notes => [qw( C E G B )],
    size => 3,
    chords => 1,
    justin => 1,
    equalt => 1,
    freqs => 1,
    interval => 1,
    cents => 1,
    prime => 1,
    integer => 1,
  );
  $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 (the "notes" attribute above):
  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. *

METHODS

new()

  $x = Music::Intervals->new(%arguments);

Attributes and defaults

cents: 0 - divisions of the octave
chords: 0 - chord names
equalt: 0 - equal temperament
justin: 0 - just intonation
integer: 0 - integer notation
freqs: 0 - frequencies
interval: 0 - note intervals
prime: 0 - prime factorization
rootless: 0 - show chord names with no root
octave: 4 - use the fourth octave
concert: 440 - concert pitch
size: 3 - chord size
tonic: C - root of the computations

* Currently (and for the foreseeable future) this will remain the only value that produces sane results.

semitones: 12 - number of notes in the scale
temper: semitones * 100 / log(2) - physical distance between notes
notes: [ C D E F G A B ] - actual notes to use in the computation

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

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($ratio);

Return a known ratio name or undef.

SEE ALSO

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

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) 2014 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.