From e8f964d2ea0114258c3c3a57bf95cfa2683a6b3b Mon Sep 17 00:00:00 2001 From: fred Date: Sat, 22 Mar 1997 00:00:42 +0000 Subject: [PATCH] lilypond-0.0.44 --- lib/include/duration-convert.hh | 103 ++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 lib/include/duration-convert.hh diff --git a/lib/include/duration-convert.hh b/lib/include/duration-convert.hh new file mode 100644 index 0000000000..9c8b53d709 --- /dev/null +++ b/lib/include/duration-convert.hh @@ -0,0 +1,103 @@ + +/* + duration-convert.hh -- declare + + source file of the LilyPond music typesetter + + (c) 1997 Han-Wen Nienhuys +*/ + + +#ifndef DURATION_CONVERT_HH +#define DURATION_CONVERT_HH +#include "duration.hh" +#include "string.hh" + +/** + Duration_convert handles all conversions to -n fro Duration (dur). + That is including (integer + division) representation for MIDI, + and conversion from unexact time representation (best guess :-). + + A Moment (mom) is a Rational that holds the time fraction + compared to a whole note (before also called wholes). + + SUGGESTION: currently a moment in time is called moment too; + let-s typedef Rational When too, so that we get + When Staff_column::when(), Moment Voice_element::mom(). +*/ +struct Duration_convert { + + /* Urgh. statics. + */ + static bool be_blonde_b_s; // cute, but not informative. everythiing is blonde, right? HW + static bool no_double_dots_b_s; + static bool no_triplets_b_s; + static int no_smaller_than_i_s; + +// /// Most used division in MIDI, all fine with me. +// static int const division_1_c_i = 384; + +// /// Return (integer, division) representation. +// static int dur2_i( Duration dur, int division_1_i = division_1_c_i ); + + /// Return number of ticks in (ticks, division_1) representation + static int dur2ticks_i( Duration dur ); + + /// Return Moment representation (fraction of whole note). + static Moment dur2_mom( Duration dur ); + + /// Return Mudela string representation. + static String dur2_str( Duration dur ); + +// /// Return Moment from (integer, division) representation. +// static Moment i2_mom( int i, int division_1_i = division_1_c_i ); + +// /// Return Moment (fraction of whole) representation, best guess. +// static Duration mom2_dur( Moment mom ); + + /// Return plet factor (not a Moment: should use Rational?). + static Moment plet_factor_mom( Duration dur ); + + /** Return synchronisation factor for mom, so that + mom2_dur( mom / sync_f ) will return the duration dur. + */ + static Real sync_f( Duration dur, Moment mom ); + + /// Return exact duration, in midi-ticks if not-exact. + static Duration ticks2_dur( int ticks_i ); + + /// Return standardised duration, best guess if not exact. + static Duration ticks2standardised_dur( int ticks_i ); +}; + +/// (iter_dur) +struct Duration_iterator { + /// start at shortest: 128:2/3 + Duration_iterator(); + + // **** what about these three here ? + /// return forward_dur(); + Duration operator ++(int); + + /// return ok() + operator bool(); + + /// return dur() + Duration operator ()(); + // **** + + /// return current dur + Duration dur(); + + /// return dur(), step to next + Duration forward_dur(); + + /// durations left? + bool ok(); + +private: + Duration cursor_dur_; +}; + + +#endif // DURATION_CONVERT_HH -- 2.39.5