]> git.donarmstrong.com Git - lilypond.git/commitdiff
Fix warning message in predefined fretboards
authorCarl Sorensen <c_sorensen@byu.edu>
Tue, 24 Nov 2009 04:56:30 +0000 (21:56 -0700)
committerCarl Sorensen <c_sorensen@byu.edu>
Tue, 24 Nov 2009 05:00:23 +0000 (22:00 -0700)
When a predefined fretboard is found, don't try to calculate
a fretboard.  Previously, even though the predefined fretboard
was used, the strings and frets for an automatic fretboard were
calculated.  This created a warning message if the chord notes used
were below the range of the instrument, even if a predefined fretboard
exists for those notes.

scm/translation-functions.scm

index 3fb632bb622381d13dd13fb90b77a63fa22a6e83..b6e5d309d8c005d883fa5048f19f08f0b1ce8ed9 100644 (file)
@@ -1,7 +1,7 @@
 ;;;; translation-functions.scm --
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
-;;;; 
+;;;;
 ;;;; (c) 1998--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                Jan Nieuwenhuizen <janneke@gnu.org>
 
 ;; fret diagrams
 
 (define-public (determine-frets context grob notes string-numbers)
-  
+
   (define (ensure-number a b)
     (if (number? a)
        a
                         (fret (cadr sf))
                         (finger (caddr sf)))
 
-                   (vector-set! 
+                   (vector-set!
                     desc (1- string)
                     (if (= 0 fret)
                         (list 'open string)
                string-frets)
 
       (vector->list desc)))
-    
+
   (define (get-predefined-fretboard predefined-fret-table tuning pitches)
 ;   (_i "Search through @var{predefined-fret-table} looking for a predefined
 ;fretboard with a key of @var{(tuning . pitches)}.  The search will check
     (let ((test-fretboard (get-fretboard (cons tuning pitches))))
       (if (not (null? test-fretboard))
          test-fretboard
-         (let ((test-fretboard 
+         (let ((test-fretboard
                 (get-fretboard
                  (cons tuning (map (lambda (x) (shift-octave x 1)) pitches)))))
            (if (not (null? test-fretboard))
                test-fretboard
-               (get-fretboard 
+               (get-fretboard
                 (cons tuning (map (lambda (x) (shift-octave x -1))
                                   pitches))))))))
 
         (my-string-count (length tunings))
         (details (ly:grob-property grob 'fret-diagram-details))
         (predefined-frets
-         (ly:context-property context 'predefinedDiagramTable)) 
-        (minimum-fret (ensure-number
-                       (ly:context-property context 'minimumFret) 0))
-        (max-stretch (ensure-number
-                      (ly:context-property context 'maximumFretStretch) 4))
-        (string-frets (determine-frets-mf notes string-numbers
-                                          minimum-fret max-stretch
-                                          tunings))
-        (pitches (map (lambda (x) (ly:event-property x 'pitch)) notes)))
+         (ly:context-property context 'predefinedDiagramTable))
+        (pitches (map (lambda (x) (ly:event-property x 'pitch)) notes))
+         (predefined-fretboard
+          (if predefined-frets
+              (get-predefined-fretboard
+               predefined-frets
+               tunings
+               pitches)
+              '())))
 
     (set! (ly:grob-property grob 'fret-diagram-details)
-
           (if (null? details)
-              (acons 'string-count (length tunings) '())
-              (acons 'string-count (length tunings) details)))
+              (acons 'string-count my-string-count '())
+              (acons 'string-count my-string-count details)))
 
     (set! (ly:grob-property grob 'dot-placement-list)
-         (if predefined-frets
-             (let ((predefined-fretboard 
-                    (get-predefined-fretboard
-                      predefined-frets
-                      tunings
-                      pitches)))
-               (if (null? predefined-fretboard)
-                   (string-frets->dot-placement 
-                    string-frets my-string-count)  ;no predefined diagram
-                   predefined-fretboard)) ;found default diagram
-             (string-frets->dot-placement string-frets my-string-count)))))
+          (if (not (null? predefined-fretboard))
+              predefined-fretboard
+              (let ((minimum-fret
+                     (ensure-number
+                      (ly:context-property context 'minimumFret)
+                      0))
+                    (max-stretch
+                     (ensure-number
+                      (ly:context-property context 'maximumFretStretch)
+                      4))
+                    (string-frets
+                     (determine-frets-mf
+                       notes
+                       string-numbers
+                       minimum-fret
+                       max-stretch
+                       tunings)))
+               (string-frets->dot-placement
+                 string-frets
+                  my-string-count))))))
 
 (define-public (determine-frets-mf notes string-numbers
                                   minimum-fret max-stretch
 
   (define specified-frets '())
   (define free-strings '())
-  
+
   (define (close-enough fret)
     (reduce
      (lambda (x y)
    (lambda (note)
      (if (note-string note)
         (set-fret note (note-string note))
-        (let* ((fit-string (find (lambda (string) 
+        (let* ((fit-string (find (lambda (string)
                                    (string-qualifies string (note-pitch note)))
                                  free-strings)))
           (if fit-string
               (set-fret note fit-string)
-              (ly:warning "No string for pitch ~a (given frets ~a)" 
+              (ly:warning "No string for pitch ~a (given frets ~a)"
                            (note-pitch note)
                           specified-frets)))))
    (sort notes note-pitch>?))