From: fred Date: Wed, 27 Mar 2002 00:33:14 +0000 (+0000) Subject: lilypond-1.3.108 X-Git-Tag: release/1.5.59~1111 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=e9156408695cb98025b10e1b0dba9f44b3e9e32d;p=lilypond.git lilypond-1.3.108 --- diff --git a/lily/include/pitch.hh b/lily/include/pitch.hh new file mode 100644 index 0000000000..0ad15815ee --- /dev/null +++ b/lily/include/pitch.hh @@ -0,0 +1,83 @@ +/* + pitch.hh -- declare Pitch + + source file of the GNU LilyPond music typesetter + + (c) 1998--2000 Han-Wen Nienhuys + + */ + +#ifndef MUSICAL_PITCH_HH +#define MUSICAL_PITCH_HH + +#include "lily-proto.hh" +#include "smobs.hh" + +/** A "tonal" pitch. This is a pitch as it figures in diatonal western + music (12 semitones in an octave), as opposed to a frequence in Hz + or a integer number of semitones. + +*/ +class Pitch +{ +public: // fixme + /* + TODO: use SCM -- (make private?) + */ + + /// 0 is c, 6 is b + int notename_i_; + + /// 0 natural, 1 sharp, etc + int alteration_i_; + + /// 0 is central c + int octave_i_; + /* + mutators, so JUNKME. + */ + void transpose (Pitch); + void up_to (int); + void down_to (int); + +public: + + int octave_i () const; + int notename_i () const; + int alteration_i () const; + + /* + Pitch is lexicographically ordered by (octave, notename, + alteration). + */ + Pitch (int octave, int notename,int accidental); + Pitch (); + + Pitch to_relative_octave (Pitch); + + static int compare (Pitch const&,Pitch const&); + /// return large part of interval from central c + int steps() const; + /// return pitch from central c (in halfnotes) + int semitone_pitch() const; + String str () const; + + static SCM transpose (SCM p, SCM delta); + + SCM smobbed_copy () const; + DECLARE_SCHEME_CALLBACK(less_p, (SCM a, SCM b)); + DECLARE_SIMPLE_SMOBS(Pitch,); + + +}; + +Pitch* unsmob_pitch (SCM); + +#include "compare.hh" +INSTANTIATE_COMPARE(Pitch, Pitch::compare); + +int compare (Array*, Array*); + +#endif /* MUSICAL_PITCH_HH */ + + diff --git a/lily/parser.yy b/lily/parser.yy index 8b1fd7b85b..6f6b260081 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -1180,12 +1180,12 @@ steno_musical_pitch: $$ = $1; } | NOTENAME_PITCH sup_quotes { - Musical_pitch p = *unsmob_pitch ($1); + Pitch p = *unsmob_pitch ($1); p.octave_i_ += $2; $$ = p.smobbed_copy (); } | NOTENAME_PITCH sub_quotes { - Musical_pitch p =* unsmob_pitch ($1); + Pitch p =* unsmob_pitch ($1); p.octave_i_ += -$2; $$ = p.smobbed_copy (); @@ -1202,12 +1202,12 @@ steno_tonic_pitch: $$ = $1; } | TONICNAME_PITCH sup_quotes { - Musical_pitch p = *unsmob_pitch ($1); + Pitch p = *unsmob_pitch ($1); p.octave_i_ += $2; $$ = p.smobbed_copy (); } | TONICNAME_PITCH sub_quotes { - Musical_pitch p =* unsmob_pitch ($1); + Pitch p =* unsmob_pitch ($1); p.octave_i_ += -$2; $$ = p.smobbed_copy (); @@ -1222,7 +1222,7 @@ musical_pitch: | MUSICAL_PITCH embedded_scm { if (!unsmob_pitch ($2)) THIS->parser_error (_f ("Expecting musical-pitch value", 3)); - Musical_pitch m; + Pitch m; $$ = m.smobbed_copy (); } ; @@ -1533,7 +1533,7 @@ FIXME chord: steno_tonic_pitch optional_notemode_duration chord_additions chord_subtractions chord_inversion chord_bass { - $$ = get_chord ($1, $3, $4, $5, $6, $2); + $$ = Chord::get_chord ($1, $3, $4, $5, $6, $2); $$->set_spot (THIS->here_input ()); }; @@ -1597,7 +1597,7 @@ chord_step: chord_note: bare_unsigned { - Musical_pitch m; + Pitch m; m.notename_i_ = ($1 - 1) % 7; m.octave_i_ = $1 > 7 ? 1 : 0; m.alteration_i_ = 0; @@ -1605,7 +1605,7 @@ chord_note: $$ = m.smobbed_copy (); } | bare_unsigned '+' { - Musical_pitch m; + Pitch m; m.notename_i_ = ($1 - 1) % 7; m.octave_i_ = $1 > 7 ? 1 : 0; m.alteration_i_ = 1; @@ -1614,7 +1614,7 @@ chord_note: $$ = m.smobbed_copy (); } | bare_unsigned CHORD_MINUS { - Musical_pitch m; + Pitch m; m.notename_i_ = ($1 - 1) % 7; m.octave_i_ = $1 > 7 ? 1 : 0; m.alteration_i_ = -1;