NAME
Music::Harmonics - Calculate harmonics for stringed instruments
VERSION
Version 0.01
SYNOPSIS
use Music::Harmonics;
my $h = Music::Harmonics->new();
foreach (2..5) {
my %harm = $h->GetStringHarmonic(name => 'E2', harmonic => $_);
printf("Grab fret %i to play the harmonic #%i. It'll be a %s.\n",
$harm{frets}->[0], $_, uc $harm{name});
}
DESCRIPTION
This module calculates the note names and positions of harmonics and overtones. So far, it is limited to stringed instruments.
Note that the first harmonic is the foundational pitch, the second harmonic is the first overtone, and so on.
The pitch names used in this module are the sames as used by MIDI::Pitch.
CONSTRUCTOR
new
my $h = Music::Harmonics->new(frets_per_octave => 12);
Creates a new Music::Harmonics
object. The frets_per_octave
parameter is optional and defaults to 12.
FUNCTIONS
GetFret
my $f = $h->GetFret($position);
Given a position on the fingerboard between 0 and 1 (0 being directly at the nut, 1 being at the other end of the string at the bridge), returns the fret number as a float (assuming even intonation). For example, 0.5
refers to the middle of the string, so that GetFret(0.5)
on an instrument with 12 frets per octave returns 12.
GetStringHarmonic
%harm = $h->GetStringHarmonic(name => 'E2', harmonic => 2,
minfret => 0, maxfret => 12);
Returns the positions where a certain harmonic can be played. minfret
and maxfret
are optional, their default values are 0 and 12 respectively.
The result is a hash. name
gives the name of the harmonic, frequency
the frequency and frets
is a list of fret positions.
GetStringHarmonics
$h->GetStringHarmonics(name => 'E2', minharmonic => 2, maxharmonic => 6);
Retrieves a list of harmonics from minharmonic
to maxharmonic
.
SEE ALSO
AUTHOR
Christian Renz, <crenz @ web42.com>
BUGS
Please report any bugs or feature requests to bug-music-harmonics@rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Music-Harmonics. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
COPYRIGHT AND LICENSE
Copyright 2005 Christian Renz <crenz @ web42.com>, All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.