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