16 Oct 2022

How to add new fingering diagram for 7 traditional flute with 7 finger holes to Lilypond

This is for Lilypond version 2.22.1.

Only display-woodwind-diagram.scm is modified.

At first I made a list of the positions of 7 holes from general use one.

I made it by copying general use one.

I added "TFL-" to the beginning of CENTRAL-COLUMN-HOLE-PLACEMENTS etc.

;;For Traditional flute
(define TFL-CENTRAL-COLUMN-HOLE-PLACEMENTS '((one . (0.0 . 7.0))
                                         (two . (0.0 . 6.0))
                                         (three . (0.0 . 5.0))
                                         (four . (0.0 . 3.5))
                                         (five . (0.0 . 2.5))
                                         (six . (0.0 . 1.5))
                                         (seven . (0.0 . 0.0))))                            
(define TFL-CENTRAL-COLUMN-HOLE-LIST (map car TFL-CENTRAL-COLUMN-HOLE-PLACEMENTS))
(define TFL-CENTRAL-COLUMN-HOLE-H-LIST (cons 'h TFL-CENTRAL-COLUMN-HOLE-LIST))


I modified the configuration for Tin-whistle. The name was changed to traditional-flute. I added the configuration for 7th hole and 2nd mid line.

I tried the positions for mid lines.


;;; Traditional flute with 7holes assembly instructions

(define traditional-flute-change-points
  ((make-named-spreadsheet '(traditional-flute)) '()))
 

(define (generate-traditional-flute-family-entry traditional-flute-name)
  (let*
      ((change-points
        (get-named-spreadsheet-column traditional-flute-name traditional-flute-change-points)))
    `(,traditional-flute-name
      . ((keys
          . ((hidden
              . ((midline
                  . ((offset . (0.0 . 0.0))
                     (stencil . ,midline-stencil)
                     (text? . #f)
                     (complexity . basic))))
              )
             (central-column
              . ((one
                  . ((offset . ,(assoc-get 'one TFL-CENTRAL-COLUMN-HOLE-PLACEMENTS))
                     (stencil . ,column-circle-stencil)
                     (text? . #f)
                     (complexity . covered)))
                 (two
                  . ((offset . ,(assoc-get 'two TFL-CENTRAL-COLUMN-HOLE-PLACEMENTS))
                     (stencil . ,column-circle-stencil)
                     (text? . #f)
                     (complexity . covered)))
                 (three
                  . ((offset . ,(assoc-get 'three TFL-CENTRAL-COLUMN-HOLE-PLACEMENTS))
                     (stencil . ,column-circle-stencil)
                     (text? . #f)
                     (complexity . covered)))
                 (four
                  . ((offset . ,(assoc-get 'four TFL-CENTRAL-COLUMN-HOLE-PLACEMENTS))
                     (stencil . ,column-circle-stencil)
                     (text? . #f)
                     (complexity . covered)))
                 (five
                  . ((offset . ,(assoc-get 'five TFL-CENTRAL-COLUMN-HOLE-PLACEMENTS))
                     (stencil . ,column-circle-stencil)
                     (text? . #f)
                     (complexity . covered)))
                  (six
                  . ((offset . ,(assoc-get 'six TFL-CENTRAL-COLUMN-HOLE-PLACEMENTS))
                     (stencil . ,column-circle-stencil)
                     (text? . #f)
                     (complexity . covered)))
                 (seven
                  . ((offset . ,(assoc-get 'seven TFL-CENTRAL-COLUMN-HOLE-PLACEMENTS))
                     (stencil . ,column-circle-stencil)
                     (text? . #f)
                     (complexity . covered)))))
             (left-hand . ())
             (right-hand . ())))
         (graphical-commands
          . ((stencil-alist
              . ((stencils
                  . (,(simple-stencil-alist '(hidden . midline) '(0.0 . 4.25)) 
                  ,(simple-stencil-alist '(hidden . midline) '(0.0 . 0.75))
                     ((stencils
                       . ,(make-central-column-hole-addresses
                           TFL-CENTRAL-COLUMN-HOLE-LIST))
                      (xy-scale-function . (,identity . ,identity))
                      (textual? . #f)
                      (offset . (0.0 . 0.0)))) )
                 (xy-scale-function . (,identity . ,identity))
                 (textual? . #f)
                 (offset . (0.0 . 0.0))))
             (draw-instructions
              . ((,group-automate-rule
                  ,(make-central-column-hole-addresses TFL-CENTRAL-COLUMN-HOLE-LIST))
                 (,group-automate-rule ((hidden . midline)))))
             (extra-offset-instructions
              . ((,uniform-extra-offset-rule (0.0 . 0.0))))))
         (text-commands
          . ((stencil-alist
              . ((stencils .
                           (,(simple-stencil-alist '(hidden . midline) '(0.0 . 3.75))
                            ((stencils
                              . ,(make-central-column-hole-addresses
                                  TFL-CENTRAL-COLUMN-HOLE-LIST))
                             (xy-scale-function . (,identity . ,identity))
                             (textual? . #f)
                             (offset . (1.0 . 0.0)))))
                 (xy-scale-function . (,identity . ,identity))
                 (textual? . #f)
                 (offset . (0.0 . 0.0))))
             (draw-instructions
              . ((,group-automate-rule
                  ,(make-central-column-hole-addresses TFL-CENTRAL-COLUMN-HOLE-LIST))
                 (,group-automate-rule ((hidden . midline)))))
             (extra-offset-instructions
              . ((,uniform-extra-offset-rule (0.0 . 0.0))))))
              ))))


How to use:

{
 
c'1 _\markup {
    \center-column {
      \override #'(size . 0.7) {
\woodwind-diagram #'traditional-flute #'((cc . (oneF two three four five six seven))
                             (lh . ())
                             (rh . ())) }}}
}