;; The TabNoteHead stem attachment function.
(define (tablature-stem-attachment-function style duration)
- (cons 0.0 0.5))
+ (cons 0.0 1.35))
;; The TabNoteHead tablatureFormat callback.
;; Compute the text grob-property
(define-public (fret-number-tablature-format string tuning pitch)
- (number->string
- (- (ly:pitch-semitones pitch)
- (list-ref tuning
- ;; remove 1 because list index starts at 0 and guitar string at 1.
- (- string 1)))))
+ (make-whiteout-markup
+ (make-vcenter-markup
+ (number->string
+ (- (ly:pitch-semitones pitch)
+ (list-ref tuning
+ ;; remove 1 because list index starts at 0 and guitar string at 1.
+ (- string 1)))))))
;; The 5-string banjo has got a extra string, the fifth (duh), wich
;; starts at the fifth fret on the neck. Frets on the fifth string
;; on the banjo neck.
;; We solve this by defining a new fret-number-tablature function:
(define-public (fret-number-tablature-format-banjo string tuning pitch)
+ (make-whiteout-markup
+ (make-vcenter-markup
(let ((fret (- (ly:pitch-semitones pitch) (list-ref tuning (- string 1)))))
- (number->string (cond
- ((and (> fret 0) (= string 5))
- (+ fret 5))
- (else fret)))))
-
-(define-public (hammer-print-function grob)
- (let* ((note-collums (ly:grob-property grob 'note-columns))
- (note-column1 (cadr note-collums))
- (note-column2 (car note-collums))
- (note1 (car (ly:grob-property note-column1 'note-heads)))
- (note2 (car (ly:grob-property note-column2 'note-heads)))
- (text1 (ly:grob-property note1 'text))
- (text2 (ly:grob-property note2 'text))
- (fret1 (if (string? text1) (string->number text1) 0))
- (fret2 (if (string? text2) (string->number text2) 0))
- (letter (cond
- ((< fret1 fret2) "H")
- ((> fret1 fret2) "P")
- (else ""))))
- (let* ((slur
- ;; (Slur::print grob)
-
- ;;
- ;; FIXME: a hammer is not a slur.
- ;;
- (ly:make-stencil '() '(0 . 0) '(0 . 0)))
- (layout (ly:grob-layout grob))
- (text (interpret-markup
- layout
- (ly:grob-alist-chain grob (ly:output-def-lookup layout 'text-font-defaults))
- letter)))
-
- (let ((x (/ (- (cdr (ly:stencil-extent slur 0))
- (/ (cdr (ly:stencil-extent text 0)) 2.0))
- -2.0)))
-
- (set! text
- (ly:make-stencil (ly:stencil-expr text)
- (cons x x)
- (ly:stencil-extent text Y)))
-
- (ly:stencil-aligned-to text X RIGHT)))))
+ (number->string (cond
+ ((and (> fret 0) (= string 5))
+ (+ fret 5))
+ (else fret)))))))
(define-public guitar-tuning '(4 -1 -5 -10 -15 -20))
(number->string duration)))
((mensural)
(string-append (number->string duration) (symbol->string style)))
+ ((petrucci)
+ (if (< duration 0)
+ (string-append (number->string duration) "mensural")
+ (string-append (number->string duration) (symbol->string style))))
((neomensural)
(string-append (number->string duration) (symbol->string style)))
((default)
(define-public (default-bar-number-visibility barnum) (> barnum 1))
;; See documentation of Item::visibility_lambda_
-(define-safe-public (begin-of-line-visible d) (if (= d 1) '(#f . #f) '(#t . #t)))
-(define-safe-public (end-of-line-visible d) (if (= d -1) '(#f . #f) '(#t . #t)))
-(define-safe-public (spanbar-begin-of-line-invisible d) (if (= d -1) '(#t . #t) '(#f . #f)))
-
-(define-safe-public (all-visible d) '(#f . #f))
-(define-safe-public (all-invisible d) '(#t . #t))
-(define-safe-public (begin-of-line-invisible d) (if (= d 1) '(#t . #t) '(#f . #f)))
-(define-safe-public (center-invisible d) (if (= d 0) '(#t . #t) '(#f . #f)))
-(define-safe-public (end-of-line-invisible d) (if (= d -1) '(#t . #t) '(#f . #f)))
-
+(define-public begin-of-line-visible
+ #(#f #f #t))
+(define-public end-of-line-visible
+ #(#t #f #f))
+(define-public end-of-line-invisible
+ #(#f #t #t))
+(define-public spanbar-begin-of-line-invisible
+ #(#t #f #f))
+(define-public all-visible #(#t #t #t))
+(define-public all-invisible #(#f #f #f))
+(define-public begin-of-line-invisible
+ #(#t #t #f))
+(define-public center-invisible #(#t #f #t))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Bar lines.
(define-public darkcyan '(0.5 0.5 0.0))
(define-public darkmagenta '(0.5 0.0 0.5))
(define-public darkyellow '(0.0 0.5 0.5))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Pitch Trill Heads
+
+(define (parenthesize-elements grob)
+ (let*
+ ((elts (ly:grob-object grob 'elements))
+ (x-ext (ly:relative-group-extent elts grob X))
+ (font (ly:grob-default-font grob))
+ (lp (ly:font-get-glyph font "accidentals.leftparen"))
+ (rp (ly:font-get-glyph font "accidentals.rightparen"))
+ (padding 0.1))
+
+ (ly:stencil-add
+ (ly:stencil-translate-axis lp (- (car x-ext) padding) X)
+ (ly:stencil-translate-axis rp (+ (cdr x-ext) padding) X))
+ ))