|
Note - representation of a single musical note, and various manipulation routines |
Note - representation of a single musical note, and various manipulation routines
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
An OO encapsulation of a single musical note. Includes methods for transposition, enharmonic equivalence, and creation/output in a range of formats.
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.
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'.
Ben Daglish (bdaglish@cpan.org)
None known All feedback most welcome.
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.
perl(1).
|
Note - representation of a single musical note, and various manipulation routines |