On 21.05.2015, at 02:44, Thomas Morley <[email protected]> wrote:
> 2015-05-20 13:16 GMT+02:00 pls <[email protected]>:
>>
>>
>> Begin forwarded message:
>>
>> From: pls <[email protected]>
>> Subject: Re: how to add barre indications to automatic fret diagrams?
>> Date: 20. Mai 2015 13:12:30 MESZ
>> To: Stephen MacNeil <[email protected]>
>>
>> Hi Stephen,
>> On 20.05.2015, at 13:02, Stephen MacNeil <[email protected]> wrote:
>>
>> sorry forgot one
>>
>> \version "2.18.2"
>> barre = #(define-music-function (barre location str ) (number?)
>> #{
>> \once \override FretBoard.before-line-breaking =
>> #(lambda (grob)
>> ;(display (ly:grob-property grob 'dot-placement-list))
>> (ly:grob-set-property! grob 'dot-placement-list
>> (cons `(barre 6 1 ,str) (ly:grob-property grob 'dot-placement-list))))
>>
>> #})
>> fMajorEShape = { <f,-1 c-3 f-4 a-2 c'-1 f'-1> }
>> gMajorEShape = { \transpose f g { \fMajorEShape } }
>>
>> \new FretBoards {
>> \barre #3
>> \transpose f g { \fMajorEShape }
>> \barre #4
>> \gMajorEShape
>> \barre #3
>> <g,-1 d-3 g-4 b-2 d'-1 g'-1>
>> \set FretBoards.minimumFret = #3
>> \barre #4
>> \gMajorEShape
>> }
>>
>>
>> Yes, that’s what I was looking for! Thank you very much! I cleaned it up a
>> little bit to get rid of some unnecessary bits and pieces (and to make it
>> easier to understand what it does):
>>
>> \version "2.19.15"
>>
>> barre = #(define-music-function (bend location str ) (number?)
>> #{
>> \once \override FretBoard.before-line-breaking =
>> #(lambda (grob)
>> ;(display (ly:grob-property grob 'dot-placement-list))
>> (ly:grob-set-property! grob 'dot-placement-list
>> (cons `(barre 6 1 ,str) (ly:grob-property grob
>> 'dot-placement-list))))
>> #})
>>
>> fMajorEShape = { <f,-1 c-3 f-4 a-2 c'-1 f'-1> }
>>
>> \new FretBoards {
>> \barre #1
>> \fMajorEShape
>> \barre #3
>> \transpose f g { \fMajorEShape }
>> \barre #5
>> \transpose f a { \fMajorEShape }
>> \barre #7
>> \transpose f b { \fMajorEShape }
>> }
>>
>> Thanks again!
>> patrick
>
>
> More automated:
>
> \version "2.19.15"
>
> \new FretBoards
> \transpose c d
> {
>
> \override FretBoard.before-line-breaking =
> #(lambda (grob)
> (let* ((dots-list (ly:grob-property grob 'dot-placement-list))
> (fingered-frets
> (filter
> (lambda (d)
> (and (eq? 'place-fret (car d)) (>= (length d) 4)))
> dots-list))
> ;; TODO do better mapping, loop or the like!
> (finger-1
> (filter
> (lambda (f) (and (number? (last f)) (= (last f) 1)))
> fingered-frets))
> (finger-2
> (filter
> (lambda (f) (and (number? (last f)) (= (last f) 2)))
> fingered-frets))
> (finger-3
> (filter
> (lambda (f) (and (number? (last f)) (= (last f) 3)))
> fingered-frets))
> (finger-4
> (filter
> (lambda (f) (and (number? (last f)) (= (last f) 4)))
> fingered-frets))
> (barre-1
> (if (> (length finger-1) 1)
> (let* ((strgs
> (sort (map cadr finger-1) >))
> )
> (list 'barre (car strgs) (last strgs) (third (car
> finger-1))))
> '()))
> (barre-2
> (if (> (length finger-2) 1)
> (let* ((strgs
> (sort (map cadr finger-2) >))
> )
> (list 'barre (car strgs) (last strgs) (third (car
> finger-2))))
> '()))
> (barre-3
> (if (> (length finger-3) 1)
> (let* ((strgs
> (sort (map cadr finger-3) >))
> )
> (list 'barre (car strgs) (last strgs) (third (car
> finger-3))))
> '()))
> (barre-4
> (if (> (length finger-4) 1)
> (let* ((strgs
> (sort (map cadr finger-4) >))
> )
> (list 'barre (car strgs) (last strgs) (third (car
> finger-4))))
> '()))
> (barres
> (filter
> (lambda (l)
> (not (null? l)))
> (list barre-1 barre-2 barre-3 barre-4))))
>
> (ly:grob-set-property! grob 'dot-placement-list
> (append
> barres
> dots-list))))
>
> <f,-1 c-3 f-4 a-2 c'-1 f'-1>
>
> \override Score.RehearsalMark.self-alignment-X = #LEFT
> \mark
> \markup
> \fontsize #-6 \column { "transposing" "this one," "will be" "strange ofc" }
> <a, e-1 a-1 cis'-2 e'>
>
> <bes,-1 f-2 bes-3 d'-4 f'-1>
>
> <a,-2 d-2 fis-1 c'-3 e'-3 a'-3>
> }
>
Nice! Thanks a lot.
Yes, transposing chords with open strings probably poses a problem. Fingering
information would have to be included automatically in order to decide whether
they should be part of a barre. I’d think it’s safe to assume that transposed
open strings in chords will always be played with the first finger.
Carl has already added a feature request
(https://code.google.com/p/lilypond/issues/detail?id=4409).
Thanks again
patrick_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user