Lilypond

Recommendations concerning notation and publishing software in a non-partisan environment.
User avatar
John Ruggero
Posts: 2453
Joined: 05 Oct 2015, 14:25
Location: Raleigh, NC USA

Re: Lilypond

Post by John Ruggero »

I'm liking it more and more! Some might like the larger note heads, but for me it lets in more air and the feeling is calmer. Not that this is a calm section!
Last edited by John Ruggero on 30 Oct 2015, 15:42, edited 1 time in total.
M1 Mac mini (OS 12.4), Dorico, Finale 25.5, GPO 4, Affinity Publisher 2, SmartScore 64 Pro, JW Plug-ins, TG Tools, Keyboard maestro

http://www.cantilenapress.com
User avatar
OCTO
Posts: 1742
Joined: 05 Oct 2015, 06:52
Location: Sweden

Re: Lilypond

Post by OCTO »

I share same thoughts with John: two shapes I never liked is :t and as well :n .
Freelance Composer. Self-Publisher.
Finale 27.3 • Sibelius 2023.5• MuseScore 4+ • Logic Pro X+ • Ableton Live 11+ • Digital Performer 10+ /// MacOS Monterey (secondary in use systems: Fedora 35, Windows 10)
User avatar
Fred G. Unn
Posts: 435
Joined: 05 Oct 2015, 13:24
Location: NYCish

Re: Lilypond

Post by Fred G. Unn »

RMK wrote:Wasn't this originally set with Graphire Music Press?
Wow, I had totally forgotten about Graphire.
User avatar
Schneider
Posts: 111
Joined: 09 Oct 2015, 06:50
Location: Paris

Re: Lilypond

Post by Schneider »

Hi OCTO,
OCTO wrote:[...] Here is an example. There are missing woodwinds and brass. Therefore maybe some small spacing deviations.
I took some time this afternoon in order to start looking at your score.
Here's a first draft, unfinished yet, but which can give you a first impression.
What I can say right now is that it is not more or less difficult to encode this one compared to other contemporary pieces I've worked on. They all need lots of tweaks, special glyphs and are time consuming (also time to understand what the composer had in mind).
I've often heard that Finale does very good job for modern pieces. LilyPond is more tricky with those.
Anyway, here it goes:
challenge-one.pdf
(92.98 KiB) Downloaded 501 times
Cheers, :)
Pierre
User avatar
John Ruggero
Posts: 2453
Joined: 05 Oct 2015, 14:25
Location: Raleigh, NC USA

Re: Lilypond

Post by John Ruggero »

Pierre, LilyPond is very impressive, but I do find the thought of using a non-GUI approach to music engraving unappetizing, probably because I enjoy manipulating actual musical symbols so much. Is a GUI inherently impossible with LilyPond? Or, might not the advantages of LilyPond be incorporated in some way into Finale, etc.
M1 Mac mini (OS 12.4), Dorico, Finale 25.5, GPO 4, Affinity Publisher 2, SmartScore 64 Pro, JW Plug-ins, TG Tools, Keyboard maestro

http://www.cantilenapress.com
User avatar
OCTO
Posts: 1742
Joined: 05 Oct 2015, 06:52
Location: Sweden

Re: Lilypond

Post by OCTO »

That is really great, Pierre!
I hope it was not to much troublesome job for you!

One thing that I noticed and that I like very much: lines (stems, ledger lines) for grace notes are equal to the regular notes. I think it is very good - legibility rate is much higher (BW-balance is good). Finale makes these lines thinner which is eqaul to the percentage reduction of the grace notes (approx 65%).
John Ruggero wrote:Is a GUI inherently impossible with LilyPond?
I think there is Musescore as the alternative. Now, I am not entirely sure how Lilypond relates to Musescore. Is it the main engine for Musescore? Maybe another for another topic?

Pierre, could you be able to share the text file of the code (as an .txt attachment)?
Also, how long would take someone with 0 knowledge to learn it so that this example can be engraved?
Also 2, is there tool for extracing part?
Freelance Composer. Self-Publisher.
Finale 27.3 • Sibelius 2023.5• MuseScore 4+ • Logic Pro X+ • Ableton Live 11+ • Digital Performer 10+ /// MacOS Monterey (secondary in use systems: Fedora 35, Windows 10)
User avatar
Schneider
Posts: 111
Joined: 09 Oct 2015, 06:50
Location: Paris

Re: Lilypond

Post by Schneider »

AFAIK Muscore use the Feta font from LP but there is no other connection... Not sure though ;)
OCTO wrote:[...] could you be able to share the text file of the code [...]
Here you go (roughly 1000 lines):

Code: Select all

\version "2.19.30"
#(set-global-staff-size 17)
#(set! paper-alist (cons '("my size" . (cons (* 320 mm) (* 240 mm))) paper-alist))
\include "articulate.ly"
\pointAndClickOff

