]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.3.148
authorfred <fred>
Wed, 27 Mar 2002 01:02:42 +0000 (01:02 +0000)
committerfred <fred>
Wed, 27 Mar 2002 01:02:42 +0000 (01:02 +0000)
19 files changed:
CHANGES
Documentation/user/glossary.tely
input/bugs/markup-definition.ly [new file with mode: 0644]
lily/command-request.cc
lily/include/lily-guile.hh
lily/lily-guile.cc
lily/output-property-engraver.cc
lily/parser.yy
lily/property-iterator.cc
lily/text-item.cc
ly/performer.ly
scm/c++.scm
scm/generate-documentation.scm
scm/lily.scm
scm/midi.scm
scm/music-documentation-lib.scm [new file with mode: 0644]
scm/music-property-description.scm
scm/translator-property-description.scm
scripts/convert-ly.py

diff --git a/CHANGES b/CHANGES
index 0eefa79a9943d5ab1da98d955bc26cfec758447b..c3fdefcb2b42800c8a3014765dd09cc96356af16 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,49 @@
-1.3.146.jcn4
+1.3.147.jcn2
 ============
 
+* Fixed windows documentation.
+
+* Filled in tutorial section on windows.
+
+* Ly2dvi: don't use posix file utilities if we have python >= 1.5.2.
+
+* Included additional cygwin login and wrapper scripts.
+
+* Added cygwin path conversion to file-path.cc, to get output in cwd.
+After upgrading cross compilation environment to cygwin-1.1.8-2, it
+seems that these are no longer necessary; disabled by default.
+
+1.3.147.mb1
+============
+
+* Glossary and refman fixes
+
+
+1.3.147.lec1
+============
+* abc2ly fixes:
+
+       - Remove $ from voice names.
+
+       - Fix problem with full names of modes
+
+* added documentation of major limitations of abc2ly to converters.itely.
+
+* added documentation of %%LY to converters.itely.
+
+1.3.147.hwn1
+============
+
+* refman fixes.
+
+* Spelling fixes in .scm files: change equaliser to equalizer
+
+* Add music properties to generated documentation.
+
+
+1.3.147
+=======
+
 * Updated doco to reflect Windows installer.
 
 * Ripped Cygnus' installer/updater for Windows.
index fde9aad3ef212c6161e0ddbad7ec92e8002743f3..695c8eede10d6d40d2dca42af1d686b4c98d97a1 100644 (file)
@@ -149,17 +149,16 @@ the duration of the long a. is proportionate to that of the main note.
 @
 
 @lilypond[13pt,eps]
