]> git.donarmstrong.com Git - lilypond.git/commitdiff
Fix #229.
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Tue, 9 Jan 2007 13:57:00 +0000 (14:57 +0100)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Tue, 9 Jan 2007 13:57:00 +0000 (14:57 +0100)
Also use rationals for figured bass accidentals.

input/regression/figured-bass-alteration.ly [new file with mode: 0644]
lily/parser.yy
scm/chord-name.scm

diff --git a/input/regression/figured-bass-alteration.ly b/input/regression/figured-bass-alteration.ly
new file mode 100644 (file)
index 0000000..bc910f7
--- /dev/null
@@ -0,0 +1,22 @@
+
+\header {
+  texidoc = "Bass figures can carry alterations."
+}
+
+\version "2.11.10"
+
+\layout {
+  ragged-right= ##t
+}
+
+\relative c'' {
+  \new Voice 
+  <<
+    { c4 c c }
+    \figures
+    {
+      <3- > <3! > <3+ >
+    }
+  >>
+}
+    
index d1095308d5d3b616cd1fb84bb0cb5b6d5d3fceab..02f03dea92fd941e8a4646e24f94be083b360b72 100644 (file)
@@ -300,7 +300,7 @@ If we give names, Bison complains.
 %type <book> book_body
 
 %type <i> bare_unsigned
-%type <i> figured_bass_alteration
+%type <scm> figured_bass_alteration
 %type <i> dots
 %type <i> exclamations
 %type <i> optional_rest
@@ -1824,9 +1824,9 @@ bass_number:
        ;
 
 figured_bass_alteration:
-       '-'     { $$ = -2; }
-       | '+'   { $$ = 2; }
-       | '!'   { $$ = 0; }
+       '-'     { $$ = ly_rational2scm (FLAT_ALTERATION); }
+       | '+'   { $$ = ly_rational2scm (SHARP_ALTERATION); }
+       | '!'   { $$ = scm_from_int (0); }
        ;
 
 bass_figure:
@@ -1851,11 +1851,11 @@ bass_figure:
        }
        | bass_figure figured_bass_alteration {
                Music *m = unsmob_music ($1);
-               if ($2) {
+               if (scm_to_double ($2)) {
                        SCM salter = m->get_property ("alteration");
-                       int alter = scm_is_number (salter) ? scm_to_int (salter) : 0;
+                       SCM alter = scm_is_number (salter) ? salter : scm_from_int (0);
                        m->set_property ("alteration",
-                               scm_from_int (alter + $2));
+                                        scm_sum (alter, $2));
                } else {
                        m->set_property ("alteration", scm_from_int (0));
                }
index c941d50bda8d2acd3cf032ad397c8d728c441c6a..939ae7b91eebf91940af60650e9b11a96621a03a 100644 (file)
@@ -15,6 +15,7 @@
 ;; TODO: make into markup.
 ;; 
 (define-public (alteration->text-accidental-markup alteration)
+  
   (make-smaller-markup
    (make-raise-markup
     (if (= alteration FLAT)