]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.3.46
authorfred <fred>
Tue, 26 Mar 2002 23:21:22 +0000 (23:21 +0000)
committerfred <fred>
Tue, 26 Mar 2002 23:21:22 +0000 (23:21 +0000)
Documentation/regression-test.tely
input/test/chord-names.ly [new file with mode: 0644]
lily/chord-name.cc
scm/chord-names.scm

index dc4a9de032c0a67872deab670458965735bf3ec2..82025c42ef5624938f64fd9914238112508ff2a4 100644 (file)
@@ -101,6 +101,14 @@ not be on staff lines.
 
 @mudelafile{staccato-pos.ly}
 
+@section Chord names
+
+Chord names are generated from a list pitches, and are customisable
+from guile.  For some unlogical names, guile customisation is used
+by default.
+
+@mudelafile{chord-names.ly}
+
 @section Grace notes
 
 Grace notes are typeset as an encapsulated piece of music. You can
diff --git a/input/test/chord-names.ly b/input/test/chord-names.ly
new file mode 100644 (file)
index 0000000..87e82c4
--- /dev/null
@@ -0,0 +1,24 @@
+chord = \notes\transpose c''\chords{
+   c1
+   c:m
+   c:m5-
+   c:m5-.7-
+   c:7+
+   c:m5-.7
+   c:5-.7+
+   c:m7
+   c:7
+}
+
+\score{
+    <
+           \context ChordNames \chord
+           \context Staff \chord
+    >
+    \paper{
+       linewidth = -1.0;
+        \translator { \ChordNameContext chordNameWordSpace = #1 }
+        \translator { \LyricsContext textScriptWordSpace = #0.3 }
+    }
+}
+
index 27e3342e51e7ecd34de67b75593a881206ad6083..75a16226c95d9e76a2c55a2cc8f1bc0c185f9e22 100644 (file)
@@ -31,11 +31,14 @@ Chord_name::ly_word2molecule (SCM scm) const
   String style;
   if (gh_pair_p (scm))
     {
-      style = ly_scm2string (gh_car (scm));
+      SCM s = gh_car (scm);
+      if (gh_string_p (s))
+       style = ly_scm2string (s);
       scm = gh_cdr (scm);
     }
-  String text = ly_scm2string (scm);
-  return lookup_l ()->text (style, text, paper_l ());
+  if (gh_string_p (scm))
+    return lookup_l ()->text (style, ly_scm2string (scm), paper_l ());
+  return Molecule ();
 }
 
 /*
@@ -51,12 +54,16 @@ Chord_name::ly_text2molecule (SCM scm) const
     {
       while (gh_cdr (scm) != SCM_EOL)
         {
-         mol.add_at_edge (X_AXIS, RIGHT, ly_word2molecule (gh_car (scm)), 0);
+         Molecule m = ly_word2molecule (gh_car (scm));
+         if (!m.empty_b ())
+           mol.add_at_edge (X_AXIS, RIGHT, m, 0);
          scm = gh_cdr (scm);
        }
       scm = gh_car (scm);
     }  
-  mol.add_at_edge (X_AXIS, RIGHT, ly_word2molecule (scm), 0);
+  Molecule m = ly_word2molecule (scm);
+  if (!m.empty_b ())
+    mol.add_at_edge (X_AXIS, RIGHT, m, 0);
   return mol;
 }
 
@@ -78,9 +85,17 @@ Chord_name::pitch2molecule (Musical_pitch p) const
     We want the smaller size, even if we're big ourselves.
    */
   if (p.accidental_i_)
-    mol.add_at_edge (X_AXIS, RIGHT, 
+    {
+      Molecule acc = paper_l ()->lookup_l (-3)->afm_find
+       (String ("accidentals-") + to_str (p.accidental_i_));
+      // urg, howto get a good superscript_y?
+      Real super_y = lookup_l ()->text ("", "x", paper_l ()).extent
+       ()[Y_AXIS].length () / 2;
+      super_y += -acc.extent ()[Y_AXIS][MIN];
+      acc.translate_axis (super_y, Y_AXIS);
+      mol.add_at_edge (X_AXIS, RIGHT, acc, 0.0);
+    }
                     
-                    paper_l ()->lookup_l (-2)->afm_find (String ("accidentals-") + to_str (p.accidental_i_)), 0.0);
   return mol;
 }
 
@@ -282,7 +297,8 @@ Chord_name::do_brew_molecule () const
     }
 
   // urg, howto get a good superscript_y?
-  Real super_y = lookup_l ()->text ("", "x", paper_l ()).dim_.y ().length ()/2;
+  Real super_y = lookup_l ()->text ("", "x", paper_l ()).extent
+    ()[Y_AXIS].length () / 2;
   if (!name.addition_mol.empty_b ())
     name.addition_mol.translate (Offset (0, super_y));
 
index a5a428d649affda0a3e5c768f5e2554e0474bafb..7a8777fbc72adf80fdd64ab9a1b07158364494f6 100644 (file)
@@ -20,7 +20,7 @@
       note-names-alist))
 
 (define (pitch->note-name pitch)
-  (cons (car pitch) (cadr pitch)))
+  (cons (cadr pitch) (caddr pitch)))
   
 (define (user-pitch-name pitch)
   (let ((entry (assoc (pitch->note-name pitch) note-names-alist)))
       (append 
       '(
        ; C iso C.no3.no5
-       (((0 . 0)) . ("" . ""))
+       (((0 . 0)) . (#f . #f))
        ; C iso C.no5
-       (((0 . 0) (2 . 0)) . ("" . ""))
+       (((0 . 0) (2 . 0)) . (#f . #f))
        ; Cm iso Cm.no5
-       (((0 . 0) (2 . -1)) . ("m" . ""))
+       (((0 . 0) (2 . -1)) . ("m" . #f))
        ; Cdim iso Cm5-
-       (((0 . 0) (2 . -1) (4 . -1)) . ("dim" . ""))
+       (((0 . 0) (2 . -1) (4 . -1)) . ("dim" . #f))
        ; Co iso Cm5-7-
        ; urg
         ; (((0 . 0) (2 . -1) (4 . -1) (6 . -2)) . ("" . ("feta-1" . ".")))
-        (((0 . 0) (2 . -1) (4 . -1) (6 . -2)) . ("" . ("script" . "o")))
+        (((0 . 0) (2 . -1) (4 . -1) (6 . -2)) . (#f . ("script" . "o")))
        ; Cdim9
        (((0 . 0) (2 . -1) (4 . -1) (6 . -2) (1 . -1)) . ("dim" . ("script" . "9")))
        (((0 . 0) (2 . -1) (4 . -1) (6 . -2) (1 . -1) (3 . -1)) . ("dim" . ("script" . "11")))