lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Problems with chord glissandos with articulations and tablature


From: Bernardo Barros
Subject: Re: Problems with chord glissandos with articulations and tablature
Date: Fri, 16 Apr 2010 11:30:21 -0300

Hi Carl and others,

Very good job indeed! I'm trying now to notate the chord glissando I mentioned in the first email. The problem is that it is actually a re attacked chord glissando, so I would need to hide some noteheads and the glissando should "jump" to the next note head. I'm thinking in the best way to do this job. What should I do? Maybe I should find other way to notate this action, like an "ossia" with the rhythm of the rearticulation? Or maybe trying to notate this with two voices and then using only the glissando lines of the second one? No Idea!!! (see the figure annexed)

Thanks a lot



On 16 April 2010 11:16, Carl Sorensen <address@hidden> wrote:



On 4/16/10 7:27 AM, "Phil Holmes" <address@hidden> wrote:

> You can override this:
>
> http://lsr.dsi.unimi.it/LSR/Item?id=457


Thanks for the tip!

Here's a revised version, with the warning message turned off during the
chordGlissando and back on afterwards:

%%%%% Start of cut and paste section

\version "2.13.3"

chordGlissando =
#(define-music-function (parser location mus1 mus2) (ly:music? ly:music?)
 "Make a glissando between the notes of triads @code{mus1} and
@code{mus2}."

 (define (add-glissando musChord)
    (let ((els (ly:music-property musChord 'elements)))
     (ly:music-set-property! musChord 'elements (append els (list
(make-music 'GlissandoEvent))))
     musChord))

 (define (get-notes musicChord)
  (filter (lambda(x) (eq? (ly:music-property x 'name) 'NoteEvent))
          (ly:music-property musicChord 'elements)))

 (define (select-note musChord index)
   (let* ((notes (get-notes musChord))
          (non-notes (filter (lambda (x)
                              (not (eq? (ly:music-property x 'name)
                                        'NoteEvent)))
                             (ly:music-property musChord 'elements)))
          (selected-note (list-ref notes index))
          (new-els (cons selected-note non-notes))
          (new-mus (ly:music-deep-copy musChord)))
    (ly:music-set-property! new-mus 'elements new-els)
    new-mus))

 (define (add-glissando-line mus1 mus2 index)
   #{
      \new Voice {
        \hideNotes
        \override NoteColumn #'ignore-collision = ##t
        \once \override Glissando #'thickness = #2
        $(add-glissando (select-note mus1 (1- index)))
        $(select-note mus2 (1- index))
      }
   #})

 (let* ((notes1 (get-notes mus1))
        (notes2 (get-notes mus2))
        (note-count (min (length notes1) (length notes2))))

   #{
      \once \override Glissando #'minimum-length = #5
      \once \override Glissando #'springs-and-rods =
#ly:spanner::set-spacing-rods
      \once \override Glissando #'thickness = #2
    <<
      \override NoteColumn #'ignore-collision = ##t
      {
        $(add-glissando mus1)
        $mus2
      }
      $(if (> note-count 1) (add-glissando-line mus1 mus2 1))
      $(if (> note-count 2) (add-glissando-line mus1 mus2 2))
      $(if (> note-count 3) (add-glissando-line mus1 mus2 3))
      $(if (> note-count 4) (add-glissando-line mus1 mus2 4))
      $(if (> note-count 5) (add-glissando-line mus1 mus2 5))
      $(if (> note-count 6) (add-glissando-line mus1 mus2 6))
      $(if (> note-count 7) (add-glissando-line mus1 mus2 7))
   >>
   \revert NoteColumn #'ignore-collision
 #}))


\relative c' {
 \new Staff  {
  \override NoteColumn #'ignore-collision = ##t
  d8 [ \chordGlissando <c e g>16 <d f a>] e4 <e g c> d |
  \chordGlissando <c e g>4 <e c f> \chordGlissando <c e g> <d f a> |
  \break
  \chordGlissando <c e>4 <e g>4
  \chordGlissando <c e g c>4 <e g c e>4
 }
}




_______________________________________________
lilypond-user mailing list
address@hidden
http://lists.gnu.org/mailman/listinfo/lilypond-user

Attachment: figure.pdf
Description: Adobe PDF document


reply via email to

[Prev in Thread] Current Thread [Next in Thread]