#(define (my-note-head grob)
   (let ((duration (ly:grob-property grob 'duration-log)))
     (case duration
       ((0) (grob-interpret-markup grob
              #{
                \markup { 
                  \scale #'(0.98 . 0.97)
                  \musicglyph #"noteheads.s0" 
                }
              #}))
       ((1) (grob-interpret-markup grob
              #{
                \markup { 
                  \scale #'(0.98 . 0.97)
                  \musicglyph #"noteheads.s1" 
                }
              #}))
       ((2) (grob-interpret-markup grob
              #{
                \markup { 
                  \scale #'(0.98 . 0.97)
                  \musicglyph #"noteheads.s2" 
                }
              #}))
       (else (ly:note-head::print grob)))))

right-hand-long = 
  \markup 
  \with-dimensions #'(0 . 0) #'(0 . 0) {
    \translate-scaled #'(2.5 . -.7) {
      \combine
      \override #'(filled . #t)
      \path #0.1 #'(
        (moveto 0 0)
        (curveto 0 0 67.8 0 67.8 -5.8)
        (curveto 67.8 0 0 -.5 0 -.5)
        (closepath))
      \translate-scaled #'(67.78 . -6)
      \rotate #26
      \arrow-head #Y #DOWN ##f
    }
  }

right-hand-medium = 
  \markup 
  \with-dimensions #'(0 . 0) #'(0 . 0) {
    \translate-scaled #'(2.5 . -.7) {
      \combine
      \override #'(filled . #t)
      \path #0.1 #'(
        (moveto 0 0)
        (curveto 0 0 10.6 0 10.6 -5.8)
        (curveto 10.6 0 0 -.5 0 -.5)
        (closepath))
      \translate-scaled #'(10.59 . -6)
      \rotate #5
      \arrow-head #Y #DOWN ##f
    }
  }

right-hand-short = 
  \markup 
  \with-dimensions #'(0 . 0) #'(0 . 0) {
    \translate-scaled #'(2.1 . -.7) {
      \combine
      \override #'(filled . #t)
      \path #0.1 #'(
        (moveto 0 0)
        (curveto 0 0 2.8 0 2.8 -5.8)
        (curveto 2.8 0 0 -.5 0 -.5)
        (closepath))
      \translate-scaled #'(2.79 . -6)
      \arrow-head #Y #DOWN ##f
    }
  }
  
right-hand-end = 
  \markup 
  \with-dimensions #'(0 . 0) #'(0 . 0) {
    \translate-scaled #'(2 . -.7) {
      \combine
      \override #'(filled . #t)
      \path #0.1 #'(
        (moveto 0 0)
        (curveto 0 0 1.5 0 1.5 -5.8)
        (curveto 1.5 0 0 -.5 0 -.5)
        (closepath))
      \translate-scaled #'(1.49 . -6)
      \arrow-head #Y #DOWN ##f
    }
  }

slur-start-short = 
  \markup 
  \with-dimensions #'(0 . 0) #'(0 . 0) {
    \translate-scaled #'(0.4 . 0) 
    {
      \override #'(filled . #t)
      \path #0.1 #'(
        (moveto 0 0)
        (curveto 0 0 -.5 2 -4 2)
        (curveto -1.2 2.1 -.4 1.1 0 0)
        (closepath))
    }
  }

slur-start-long = 
  \markup 
  \with-dimensions #'(0 . 0) #'(0 . 0) {
    \translate-scaled #'(1.3 . -1.1) 
    {
      \override #'(filled . #t)
      \path #0.1 #'(
        (moveto 0 0)
        (curveto 0 -.2 -.2 3 -25 2.5)
        (curveto -5 2.5 -.6 1 0 0)
        (closepath))
    }
  }
  
%% Dynamics:
sfff = #(make-dynamic-script "sfff")
paren =
#(define-event-function (parser location dyn) (ly:event?)
   (make-dynamic-script
    #{ \markup \concat {
         \normal-text \italic \fontsize #2 (
	 \pad-x #0.2 #(ly:music-property dyn 'text)
	 \normal-text \italic \fontsize #2 )
       }
    #}))

chevron-sff = 
  \markup\concat
  \raise #.6
  \vcenter {
    \path #0.1 #'(
      (moveto 0 0)
      (lineto 1 .7)
      (moveto 0 0)
      (lineto 1 -.7))
    
    "sff"
    \hspace #.5
    \path #0.1 #'(
      (moveto 0 0)
      (lineto -1 .7)
      (moveto 0 0)
      (lineto -1 -.7))
   \hspace #-1
}

chev-sff = #(make-dynamic-script chevron-sff)

chevron-right-sff = 
  \markup\concat
  \raise #.6
  \vcenter {
    "sff"
    \hspace #.5
    \path #0.1 #'(
      (moveto 0 0)
      (lineto -1 .7)
      (moveto 0 0)
      (lineto -1 -.7))
   \hspace #-1
}
chevr-sff = #(make-dynamic-script chevron-right-sff)

chevron-right-sfff = 
  \markup\concat
  \raise #.6
  \vcenter {
    "sfff"
    \hspace #.5
    \path #0.1 #'(
      (moveto 0 0)
      (lineto -1 .7)
      (moveto 0 0)
      (lineto -1 -.7))
   \hspace #-1
}
chevr-sfff = #(make-dynamic-script chevron-right-sfff)

