]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-0.0.44
authorfred <fred>
Sat, 22 Mar 1997 00:00:42 +0000 (00:00 +0000)
committerfred <fred>
Sat, 22 Mar 1997 00:00:42 +0000 (00:00 +0000)
lib/include/duration-convert.hh [new file with mode: 0644]

diff --git a/lib/include/duration-convert.hh b/lib/include/duration-convert.hh
new file mode 100644 (file)
index 0000000..9c8b53d
--- /dev/null
@@ -0,0 +1,103 @@
+
+/*
+         duration-convert.hh -- declare 
+
+  source file of the LilyPond music typesetter
+
+  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+
+#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