-\emptyText
-%\property Voice.textNonEmpty = ##f
-\property Voice.TextScript \set #'font-style = #'large
 \notes\relative c'' {
 \key d \major
 \time 4/4
+
+\property Score.TextScript \set #'font-style = #'large
 <d4_"notation" a fis> r 
-{ \property Grace.Stem \override #'flag-style = ##f
+{ \property Grace.Stem \override #'flag-style = #""
   \grace g16 }
 fis8 e16 fis 
-{ \property Grace.Stem \override #'flag-style = ##f
+{ \property Grace.Stem \override #'flag-style = #""
   \grace a16 }
 g8 fis16 g | a4 \bar "||" }
 \notes\relative c'' {
@@ -171,11 +170,10 @@ An appoggiatura may have more notes preceding the main note.
 @
 
 @lilypond[13pt,eps]
-\emptyText
-\property Voice.TextScript \set #'font-style = #'large
 \notes\relative c'' {
   \key as \major
   \time 2/4
+  \property Score.TextScript \set #'font-style = #'large
   \grace { bes16 } as8_"notation" as16 bes as8 g |
   \grace { [as16 ( bes] } < ) c4 as > 
   \grace { [as16 ( bes] } < ) c4 as > \bar "||"
@@ -286,7 +284,6 @@ beams determine the note value of the connected notes.
 
 @lilypond[13pt,eps]
 \property Score.barNonAuto = ##t
-\emptyText
 \property Voice.TextScript \set #'font-style = #'large
 \notes\relative c'' { 
   [g8_"1/8" g g g] s16
@@ -439,7 +436,6 @@ chords are denoted open chords
 
 @lilypond[13pt,eps] 
 \property Score.barNonAuto = ##t
-\property Voice.textNonEmpty = ##t
 \property Voice.TextScript \set #'font-style = #'large
 \time 4/4
 \notes\relative c'' {
@@ -676,7 +672,6 @@ also to some extent in newer jazz music.
 @
 
 @lilypond[13pt,eps] 
-\emptyText
 \property Score.barNonAuto = ##t 
 \property Lyrics.LyricText \set #'font-style = #'large
 \property Voice.TextScript \set #'font-style = #'large
@@ -691,7 +686,6 @@ also to some extent in newer jazz music.
 @end lilypond
 
 @lilypond[13pt,eps] 
-\emptyText
 \property Score.barNonAuto = ##t 
 \property Lyrics.LyricText \set #'font-style = #'large
 \property Voice.TextScript \set #'font-style = #'large
@@ -707,7 +701,6 @@ also to some extent in newer jazz music.
 @end lilypond
 
 @lilypond[13pt,eps] 
-\emptyText
 \property Score.barNonAuto = ##t 
 \property Lyrics.LyricText \set #'font-style = #'large
 \property Voice.TextScript \set #'font-style = #'large
@@ -722,7 +715,6 @@ also to some extent in newer jazz music.
 @end lilypond
 
 @lilypond[13pt,eps] 
-\emptyText
 \property Score.barNonAuto = ##t 
 \property Lyrics.LyricText \set #'font-style = #'large
 \property Voice.TextScript \set #'font-style = #'large
@@ -737,7 +729,6 @@ also to some extent in newer jazz music.
 @end lilypond
 
 @lilypond[13pt,eps] 
-\emptyText
 \property Score.barNonAuto = ##t 
 \property Lyrics.LyricText \set #'font-style = #'large
 \property Voice.TextScript \set #'font-style = #'large
@@ -752,7 +743,6 @@ also to some extent in newer jazz music.
 @end lilypond
 
 @lilypond[13pt,eps] 
-\emptyText
 \property Score.barNonAuto = ##t 
 \property Lyrics.LyricText \set #'font-style = #'large
 \property Voice.TextScript \set #'font-style = #'large
@@ -772,7 +762,6 @@ harmonic minor scale type an augmented second (A) occurs between the 6th and
 7th tone.
 
 @lilypond[13pt,eps] 
-\emptyText
 \property Score.barNonAuto = ##t 
 \property Lyrics.LyricText \set #'font-style = #'large
 \property Voice.TextScript \set #'font-style = #'large
@@ -787,7 +776,6 @@ harmonic minor scale type an augmented second (A) occurs between the 6th and
 @end lilypond
 
 @lilypond[13pt,eps] 
-\emptyText
 \property Score.barNonAuto = ##t 
 \property Lyrics.LyricText \set #'font-style = #'large
 \property Voice.TextScript \set #'font-style = #'large
@@ -802,7 +790,6 @@ harmonic minor scale type an augmented second (A) occurs between the 6th and
 @end lilypond
 
 @lilypond[13pt,eps] 
-\emptyText
 \property Score.barNonAuto = ##t 
 \property Lyrics.LyricText \set #'font-style = #'large
 \property Voice.TextScript \set #'font-style = #'large
@@ -821,7 +808,6 @@ harmonic minor scale type an augmented second (A) occurs between the 6th and
 @end lilypond
 
 @lilypond[13pt,eps] 
-\emptyText
 \property Score.barNonAuto = ##t 
 \property Lyrics.LyricText \set #'font-style = #'large
 \property Voice.TextScript \set #'font-style = #'large
@@ -1114,7 +1100,6 @@ a quarter note. The number of flags determines the @w{@ar{}@strong{note value}}.
 
 @lilypond[13pt,eps]
 \property Score.barNonAuto = ##t
-\emptyText
 \property Voice.TextScript \set #'font-style = #'large
 \notes\relative c'' { 
   g8_"1/8" s8 
@@ -1160,7 +1145,6 @@ of the base chords.
 @
 
 @lilypond[13pt,eps] 
-\emptyText
 \property Score.barNonAuto = ##t 
 \property Lyrics.LyricText \set #'font-style = #'large
 \property Voice.TextScript \set #'font-style = #'large
@@ -1474,7 +1458,6 @@ unlike @emph{leggiero} or @emph{non-legato} (b), @emph{portato} (c) and
 
 @lilypond[13pt,eps]
 \property Score.barNonAuto = ##t
-\emptyText
 \property Lyrics.LyricText \set #'font-style = #'large
 \addlyrics
 \notes\relative c'' { 
@@ -1682,7 +1665,6 @@ subject.
 
 @lilypond[13pt,eps] 
 \property Score.TimeSignature \override #'style = #'C2/2
-\emptyText
 \property Voice.TextScript \set #'font-style = #'large
 \notes\relative c'' { 
   \time 4/4
@@ -1790,7 +1772,6 @@ half. Another dot adds yet a fourth of the duration.
 @
 
 @lilypond[13pt,eps]
-\emptyText
 \property Voice.TextScript \set #'font-style = #'large
 \notes\relative c'' { 
   \time 4/4
@@ -1807,7 +1788,6 @@ frequently used.
 
 @lilypond[13pt,eps]
 \property Voice.TextScript \set #'font-style = #'large
-\emptyText
 \notes\relative c'' { 
   \time 4/4
   \times 2/3 {g8_"triplets" g g} g4 g8 g g4 \bar "||" 
@@ -1844,8 +1824,7 @@ the upper note is played first.
 @lilypond[13pt,eps]
 <
   \context Staff = sa {
-    \emptyText
-    \property Voice.TextScript \set #'font-style = #'large
+        \property Voice.TextScript \set #'font-style = #'large
     \notes\relative c'' { 
       c2._"pre-1850"  b4\trill | c1 \bar "||"
       c2._"post-1850" b4\trill | c1 \bar "||"
@@ -1866,8 +1845,7 @@ Other frequently used ornaments are the @emph{turn}, the @emph{mordent} and the
 @lilypond[13pt,eps]
 <
   \context Staff = sa {
-    \emptyText
-    \property Voice.TextScript \set #'font-style = #'large
+        \property Voice.TextScript \set #'font-style = #'large
     \notes\relative c'' { 
       a4_"turn" b\turn c2 \bar "||"
       g4_"mordent" a b\mordent a \bar "||"
@@ -2010,7 +1988,6 @@ the same @w{@ar{}@strong{signature}}.
 @
 
 @lilypond[13pt,eps] 
-\emptyText
 \property Score.barNonAuto = ##t 
 \property Voice.TextScript \set #'font-style = #'large
 \notes\relative c' { 
@@ -2081,7 +2058,6 @@ sub@-do@-mi@-nant (S) and V = dominant (D).
 @
 
 @lilypond[13pt,eps] 
-\emptyText
 \property Score.barNonAuto = ##t 
 \property Lyrics.LyricText \set #'font-style = #'large
 %\property Lyrics.minVerticalAlign = #8
@@ -2272,7 +2248,6 @@ note. @w{@ar{}@strong{beam}}
 @lilypond[13pt,eps]
 \property Score.noAutoBeaming = ##t
 \property Score.barNonAuto = ##t
-\emptyText
 \property Voice.TextScript \set #'font-style = #'large
 \notes\relative c'' { 
   g2_"1/2" g' s16
@@ -2346,7 +2321,6 @@ the underlaying (normal) pulse and the actual (abnormal) rhythm.
 @
 
 @lilypond[13pt,eps]
-\emptyText
 \property Voice.TextScript \set #'font-style = #'large
 \time 4/4
 \notes\relative c' {
@@ -2433,7 +2407,7 @@ with figures designating the chief @w{@ar{}@strong{interval}}s and
 
 @lilypond[13pt,eps]
 \context GrandStaff <
-  \notes\relative c'' { 
+  \context Staff = lh \notes\relative c'' { 
     \time 4/4
     \key es \major
     \clef treble 
@@ -2445,16 +2419,15 @@ with figures designating the chief @w{@ar{}@strong{interval}}s and
         < bes8 g > as < as f > g < g es > f < d f > es | < g4 es > } 
     >
   }
-  \property Voice.TextScript \set #'font-style = #'large
-  \property Lyrics.LyricText \set #'font-style = #'Large
-  \property Lyrics.minVerticalAlign = #6
   \addlyrics
-    \notes\relative c' { 
+    \context Staff = rh \notes\relative c' { 
     \clef bass
     \key es \major
     es8 c () c bes () bes as () as g16 f | es4 
   }
   \context Lyrics \lyrics { 
+    \property Lyrics . LyricText \set #'font-style = #'Large
+    \property Lyrics . VerticalAlign \override #'threshold = #'(6 . 12)
     < { "" "6" "4" "6" "4" "6" "4" "6" }
       { "" "" "2" "" "2" "" "2" "" } >
   } 
@@ -2538,7 +2511,6 @@ a @w{@ar{}@strong{chord}}, usually in the distance of a third
 @
 
 @lilypond[13pt,eps] 
-\emptyText
 \property Score.barNonAuto = ##t 
 \property Voice.TextScript \set #'font-style = #'large
 \notes\relative c' {
diff --git a/input/bugs/markup-definition.ly b/input/bugs/markup-definition.ly
new file mode 100644 (file)
index 0000000..17d576b
--- /dev/null
@@ -0,0 +1,20 @@
+%{
+
+The definition of markup is incomplete.
+
+Ideally, either the input is valid, and all information therein is
+used, or it is invalid, and an error message is produced.
+
+%}
+
+
+\score { \notes \relative c' {
+    f_#'(lines "one" ( "tow"))
+
+    % three ignored
+    f_#'(lines "one" ( "two" "three" ))        
+
+        % italic ignored.
+    f_#'(lines "one" (bold italic "towo"))
+    
+  }}
index 1b06d2f645e8d554d46d85d7cb91b88797aabe49..aac1ebe576fc16d628f3f26a10c83293197bc40f 100644 (file)
@@ -95,8 +95,8 @@ bool
 Mark_req::do_equal_b (Request const * r) const
 {
   Mark_req const * other = dynamic_cast<Mark_req const*> (r);
-  return other && scm_equal_p (other->get_mus_property ("mark-label"),
-                              get_mus_property ("mark-label")) == SCM_BOOL_T;
+  return other && scm_equal_p (other->get_mus_property ("label"),
+                              get_mus_property ("label")) == SCM_BOOL_T;
 }
 
 
index cde9d412a3059c509c8dbd63366e5fb6cd23e754..a14c160839880c273a84be3b7beaab8690051ad8 100644 (file)
@@ -64,7 +64,7 @@ void read_lily_scm_file (String);
 void init_lily_guile ();
 
 bool isdir_b (SCM s);
-
+bool isaxis_b (SCM s);
 /*
   these conversion functions also do a typecheck on the argument, and
   return a default value if S has the wrong type.
index 04bb47cdd3c47dcd3bc60d402a22595521afa094..b93e7cb30f6c704bb56a8ca1ac06a8aa279d9a56 100644 (file)
@@ -268,6 +268,19 @@ isdir_b (SCM s)
   return false;
 }
 
+
+bool
+isaxis_b (SCM s)
+{
+  if (gh_number_p (s))
+    {
+      int i = gh_scm2int (s);
+      return i== 0 || i == 1;
+    }
+  return false;
+}
+
+
 Direction
 to_dir (SCM s)
 {
index 7db91b877db2e37e23aa8d2de7d20e45df19f69e..fbf90263b62b0c14b36c9aece9a6cbf0a7b8a482 100644 (file)
@@ -64,8 +64,8 @@ Output_property_engraver::acknowledge_grob (Grob_info inf)
                           gh_list (inf.elem_l_->self_scm (), SCM_UNDEFINED));
       if (to_boolean (result))
        {
-         SCM sym = o->get_mus_property ("symbol");
-         SCM val = o->get_mus_property ("value");
+         SCM sym = o->get_mus_property ("grob-property");
+         SCM val = o->get_mus_property ("grob-value");
          inf.elem_l_->set_grob_property (sym, val);
        }
     }
index 165d105e386399ec7fdc0f0cdc48306c7ec32e95..39ebda46bbdb98868bb3cfa39a2c321d3ebfdffc 100644 (file)
@@ -755,8 +755,8 @@ Simple_music:
 
                Music *m = new Music (SCM_EOL);
                m->set_mus_property ("predicate", pred);
-               m->set_mus_property ("symbol", $3);
-               m->set_mus_property ("value",  $5);
+               m->set_mus_property ("grob-property", $3);
+               m->set_mus_property ("grob-value",  $5);
                m->set_mus_property ("iterator-ctor",
                Output_property_music_iterator::constructor_cxx_function);
 
index 84c8486d0b2086c5e469b35e2591d1edd937f7f7..e38675d93924e00a0676d6b33d77c9deed8a9d37 100644 (file)
 void
 Property_iterator::process (Moment m)
 {
-  SCM sym = music_l_->get_mus_property ("symbol");
+  SCM sym = music_l_->get_mus_property ("grob-property");
   if (gh_symbol_p (sym))
     {
-      SCM val = music_l_->get_mus_property ("value");
+      SCM val = music_l_->get_mus_property ("grob-value");
       bool ok= true;
       if (val != SCM_EOL)
        ok = type_check_assignment (val, sym, ly_symbol2scm ("translation-type?"));
index afd032dfedae97900ae80ef1877ee6f50114adf7..bb99b6f236520a497f692337b32b31ffc3e6ce7b 100644 (file)
@@ -38,9 +38,14 @@ Text_item::text2molecule (Grob *me, SCM text, SCM alist_chain)
 {
   if (gh_string_p (text))
     return string2molecule (me, text, alist_chain);
+
+  /*
+    ugh: gh_list_p () is linear.
+   */
+  
   else if (gh_list_p (text) && text != SCM_EOL && text != SCM_UNDEFINED)
     {
-      if (!gh_pair_p (gh_car (text)) && gh_string_p (gh_car (text)))
+      if (gh_string_p (gh_car (text)))
        return string2molecule (me, gh_car (text), alist_chain);
       else
        return markup_text2molecule (me, text, alist_chain);
@@ -121,41 +126,36 @@ Text_item::markup_text2molecule (Grob *me, SCM markup_text,
   SCM markup = gh_car (markup_text);
   SCM text = gh_cdr (markup_text);
 
-#if 1
   SCM p = gh_cons (gh_call2 (f, sheet, markup), alist_chain);
-#else
-  SCM pp = gh_call2 (f, sheet, markup);
-  gh_newline ();
-  scm_write (pp, scm_current_error_port ());
-  gh_newline ();
-  SCM p = gh_cons (pp, alist_chain);
-#endif
 
   Real staff_space = Staff_symbol_referencer::staff_space (me);
 
-  Axis align = X_AXIS;
+  Axis axis = X_AXIS;
+
+  /*
+    TODO:  change ALIGN into AXIS.
+   */
   SCM a = ly_assoc_chain (ly_symbol2scm ("align"), p);
-  if (gh_pair_p (a) && gh_number_p (gh_cdr (a)))
-    align = (Axis)gh_scm2int (gh_cdr (a));
+  if (gh_pair_p (a) && isaxis_b (gh_cdr (a)))
+    axis = (Axis)gh_scm2int (gh_cdr (a));
 
   Real baseline_skip = 0;
   SCM b = ly_assoc_chain (ly_symbol2scm ("baseline-skip"), p);
   if (gh_pair_p (b) && gh_number_p (gh_cdr (b)))
     baseline_skip = gh_scm2double (gh_cdr (b)) * staff_space;
   
-  Array<Real> kern (2);
-  kern[0] = 0; // zucht
-  kern[1] = 0;
+  Real kern[2] = {0,0};
+
   SCM k = ly_assoc_chain (ly_symbol2scm ("kern"), p);
   if (gh_pair_p (k) && gh_number_p (gh_cdr (k)))
-    kern[align] = gh_scm2double (gh_cdr (k)) * staff_space;
+    kern[axis] = gh_scm2double (gh_cdr (k)) * staff_space;
                             
   Real raise = 0;
   SCM r = ly_assoc_chain (ly_symbol2scm ("raise"), p);
   if (gh_pair_p (r) && gh_number_p (gh_cdr (r)))
     raise = gh_scm2double (gh_cdr (r)) * staff_space;
 
-  Offset o (0, (align == Y_AXIS ? - kern[align] : 0) + raise);
+  Offset o (0, (axis == Y_AXIS ? - kern[axis] : 0) + raise);
    
   Molecule mol;
   while (gh_pair_p (text))
@@ -165,16 +165,16 @@ Text_item::markup_text2molecule (Grob *me, SCM markup_text,
       if (gh_pair_p (gh_car (text)))
        m_p = gh_cons (gh_call2 (f, sheet, gh_caar (text)), alist_chain);
       SCM m_k = ly_assoc_chain (ly_symbol2scm ("kern"), m_p);
-      Real m_kern = kern[align];
+      Real m_kern = kern[axis];
       if (gh_pair_p (m_k) && gh_number_p (gh_cdr (m_k)))
        m_kern = gh_scm2double (gh_cdr (m_k)) * staff_space;
 
       if (!m.empty_b ())
        {
          m.translate (o);
-         if (align == Y_AXIS && baseline_skip)
+         if (axis == Y_AXIS && baseline_skip)
            m_kern += baseline_skip - m.extent (Y_AXIS)[UP];
-         mol.add_at_edge (align, align == X_AXIS ? RIGHT : DOWN, m, m_kern);
+         mol.add_at_edge (axis, axis == X_AXIS ? RIGHT : DOWN, m, m_kern);
        }
       text = gh_cdr (text);
     }
index b44fae606f46b9dee963cd4bfa7705178aed46f1..8cfa8204bd42543df4c7b53c5350b67f57b7b7df 100644 (file)
@@ -125,7 +125,7 @@ ScoreContext = \translator {
        \consists "Swallow_performer"
 
        dynamicAbsoluteVolumeFunction = #default-dynamic-absolute-volume
-       instrumentEqualizer = #default-instrument-equaliser
+       instrumentEqualizer = #default-instrument-equalizer
 }
 \translator { \ScoreContext }
 
index 793d287a5faa196d1dad88512d86935a90b03dae..852def1a078da501ec93fb73a7d5bb572edeb6c6 100644 (file)
 (define (markup? x)
   (or (string? x) (list? x)))
 
-;; ugh: code dup ; merge.
-(define (object-type obj)
-  (cond
-   ((dir? obj) "direction")
-   ((number-pair? obj) "pair of numbers")
-   ((ly-input-location? obj) "input location")   
-   ((ly-grob? obj) "grob (GRaphical OBject)")
-   ((pair? obj) "pair")
-   ((integer? obj) "integer")
-   ((list? obj) "list")
-   ((symbol? obj) "symbol")
-   ((string? obj) "string")
-   ((boolean? obj) "boolean")
-   ((moment? obj) "moment")
-   ((number? obj) "number")
-   ((char? obj) "char")
-   ((input-port? obj) "input port")
-   ((output-port? obj) "output port")   
-   ((vector? obj) "vector")
-   ((procedure? obj) "procedure") 
-   ((boolean-or-symbol? obj) "boolean or symbol")
-   ((number-or-string? obj) "number or string")
-   ((number-or-boolean? obj) "number or boolean")
-   ((markup? obj) "markup (list or string)")
-   (else "unknown type")))
+(define (scheme? x) #t)
+
+(define type-p-name-alist
+  `(
+   (,dir? . "direction")
+   (,scheme? . "any type")
+   (,number-pair? . "pair of numbers")
+   (,ly-input-location? . "input location")   
+   (,ly-grob? . "grob (GRaphical OBject)")
+   (,duration? . "duration")
+   (,pair? . "pair")
+   (,integer? . "integer")
+   (,list? . "list")
+   (,symbol? . "symbol")
+   (,string? . "string")
+   (,boolean? . "boolean")
+   (,moment? . "moment")
+   (,ly-input-location? . "input location")
+   (,music? . "music")
+   (,number? . "number")
+   (,char? . "char")
+   (,input-port? . "input port")
+   (,output-port? . "output port")   
+   (,vector? . "vector")
+   (,procedure? . "procedure") 
+   (,boolean-or-symbol? . "boolean or symbol")
+   (,number-or-string? . "number or string")
+   (,number-or-boolean? . "number or boolean")
+   (,markup? . "markup (list or string)")
+   ))
+
+
+(define (match-predicate obj alist)
+  (if (null? alist)
+      "Unknown type"
+      (if (apply (caar alist) obj)
+         (cdar alist)
+         (match-predicate obj (cdr alist))
+         )
+      ))
 
+(define (object-type obj)
+  (match-predicate obj type-p-name-alist))
 
 (define (type-name  predicate)
-  (cond
-   ((eq? predicate dir?) "direction")
-   ((eq? predicate number-pair?) "pair of numbers")
-   ((eq? predicate ly-input-location?) "input location")   
-   ((eq? predicate ly-grob?) "Grob")
-   ((eq? predicate pair?) "pair")
-   ((eq? predicate integer?) "integer")
-   ((eq? predicate list?) "list")
-   ((eq? predicate symbol?) "symbol")
-   ((eq? predicate string?) "string")
-   ((eq? predicate boolean?) "boolean")
-   ((eq? predicate moment?) "moment")
-   ((eq? predicate number?) "number")
-   ((eq? predicate char?) "char")
-   ((eq? predicate input-port?) "input port")
-   ((eq? predicate output-port?) "output port")   
-   ((eq? predicate vector?) "vector")
-   ((eq? predicate procedure?) "procedure") 
-   ((eq? predicate boolean-or-symbol?) "boolean or symbol")
-   ((eq? predicate number-or-string?) "number or string")
-   ((eq? predicate markup?) "markup (list or string)")
-   (else "unknown type")))
-
+  (let ((entry (assoc predicate type-p-name-alist)))
+    (if (pair? entry) (cdr entry)
+       "unknown"
+       )))
 
 (define (uniqued-alist  alist acc)
   (if (null? alist) acc
index b7f91424376d82ff7dcd6d46e4fb06cd35b76d73..114d5f2de74a6026a71f7a7602344e3272878894 100644 (file)
 ;;
 ;;     PATH=$LILYPONDPREFIX/scm:<datadir>/scm
 ;;
-(eval-string (ly-gulp-file "documentation-lib.scm"))
-(eval-string (ly-gulp-file "engraver-documentation-lib.scm"))
-(eval-string (ly-gulp-file "backend-documentation-lib.scm"))
+(eval-string
+ (apply string-append
+ (map ly-gulp-file '("documentation-lib.scm"
+                               "engraver-documentation-lib.scm"
+                               "music-documentation-lib.scm"
+                               "backend-documentation-lib.scm"))))
 
 ;;(define no-copies #t)  ; from 490 to 410K, but doesn't look nice yet
 ;;
@@ -28,6 +31,7 @@
 (define no-copies #f)
 
 (let* ((doc (string-append
+            (document-music "LilyPond music properties") 
             (document-paper "LilyPond interpretation contexts")
             (document-all-engravers "LilyPond engravers")
             (document-all-engraver-properties "LilyPond context properties")        
@@ -47,7 +51,9 @@
      
      ;; we can't use (dir) and top if we're included by lilypond.tely
      "LilyPond internals" name "(lilypond.info)"
-     '(("LilyPond interpretation contexts" . "Hierarchy and grouping of Engravers")
+     '(
+       ("LilyPond music properties" . "properties for Music representation")
+       ("LilyPond interpretation contexts" . "Hierarchy and grouping of Engravers")
        ("LilyPond engravers" . "Engravers create Grobs")
        ("LilyPond context properties" . "context properties")       
        ("LilyPond backend" . "Detailed description of all Grobs")
index 352dc965412ffba4b67bfe2befb9c7fc04e9f2f5..75f2ab04e5fb8470353b09c1e022aa42a131a25b 100644 (file)
           "slur.scm"
           "font.scm"
           "music-functions.scm"
+          "music-property-description.scm"
           "auto-beam.scm"
           "generic-property.scm"
           "basic-properties.scm"
index d44492d961e87e56b900779ea9a63cdc48d343d3..46cb81c803e412000f430a46c454a2ff53356c24 100644 (file)
@@ -32,8 +32,8 @@
        (cdr entry))))
 
 ;; define factors of total volume of minimum and maximum volume
-(define instrument-equaliser-alist '())
-(set! instrument-equaliser-alist
+(define instrument-equalizer-alist '())
+(set! instrument-equalizer-alist
       (append 
        '(
         ("flute" . (0 . 0.7))
@@ -48,7 +48,7 @@
         ("cello" . (0.2 . 0.8))
         ("contrabass" . (0.2 . 0.8))
         )
-       instrument-equaliser-alist))
+       instrument-equalizer-alist))
 
 ;; (name . program+32768*(channel10 ? 1 : 0) )
 (define instrument-names-alist '())
 )
 
 
-(define (default-instrument-equaliser s)
-  (let ((entry (assoc s instrument-equaliser-alist)))
+(define (default-instrument-equalizer s)
+  (let ((entry (assoc s instrument-equalizer-alist)))
     (if entry
        (cdr entry))))
 
diff --git a/scm/music-documentation-lib.scm b/scm/music-documentation-lib.scm
new file mode 100644 (file)
index 0000000..f4dc0cc
--- /dev/null
@@ -0,0 +1,30 @@
+
+
+(define (music-property->texi sym)
+  (let* ((name (symbol->string sym))
+       (type (object-property sym 'music-type?))
+       (typename (type-name type))
+       (desc (object-property sym 'music-doc)))
+
+    (cons (string-append "@code{" name "} "
+                      "(" typename ")"
+                      ": "
+                      )
+         desc)))
+
+(define (document-music name)
+  (let* (
+       (ps (sort (map symbol->string all-music-properties) string<?))
+       (descs (map (lambda (prop)
+                    (music-property->texi (string->symbol prop)))
+                  ps))
+       (texi (description-list->texi descs))
+       )
+    
+    (string-append
+     (node name)
+     (texi-section 1 name #f)
+     texi)
+  ))
+  
+  
index ce6c91e7ee65a38d77a2a455e5d4d2ddad3b58ae..bcc035a1c4d6e2f5727f52fe87c5f4a582538a8f 100644 (file)
        (exit 2)
       ))
  (set-object-property! symbol 'music-type? type?)
-  (set-object-property! symbol 'music-doc description)
-  (set! all-music-properties (cons symbol all-music-properties))
-  )
+ (set-object-property! symbol 'music-doc description)
+ (set! all-music-properties (cons symbol all-music-properties))
+ )
+
 
-(define (true? x) #t)
 
 (music-property-description 'iterator-ctor c++-function? "Function to construct music-event-iterator object for this Music")
-(music-property-description 'duration duration? "")
+(music-property-description 'duration duration? "Duration of this note/lyric.")
 (music-property-description 'metronome-count number? "How many beats in a minute?")
 (music-property-description 'span-type symbol? "What kind of spanner should be created?")
 (music-property-description 'alternatives music? "Music_sequence of alternatives for repeated music.")
 (music-property-description 'articulation-type symbol? "key for scriptDefinitions alist")
-(music-property-description 'bass boolean? "")
-(music-property-description 'body music? "")
-(music-property-description 'cautionary boolean? "")
-(music-property-description 'change-to-id string? "")
-(music-property-description 'change-to-type string? "")
-(music-property-description 'context-id string? "")
-(music-property-description 'context-type string?  "")
-(music-property-description 'denominator integer? "")
-(music-property-description 'direction dir? "")
-(music-property-description 'text-type symbol? "")
-(music-property-description 'element music )
-(music-property-description 'grob-property symbol? "")
-(music-property-description 'grob-value true? "")
-(music-property-description 'elements list? "")
-(music-property-description 'force-accidental boolean? "")
-(music-property-description 'inversion boolean? "")
-(music-property-description 'label string? "")
-(music-property-description 'last-pitch pitch? "")
-(music-property-description 'length procedure? "")
-(music-property-description 'lyrics music? "")
-(music-property-description 'mark-label string? "")
-(music-property-description 'numerator integer? "")
-(music-property-description 'one music? ""); part-combine, fixme, naming.
-(music-property-description 'origin input? "")
-(music-property-description 'penalty number? "")
-(music-property-description 'pitch pitch? "")
-(music-property-description 'pitch-alist list? "")
-(music-property-description 'predicate procedure? "")
-(music-property-description 'type symbol? "")
-(music-property-description 'repeat-count  integer? "")
-(music-property-description 'span-direction dir? "")
-(music-property-description 'symbol symbol? "")
-(music-property-description 'symbols list? "")
-(music-property-description 'tempo duration? "")
-(music-property-description 'text string? "");; markup?
+(music-property-description 'bass boolean? "Set if this note is a bass note in a chord")
+(music-property-description 'body music? "The body of a repeat ")
+(music-property-description 'cautionary boolean? "If set, this alteration needs cautionary accidental")
+(music-property-description 'change-to-id string? "name of the context to change to ")
+(music-property-description 'change-to-type string? "type of the context to change to.")
+(music-property-description 'context-id string? "name of context")
+(music-property-description 'context-type string?  "type of context")
+(music-property-description 'denominator integer? "denominator in a time signature")
+(music-property-description 'direction dir? "Print this up or down?")
+(music-property-description 'text-type symbol? "Particular type of text script (eg. finger, dynamic).")
+(music-property-description 'element music? "The single child of a Music_wrapper music object.")
+(music-property-description 'grob-property symbol? "The symbol of the grob property to set. ")
+(music-property-description 'grob-value scheme? "The value of the grob property to set")
+(music-property-description 'elements list? "A list of elements for sequential of simultaneous music")
+(music-property-description 'force-accidental boolean? "If set, a cautionary accidental should always be printed on this note")
+(music-property-description 'inversion boolean? "If set, this chord note is inverted.")
+(music-property-description 'label string? "label of a mark.")
+(music-property-description 'last-pitch pitch? "The last pitch after relativization.")
+(music-property-description 'length procedure? "How to compute the duration of this music")
+(music-property-description 'lyrics music? "second argument of a addlyrics")
+(music-property-description 'numerator integer? "numerator of a time signature")
+(music-property-description 'one music? "first argument of partcombine."); part-combine, fixme, naming.
+(music-property-description 'origin ly-input-location? "where was this piece of music defined?")
+(music-property-description 'penalty number? "Penalty for break hint.")
+(music-property-description 'pitch pitch? "the pitch of this note")
+(music-property-description 'pitch-alist list? "list of pitches jointly forming the scale of a key signature")
+(music-property-description 'predicate procedure? "the predicate of a \outputproperty")
+(music-property-description 'type symbol? "The type of this music object. Determines iteration in some cases.")
+(music-property-description 'repeat-count  integer? "do a @code{\repeat} how ofen?")
+(music-property-description 'span-direction dir? "Does this start or stop a spanner?")
+(music-property-description 'symbols list? "List of Grob names (symbols) to perform an override/revert on.")
+(music-property-description 'text string? "markup expression to be printed");; markup?
 (music-property-description 'tremolo-type integer? "")
-(music-property-description 'two music? ""); part-combine, fixme, naming.
-(music-property-description 'value true? "")
-(music-property-description 'what string? "")
+(music-property-description 'two music? "2nd argument of a part-combine"); part-combine, fixme, naming.
+
+(music-property-description 'what string? "What to change for auto-change. FIXME, naming")
index 8f91636ac366cd51c8fe663bac28667802e8da3f..8d4e312a9083afdddf15d1eda52fce3337efa6a9 100644 (file)
@@ -198,6 +198,9 @@ remembered for the duration of a measure.
     property is used to label subsequent lines.  If the
     @code{midiInstrument} property is not set, then @code{instrument}
     is used to determine the instrument for MIDI output.")
+
+(translator-property-description 'instrumentEqualizer procedure? "[DOCUMENT-ME]")
+                                
 (translator-property-description 'keyAccidentalOrder list? "
 Alist that defines in what order  alterations should be printed.
 The format is (NAME . ALTER), where NAME is from 0 .. 6 and ALTER from  -1, 1.
index 1018a71263fdd3f633ede4bad6f7f217b525b90b..7d35e1539f24e7138f7fe5b8996f1b9274623cf6 100644 (file)
@@ -818,6 +818,7 @@ if 1:
                return str
        conversions.append (((1,3,147), conv, 'default-neutral-direction -> neutral-direction'))
 
+
 ################################
 #      END OF CONVERSIONS      
 ################################