long-flat-hairpin = 
  \markup
  \with-dimensions #'(0 . 0) #'(0 . 0) {
  \dynamic "p"
  \translate-scaled #'(2 . .5) 
    {
      \path #0.1 #'(
        (moveto 0 0)
        (lineto 75 .5)
        (lineto 87 1.6)
        (moveto 0 0)
        (lineto 75 -.5)
        (lineto 87 -1.6)
        )
    }
  \translate-scaled #'(83 . 0) 
  \italic\tiny "molto"
}


%% The score:
\paper {
  #(set-paper-size "my size")
  indent = 0
  ragged-last-bottom = ##f
  line-thickness = 0.15\mm
  left-margin = 20
  right-margin = 10
  ragged-right = ##f
}

\header {
  tagline = ##f
}

time-sig-one = { 
  \omit Staff.Clef 
  \stopStaff 
  \override Staff.TimeSignature.color = #red
  \time 2/4 s2 
  \time 5/4 s4*5 
  \numericTimeSignature
  \time 4/4 s1*2 
}

time-sig-two = { 
  \omit Staff.Clef 
  \stopStaff 
  \time 2/4 s2 
  \time 5/4 s4*5 
  \numericTimeSignature
  \time 4/4 s1*2 
}

drum-th-un = { 
  \omit Staff.TimeSignature 
  \tweak extra-offset #'(-2.5 . -14.5)
  \mark\markup
    \with-dimensions #'(0 . 0) #'(0 . 0)
    \with-color #red { 
      \draw-line #'(0 . 30)
      \raise #17 "Missing woodwinds and brass"
    }
  R2 R4*5 c''1^\right-hand-long
  -\tweak extra-offset #'(-4 . -1)
  ^\markup \small "R.H." 
  c2 
  _\markup\scale #'(1 . -1)\right-hand-medium
  \once\stemUp c''4 
  ^\right-hand-short
  c4
  _\markup\scale #'(1 . -1)\right-hand-end
 % _\markup\italic "molto" 
}

drum-th-deux = { 
  \omit Staff.TimeSignature s2 s4*5 c1 
  _\markup\scale #'(1 . -1)\right-hand-long
  -\tweak extra-offset #'(-4 . -.8)
  _\markup\with-dimensions #'(0 . 0) #'(0 . 0) \small "L.H."
  c''2 
  ^\right-hand-medium
  \once\stemDown c4 
  -\tweak extra-offset #'(0 . 2)
  _\markup
  \scale #'(1 . -1)
  \right-hand-short
  c''4 
  ^\right-hand-end
}

drum-th-dyn = {  
  s2 s4*5 
  \override Hairpin.height = #.87
  s1
  -\tweak extra-offset #'(0 . -3)
  _\markup\long-flat-hairpin
  s 
}

