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

NAME

 Note - representation of a single musical note, and various manipulation routines

SYNOPSIS

    use Music::Note;

        my $note = Music::Note->new("C#4","ISO");  # 'simple' style - notename/type
        $note->transpose->(-16);     # to A2
        $note->alter(1);             # to A#2
        $note->en_eq('flat');        # to Bb2
        print $note->format("kern"); # BB-
        $note = Music::Note->new({step=>'C',octave=>'4',alter=>1});
        print $note->octave();       # 4
        print $note->step();         # C

DESCRIPTION

 An OO encapsulation of a single musical note. Includes methods for transposition, enharmonic equivalence, and creation/output in a range of formats.

METHODS

new($notename,$type)

Creates a new Note object. See below for a list of types. $type defaults to "ISO" if omitted. $notename defaults to "C4".

new({%params})

Creates a new Note object. Parameters are MusicXML compliant - viz. "step" (A-G), 'octave' (+/- integer) and 'alter' (+/- integer). The 'octave' parameter is based upon standard usage, where C4=Middle C and the number changes between B and C. The 'alter' parameter indicates accidentals, where '1' is sharp, '-1' is flat, '2' is double-sharp and so on.

format($type)

Returns the note object formatted in one of the styles named below.

transpose($amount)

Transposes the note by $amount semitones (+/-), keeping accidental types where possible (eg. - Ab + 2 = Bb, not A#). Returns the note object.

en_eq($type)

Changes the Note into an enharmonic equivalent (C#->Db, for instance). $type can be either 'sharp' (or 's'/'#') or 'flat'('f'/'b'). Double accidentals are naturalised - so 'Bbb' will become 'A' if sharpened, and 'Fx' becomes 'G' if flattened. Returns the note object.

STYLES

 ISO      (C3, D#4, Ab5)
 isobase  (C, Ds, Af  (as ISO, but no octave number) )
 midi     (C3, Ds4, Af5)
 midinum  (0-127)
 kern     (CC, d+, aa-)
 MusicXML (<pitch><step>D</step><octave>4</octave><alter>1</alter></pitch>)
 pdl      (c3, ds4, af5)

 'xml' can be used as a synonym for 'MusicXML'.

TODO more types - abc, solfa (do,re,mi,fa,so,la,ti), Indian (sa,re,ga,ma,pa,da,ni) length manipulation

AUTHOR

 Ben Daglish (bdaglish@cpan.org)

BUGS

 None known
 All feedback most welcome.

COPYRIGHT

 Copyright (c) 2003, Ben Daglish. All Rights Reserved.
 This program is free software; you can redistribute
 it and/or modify it under the same terms as Perl itself.

 The full text of the license can be found in the
 LICENSE file included with this module.

SEE ALSO

 perl(1).