pno-md-un = \transpose c c' { 
  \omit Staff.TimeSignature 
  \repeat tremolo 4 <g' c'' g''>16
  %% put some space here :
  ^\markup\column{ \null \vspace #3 }
  \repeat tremolo 4 q
  \magnifyMusic 0.63 {
    s16 
    \once\override NoteColumn.force-hshift = #0.35
    \once\override NoteHead.transparent = ##t
    g8*1/6^([ a! g] s16 \stemUp 
    \once\override NoteColumn.force-hshift = #0.35 
    \once\override NoteHead.transparent = ##t
    c'8*1/6[ e' c'] s16
  }
  \stemDown <e' a'>16) q q q[ q] 
  s16
  \magnifyMusic 0.63 {
    \stemUp 
    \once\override NoteColumn.force-hshift = #0.35 
    \once\override NoteHead.transparent = ##t
    a8*2/12^([ c' a]
  }
  s16
  \stemDown <g' c'' g''>16) q q
  \repeat tremolo 4 <g' c'' g''>16 
  \magnifyMusic 0.63 {
      s8*1/2\stemUp 
      \once\omit Accidental 
      \once\override NoteColumn.force-hshift = #0.35 
      \once\override NoteHead.transparent = ##t
      dis8*2/12^([fis dis] s s s 
  \once\override NoteColumn.force-hshift = #0.35 
  \once\override NoteHead.transparent = ##t
  \stemUp g[ c'! g]
  }
  \stemDown
  <g' c'' g''>16) q q q
  \magnifyMusic 0.63 {
    s16\stemUp 
    \once\omit Accidental 
    \once\override NoteColumn.force-hshift = #0.35 
    \once\override NoteHead.transparent = ##t
    dis'8*2/12^([gis' dis']
  }
  s16
  \stemDown <g'! c''! g''!>16)\<
  \repeat unfold 4 { \repeat tremolo 4 <g' c'' g''>16 }
  \repeat tremolo 4 <g' c'' g''>16 \ffff
}

pno-md-deux = { \omit Staff.TimeSignature s2 s4*5 s1 s }

pno-mg-un = \transpose c c' { 
  \omit Staff.TimeSignature 
  s2 
  ais16[
    \change Staff = "MD" \stemDown g! 
    \change Staff = "MG" \stemUp dis
    \change Staff = "MD" \stemDown c'
    \change Staff = "MG" \stemUp dis' ]
  s16*5
  gis!16[
    \change Staff = "MD" \stemDown a 
    \change Staff = "MG" \stemUp fis']
  s16*3 s4
  e16[
    \change Staff = "MD" \stemDown dis 
    \change Staff = "MG" \stemUp cis
    \change Staff = "MD" \stemDown g!]
  s16*4
  \change Staff = "MG" \stemUp ais16[
    \change Staff = "MD" \stemDown dis'
    \change Staff = "MG" \stemUp e']
  s16 s4
  s1 
}
pno-mg-deux = \transpose c c' {  
  \omit Staff.TimeSignature s2 
  \magnifyMusic 0.63 {
     \stemDown 
     \once\omit Accidental ais8*1/6_([ 
     -\tweak extra-offset #'(0 . -.5)
     -\tweak font-size #1 _> 
     -\tweak rotation #'(5 0 1)
     -\tweak extra-offset #'(0 . -.5)
     \< gis ais] s16
    \once\omit Accidental dis8*1/6[ cis dis] s16
    \once\omit Accidental dis'8*1/6[ cis' dis' \! ])
  }
  s16*5
  \magnifyMusic 0.63 {
     \stemDown 
     \once\omit Accidental 
     gis8*2/12_([
     -\tweak extra-offset #'(0 . -.5)
     -\tweak font-size #1 _>
     -\tweak rotation #'(11 0 1)
     -\tweak extra-offset #'(0 . .5)
     \< dis gis] s s s
     \once\omit Accidental fis'[ cis' fis']\! ])
  }
  s16*3
  s4
  \magnifyMusic 0.63 {
     \stemDown e8*1/6_([ 
     -\tweak font-size #1 _> 
     -\tweak rotation #'(-5 0 1)
     -\tweak extra-offset #'(0 . -.3)
     \< c e] s16
    \once\omit Accidental cis8*1/6[ gis, cis \! ])
    s16
  }
  s4
  \magnifyMusic 0.63 {
     \stemDown 
     \once\omit Accidental
     ais8*1/6_([ 
     -\tweak extra-offset #'(0 . -.5)
     -\tweak font-size #1 _> 
     -\tweak rotation #'(11 0 1)
     -\tweak extra-offset #'(0 . .5)
     \< fis ais] s16
    e'8*1/6[ c' e' \! ])
    s16
  }
  s4
  s1 
}

pno-dyn = { 
  s2
  -\tweak extra-offset #'(0 . 2)
  _\markup\teeny\concat {
    \draw-line #'(-1 . 0)
    \hspace #-.1
    \vcenter \normal-text "(" 
    \lower #.5 \musicglyph #"pedal.Ped" 
    \vcenter \normal-text ".)" 
    \hspace #-.1
    \draw-line #'(1.2 . 0)
    \hspace #-.4
    \vcenter\arrow-head #X #RIGHT ##f
  }
  s4*5 s1 s 
}

vln-I-un = \transpose c c' { 
  \omit Staff.TimeSignature
  \stemDown
  e'8
  ^\slur-start-short
  ^( 
  -\tweak springs-and-rods #ly:spanner::set-spacing-rods
  -\tweak minimum-length #4
  -\tweak rotation #'(10 0 1)
  \glissando e'!16) b16\rest <dis'' fis''>4^( 
  ^\markup\concat\vcenter {
    \smaller\circle " P "
    \hspace #1
     { 
      \draw-line #'(9 . 0)
      \hspace #-.5 
      \arrow-head #X #RIGHT ##f 
    }
   \smaller\circle "PE"
  }
  -\tweak extra-offset #'(-1 . 1.2)
  _\markup\tiny\italic\whiteout "(estremo flautando)"
  \glissando
  \once \override NoteColumn.glissando-skip = ##t
  \once\override NoteHead.transparent = ##t 
  \once\override NoteHead.no-ledgers = ##t
  <d'' f''>8) 
  \once\override Accidental.whiteout = ##t
  \once\override Accidental.X-offset = #-1.7
  <cis'' e''> 
  -\tweak padding #2.8 \downbow 
  -\tweak extra-offset #'(0.5 . 3.5)_(
  \glissando
  \once\override NoteColumn.glissando-skip = ##t
  \once\omit Stem
  \once\override NoteHead.stencil = 
            #(lambda (grob) (grob-interpret-markup grob
                              #{ 
                                \markup
                                \musicglyph #"rests.2"
                              #}))
  e4*1/4 
  \hideNotes  <b'd''>) s s
  \unHideNotes
  \stemUp ees4
  -\tweak extra-offset #'(2 . .6)
  _\markup 
  \with-dimensions #'(0 . 0) #'(0 . 0)
  \rotate #4
  \column {
    \pattern #31 #X #2 \concat { \musicglyph #"scripts.staccato" \hspace #-1.7 }
    \vspace #-.35
    \concat { \hspace #9 \tiny\italic "salt." }
  }
  \downbow
  -\tweak extra-offset #'(0 . -1)
  _(\startTrillSpan
  -\tweak rotation #'(1 0 1)
  \glissando
  \once\override NoteColumn.glissando-skip = ##t
  \once\override NoteHead.transparent = ##t 
  f8 
  \once\override NoteHead.transparent = ##t 
  g16)\stopTrillSpan r \stemDown a'4*1/3
  -\tweak outside-staff-priority 1 ^\trill
 -\tweak outside-staff-priority 2 ^( 
  s 
  \once\hideNotes a')
  \stemUp b8\rest a\downbow
  \once\override Glissando.bound-details.left.padding = #3
  aes''2 ^( 
  \glissando
  ^\markup\small\italic "stesso"
  \startTrillSpan
  g''8^\markup\smaller\circle "PE" 
  \glissando
  \once\override NoteColumn.glissando-skip = ##t
  \once\override NoteHead.transparent = ##t 
  \once\override NoteHead.no-ledgers = ##t
  f''8
  e''8) 
  \once\omit Stem
  aes'4*1/8^> 
  ^\markup\smaller\circle\number "0"
  \stopTrillSpan
  \once\omit Stem 
  \once\override NoteHead.no-ledgers = ##t
  \once\override NoteHead.stencil = 
            #(lambda (grob) (grob-interpret-markup grob
                              #{ 
                                \markup
                                \with-dimensions #'(0 . 0) #'(-1 . 1)
                                \override #'(thickness . 9) 
                                \draw-line #'(13 . 0)
                              #}))
  aes'4*27/8
  -\tweak extra-offset #'(2 . 0)
  ^\markup\concat\tiny { "n." \hspace #.2 "v." } 
}

vln-I-deux = \transpose c c' { 
  \omit Staff.TimeSignature s2 
  s8 
  \stemUp 
  \override NoteHead.no-ledgers = ##t
  \override NoteHead.transparent = ##t 
  \once\override NoteColumn.force-hshift = #0.4 
  \once\offset positions #'(1 . 1) Beam
  e''8*1/6[^.
  -\tweak extra-offset #'(0 . -3.8)
  ^\markup\draw-line #'(2.7 . 2)
  cis''^. e''^. cis'' ^. e''^. cis''^. 
  -\tweak extra-offset #'(-1 . 5.8)
  _\markup\tiny\italic "salt."
  e''^. cis''^. e''^.] s
  8*9/6 s4*3 
  \stemDown
  \revert NoteHead.no-ledgers
  \revert NoteHead.transparent
  s8 
  \once\offset positions #'(-.5 . -.5) Beam
  a8*1/3[^( aes'' a)] s16 
  \once\omit Stem
  bes''4*1/4  s4*3/2
  g''8*1/4_. g_.
  _\markup\tiny\italic "stacc."
  \override NoteHead.transparent = ##t
  \override NoteHead.no-ledgers = ##t
  g''_.
  \revert NoteHead.transparent 
  g _.
  \override NoteHead.transparent = ##t
  f''_. 
  \revert NoteHead.transparent 
  g_.
  -\tweak extra-offset #'(-1.4 . 1.3)
  _\markup\draw-line #'(2.7 . 2)
  s1
}

vln-I-dyn = { 
  s8\< s16\! s s4\p\< s8 s \sff \> s16 s32\! s32 s8  
  s4\sff \> s8 s16\! s s4\sff\>
  s8\! s8\sf s4\p\< s4 s16\sfff s s \> s
  s8\!
  -\tweak extra-offset #'(1.5 . 3)
  -\markup\center-column { 
    \concat { 
      \italic "più" 
      \hspace #.2  
      \dynamic "ff" 
      \hspace #1 
      \italic "intensivo" 
    }
    \vspace #-.2
    \line\italic { sempre (slow bow) }
  }
  s s2.
}

vln-II = \transpose c c' {  
  \omit Staff.TimeSignature 
  c''2^( ^\markup\small\italic "stesso"
  %% put some space here :
  ^\markup\column{ \null \vspace #1 }
  \glissando \startTrillSpan
  \once \override NoteColumn.glissando-skip = ##t
  \once\override NoteHead.transparent = ##t 
  \once\override NoteHead.no-ledgers = ##t
  b'8 bes') \stopTrillSpan
  r8 \stemUp a
  r8 \stemDown g'^(
  \glissando
  \once \override NoteColumn.glissando-skip = ##t
  \once\override NoteHead.transparent = ##t 
  \once\override NoteHead.no-ledgers = ##t
  f'8 fis')
  d'8 r
  <ais' cis''>2^( \glissando
  <a' c''>8 \glissando
  \once \override NoteColumn.glissando-skip = ##t
  \once\override NoteHead.transparent = ##t 
  \once\override NoteHead.no-ledgers = ##t
  q <g' bes'>8[ \glissando <fis' a'>])
  \omit Stem
  aes'4*1/8^> 
  ^\markup\smaller\circle\number "0"
  \once\override NoteHead.no-ledgers = ##t
  \once\override NoteHead.stencil = 
            #(lambda (grob) (grob-interpret-markup grob
                              #{ 
                                \markup
                                \with-dimensions #'(0 . 0) #'(-1 . 1)
                                \override #'(thickness . 9) 
                                \draw-line #'(17.5 . 0)
                              #}))
  aes'4*31/8
  -\tweak extra-offset #'(2 . 0)
  ^\markup\concat\tiny { "n." \hspace #.2 "v." }  
}

vln-II-dyn = { 
  s2 \chev-sff \<
  s8\sfff\> s\pp s8 s\chev-sff s8 
  \override Hairpin.stencil = #flared-hairpin
  s\p\< s8 s\chevr-sff s4
  s2\p\< s4\chevr-sff\< s8 s\chevr-sfff
  s1-\tweak extra-offset #'(1.5 . 1)
  -\markup\center-column { 
    \concat { 
      \italic "più" \hspace #.2  
      \dynamic "ff" \hspace #1 
      \italic "intensivo" 
    }
    \vspace #-.2
    \line\italic { sempre (slow bow) }
  }
}

vla = \transpose c c' {  
  \omit Staff.TimeSignature 
  \stemUp ees'4._(
  ^\markup\concat\vcenter {
    \hspace #3
     { 
      \draw-line #'(7.5 . 0)
      \hspace #-.5 
      \arrow-head #X #RIGHT ##f 
    }
   \smaller\circle "PE"
  }
  %% put some space here :
  ^\markup\column{ \null \vspace #4 }
  -\tweak rotation #'(2 0 1)
  \glissando e'8 
  -\tweak rotation #'(2 0 1)
  \glissando
  \once\override NoteHead.transparent = ##t 
  \once \override NoteColumn.glissando-skip = ##t
  \once\offset positions #'(.6 . .6) Beam
  e'8 
  \once\override Accidental.stencil = 
    #(lambda (grob) (grob-interpret-markup grob
              #{ \markup\musicglyph #"accidentals.natural.arrowup" #}))
  ees')
  r8 \stemDown 
  <g' bes'>^\markup\smaller\circle " P "
  \glissando
  \override NoteColumn.glissando-skip = ##t
  \once\omit NoteHead q \once\omit NoteHead q 
  \override NoteColumn.glissando-skip = ##f
  <fis' a'>^\markup\smaller\circle "PE" r8 r 
  \revert Staff.Clef.stencil
  \clef C c,8\sff-\tweak to-barline ##f \>
  ^\markup\smaller\circle " P "
  \stemUp 
  \override Hairpin.stencil = #flared-hairpin
  b2_(\p\<
  ^\markup\small\italic "stesso"
  \glissando\startTrillSpan 
  a8[\sff \> ^\markup\smaller\circle "PE"
   \glissando
  \once \override NoteColumn.glissando-skip = ##t
  \once\override NoteHead.transparent = ##t 
  g] g)\! \stopTrillSpan
  \stemDown 
  \clef G
  \override Staff.Clef.stencil = 
              #(lambda (grob) (grob-interpret-markup grob
                                #{ 
                                  \markup
                                  \lower #.03
                                  \override #'(font-name . "Cleffy Normal" )
                                  \override #'(font-size . 3.8) "C"
                                #}))
  aes'\noBeam ^>^(
  \omit Stem
  aes'4*1/8) 
  ^\markup\smaller\circle\number "0"
  \once\override NoteHead.no-ledgers = ##t
  \once\override NoteHead.stencil = 
            #(lambda (grob) (grob-interpret-markup grob
                              #{ 
                                \markup
                                \with-dimensions #'(0 . 0) #'(-1 . 1)
                                \override #'(thickness . 9) 
                                \draw-line #'(17.5 . 0)
                              #}))
  aes'4*31/8
  -\tweak extra-offset #'(2 . 0)
  ^\markup\concat\tiny { "n." \hspace #.2 "v." }  
}

vla-dyn = { 
  s4.\paren\f 
  -\tweak stencil #flared-hairpin
  \< s8\sff\>
  s8 s\pp s8
  s\sff\>
  s4 s8\chev-sff s8 s8 s
  s2. s8 s\< 
  s1\!-\tweak extra-offset #'(1.5 . 1)
  -\markup\center-column { 
    \concat { 
      \italic "più" 
      \hspace #.2  
      \dynamic "ff" 
      \hspace #1 
      \italic "intensivo" 
    }
    \vspace #-.2
    \line\italic { sempre (slow bow) }
  }
}

vc = \transpose c c' { 
  \omit Staff.TimeSignature 
  ees'4^( 
  %% put some space here :
  ^\markup\column{ \null \vspace #3 }
  ees'8.) 
  -\tweak springs-and-rods #ly:spanner::set-spacing-rods
  -\tweak minimum-length #6
  -\tweak rotation #'(-10 0 1)
  \glissando
  \once\override Accidental.stencil = 
    #(lambda (grob) (grob-interpret-markup grob
              #{ \markup\musicglyph #"accidentals.flat.arrowdown" #}))
  e'16^(
  e'8)^\slur-start-long
  r r4 r2 <g bes>4_(
  ^\markup\smaller\circle " P "
  <a f>8 <a fis>  <e g>[ q] <d fis> <dis fis!>) 
  ^\markup\smaller\circle "PE"
  dis8\noBeam r
  \omit Stem
  aes'4*1/8^> 
  ^\markup\smaller\circle\number "0"
  \once\override NoteHead.no-ledgers = ##t
  \once\override NoteHead.stencil = 
            #(lambda (grob) (grob-interpret-markup grob
                              #{ 
                                \markup
                                \with-dimensions #'(0 . 0) #'(-1 . 1)
                                \override #'(thickness . 9) 
                                \draw-line #'(17.5 . 0)
                              #}))
  aes'4*31/8
  -\tweak extra-offset #'(2 . 0)
  ^\markup\concat\tiny { "n." \hspace #.2 "v." }  
}

vc-dyn = { 
  s2 \>
  s8 \! s s4 s4 s4 
  \override Hairpin.stencil = #flared-hairpin
  s4 \p\<
  s8 s\sff\< s4 s8 
  \revert Hairpin.stencil
  s\chevr-sfff\< 
  s16 s16\fff s s
  s1-\tweak extra-offset #'(1.5 . 3)
  -\markup\center-column { 
    \concat { 
      \italic "più" 
      \hspace #.2  
      \dynamic "ff" 
      \hspace #1 
      \italic "intensivo" 
    }
    \vspace #-.2
    \line\italic { sempre (slow bow) }
  } 
}

cb = { 
  \omit Staff.TimeSignature 
  \stemUp cis'4 
  ^\markup\smaller\circle "PE"
  %% put some space here :
  ^\markup\column{ \null \vspace #1 }
  cis'8 r 
  \stemDown g2_( 
  ^\markup\smaller\circle " P "
  \glissando fis4 
  -\tweak rotation #'(1 0 1)
  \glissando
  ^\markup\smaller\circle "PE"
  \once \override NoteColumn.glissando-skip = ##t
  \once\override NoteHead.transparent = ##t 
  e8) 
  \once\omit Stem
  \once\omit Flag
  \once\override NoteHead.stencil = 
            #(lambda (grob) (grob-interpret-markup grob
                              #{ 
                                \markup
                                \lower #.5
                                \musicglyph #"rests.3"
                              #}))
  e\noBeam r4 
  \revert Staff.NoteHead.stencil
  r2 \stemUp
  \clef G  
  \override Staff.Clef.stencil = 
              #(lambda (grob) (grob-interpret-markup grob
                                #{ 
                                  \markup
                                  \lower #.03
                                  \override #'(font-name . "Cleffy Normal" )
                                  \override #'(font-size . 3.8) "C"
                                #}))
  r8 <aes'
  %-\tweak extra-offset #'(0 . -.35)
  ~ des''\harmonic >8_> 
  ^\markup\smaller\circle\number "0"
  <aes'~ des''\harmonic >4
  \omit Stem 
  \omit Accidental
  <aes' des''\harmonic >4*1/8
  \once\override NoteHead.stencil = 
            #(lambda (grob) (grob-interpret-markup grob
                              #{ 
                                \markup
                                \with-dimensions #'(0 . 0) #'(-1 . 1)
                                \override #'(thickness . 10) 
                                \draw-line #'(17.5 . 0)
                              #}))
  aes'4*31/8
}

cb-dyn = { 
  s4\sff\> s8\! s 
  s2\pp-\tweak stencil #flared-hairpin \< s4\sfff\> s16 s\ppp s s s4 
  s2 s8 s\< s4
  s1\!
  -\tweak extra-offset #'(1.5 . 3)
  -\markup\center-column { 
    \concat { 
      \italic "più" 
      \hspace #.2  
      \dynamic "ff" 
      \hspace #1 
      \italic "intensivo" 
    }
    \vspace #-.2
    \line\italic { sempre (slow bow) }
  } 
}

%% The canevas:
\score {
  << 
    \new Staff { \time-sig-one }
    \new Staff \with { 
        instrumentName =  
          \markup
          \override #'(baseline-skip . 2)
          \right-column { 
            "Th.-Sh." \smaller "(rubbing)" 
          } 
        \override NoteColumn.force-hshift = #0
      } 
      <<
        \clef percussion 
        \new Voice { \drum-th-un }
        \new Voice { \drum-th-deux }
        \new Dynamics { \drum-th-dyn }
      >>
    \new PianoStaff \with { instrumentName =  "Pno." } <<
      \new Staff = "MD" <<
        \override Staff.Clef.stencil = 
            #(lambda (grob) (grob-interpret-markup grob
                              #{ 
                                \markup
                                \lower #.03
                                \override #'(font-name . "Cleffy Normal" )
                                \override #'(font-size . 5.6) "C"
                              #}))
        \new Voice { 
          \pno-md-un 
        }
        \new Voice { 
          \pno-md-deux 
        }
      >>
      \new Staff = "MG" << 
        \override Staff.Clef.stencil = 
            #(lambda (grob) (grob-interpret-markup grob
                              #{ 
                                \markup
                                \lower #.03
                                \override #'(font-name . "Cleffy Normal" )
                                \override #'(font-size . 5.6) "C"
                              #}))
        \new Voice { \pno-mg-un }
        \new Voice { \pno-mg-deux }
        \new Dynamics { \pno-dyn }
      >>
    >>
    \new Staff \time-sig-two
    \new StaffGroup <<
      \new Staff 
        \with { instrumentName =  \markup\concat { "Vln." \hspace #.2 "I" } }
        <<
          \override Staff.Clef.stencil = 
            #(lambda (grob) (grob-interpret-markup grob
                              #{ 
                                \markup
                                \lower #.03
                                \override #'(font-name . "Cleffy Normal" )
                                \override #'(font-size . 5.6) "C"
                              #}))
          \new Voice { \voiceOne \vln-I-un }
          \new Voice { \voiceTwo \magnifyMusic 0.63 { \vln-I-deux } }
          \new Dynamics { \vln-I-dyn }
        >>
      \new Staff 
        \with { instrumentName =  \markup\concat { "Vln." \hspace #.2 "II" } }
        << 
          {
            \override Staff.Clef.stencil = 
            #(lambda (grob) (grob-interpret-markup grob
                              #{ 
                                \markup
                                \lower #.03
                                \override #'(font-name . "Cleffy Normal" )
                                \override #'(font-size . 5.6) "C"
                              #}))
   
            \vln-II
          }
          \new Dynamics { \vln-II-dyn }
        >>
      \new Staff 
        \with { instrumentName =  "Vla." } 
        <<
          {
            \override Staff.Clef.stencil = 
              #(lambda (grob) (grob-interpret-markup grob
                                #{ 
                                  \markup
                                  \lower #.03
                                  \override #'(font-name . "Cleffy Normal" )
                                  \override #'(font-size . 5.6) "C"
                                #}))
            \vla
          }
          \new Dynamics { \vla-dyn }
        >>
      \new Staff 
        \with { instrumentName =  "Vc." }
        <<
          { 
            \override Staff.Clef.stencil = 
              #(lambda (grob) (grob-interpret-markup grob
                                #{ 
                                  \markup
                                  \lower #.03
                                  \override #'(font-name . "Cleffy Normal" )
                                  \override #'(font-size . 5.6) "C"
                                #}))
            \vc 
          }
          \new Dynamics { \vc-dyn }
        >>
      \new Staff 
        \with { instrumentName =  "Cb." } 
        <<
          { \clef F \cb }
          \new Dynamics { \cb-dyn }
        >>
    >>
  >>
  \layout {
    \context {
      \Score
      \override Beam.beam-thickness = #0.58
    }
    \context {
      \StaffGroup
      \override StaffGrouper.staff-staff-spacing.stretchability = #100
    }
    \context {
      \Staff
      \override NoteHead.stencil = #my-note-head
    }
  }
  %%% Midi sound (no work)
  \midi {
    #(ly:set-option 'midi-extension "mid")
    \tempo 4 = 50
  }
}
Few remarks before using it:
  • I was not prepared to shared this code so be sure that it's a draft and it certainly can be written in a more elegant way.
  • Save the code as *.ly file.
  • Be sure to use the latest LP version (v.2.19) otherwise it won't compile.
  • Add Cleffy font on your machine: http://www.notat.io/viewtopic.php?p=297#p297 otherwise it won't compile.
  • According pdf's enclosed:
    challenge-one.pdf
    (93.51 KiB) Downloaded 457 times
  • There's also a midi output; note that LP has some tools to choose instruments and do midis but I don't use it.
OCTO wrote:[...] how long would take someone with 0 knowledge to learn it so that this example can be engraved?
The first thing is to read the tuto : http://www.lilypond.org/doc/v2.19/Docum ... ex.fr.html
It could be done in a hour or two and you can do some nice things only with this knowledge.
The rest can also be learned pretty quickly if you know where to find the answers for a specific problem:
OCTO wrote:[...] is there tool for extracing part?
Not that I know.
Of course, you can try to import the pdf to Inkscape and copy/paste the extract you want (I didn't try).
Am I misunderstanding your question?
User avatar
John Ruggero
Posts: 2453
Joined: 05 Oct 2015, 14:25
Location: Raleigh, NC USA

Re: Lilypond

Post by John Ruggero »

Pierre, I found something called Denemo as a GUI front end for LilyPond. Do you have an opinion about using this?
M1 Mac mini (OS 12.4), Dorico, Finale 25.5, GPO 4, Affinity Publisher 2, SmartScore 64 Pro, JW Plug-ins, TG Tools, Keyboard maestro

http://www.cantilenapress.com
User avatar
Schneider
Posts: 111
Joined: 09 Oct 2015, 06:50
Location: Paris

Re: Lilypond

Post by Schneider »

Oops, I totally forgot about Denemo!
Actually I've never tried it, I cannot tell, but it looks something interesting to get the power of LP together with an intuitive interface.
harpsi
Posts: 30
Joined: 08 Oct 2015, 10:30

Re: Lilypond

Post by harpsi »

There is also Frescobaldi that has some possibilities: frescobaldi.org
Not really GUI in the way you are after though.
Post Reply