\version "2.22.0" %% Defs : durLineOn = { \omit Stem \omit Flag \omit Beam \override NoteHead.duration-log = 2 \override DurationLine.style = #'line } durLineOff = { \undo\omit Stem \undo\omit Flag \undo\omit Beam \revert NoteHead.duration-log \revert DurationLine.style } fulLev = \markup \with-dimensions-from \column { x x x } \override #'(filled . #t) \path #.2 #'((moveto 0 -4) (lineto 100 -4) (lineto 100 0) (lineto 0 0) (closepath)) #(define (variable-bow-thickness min-l max-l min-t max-t) (lambda (grob) (let* (;; get the procedure to calculate the control-points (cpf (assoc-get 'control-points (ly:grob-basic-properties grob))) (cpt (cond ((list? cpf) cpf) ((procedure? cpf) (cpf grob)) ((ly:unpure-pure-container? cpf) (ly:unpure-call cpf grob)))) (cp0 (car cpt)) (cp3 (cadddr cpt)) (dx (- (car cp3) (car cp0))) (dy (- (cdr cp3) (cdr cp0))) (len (magnitude (make-rectangular dx dy))) ;; return a value for thickness ;; below min-l -> min-l ;; greater than max-l -> max-l ;; between min-l and max-l -> calculate a nice value (thickness (cond ((< len min-l) min-t) ((> len max-l) max-t) (else (+ min-t (* (- len min-l) (/ (- max-t min-t) (- max-l min-l)))))))) thickness))) #(define-markup-command (arrow-at-angle layout props angle-deg length fill) (number? number? boolean?) (let* ( (PI-OVER-180 (/ (atan 1 1) 34)) (degrees->radians (lambda (degrees) (* degrees PI-OVER-180))) (angle-rad (degrees->radians angle-deg)) (target-x (* length (cos angle-rad))) (target-y (* length (sin angle-rad)))) (interpret-markup layout props (markup #:translate (cons (/ target-x 2) (/ target-y 2)) #:rotate angle-deg #:translate (cons (/ length -2) 0) #:concat (#:draw-line (cons length 0) #:arrow-head X RIGHT fill))))) splitStaffBarLine = { \once \override Staff.BarLine.stencil = #(lambda (grob) (ly:stencil-combine-at-edge (ly:bar-line::print grob) X RIGHT (grob-interpret-markup grob #{ \markup\with-dimensions-from \null \translate #'(.05 . 0) { \combine \arrow-at-angle #60 #(sqrt 8) ##t \arrow-at-angle #-60 #(sqrt 8) ##t }#}) 0)) \break } convDownStaffBarLine = { \once \override Staff.BarLine.stencil = #(lambda (grob) (ly:stencil-combine-at-edge (ly:bar-line::print grob) X RIGHT (grob-interpret-markup grob #{ \markup\with-dimensions-from \null { \translate #'(0 . -.13)\arrow-at-angle #-60 #(sqrt 8) ##t }#}) 0)) \break } invDownStaffBarLine = { \once \override Staff.BarLine.stencil = #(lambda (grob) (ly:stencil-combine-at-edge (ly:bar-line::print grob) X RIGHT (grob-interpret-markup grob #{ \markup\with-dimensions-from \null { \translate #'(2.7 . -.6)\arrow-at-angle #-80 #(sqrt 200) ##t }#}) 0)) \break } convUpStaffBarLine = { \once \override Staff.BarLine.stencil = #(lambda (grob) (ly:stencil-combine-at-edge (ly:bar-line::print grob) X RIGHT (grob-interpret-markup grob #{ \markup\with-dimensions-from \null { \translate #'(0 . .13)\arrow-at-angle #60 #(sqrt 8) ##t }#}) 0)) \break } invUpStaffBarLine = { \once \override Staff.BarLine.stencil = #(lambda (grob) (ly:stencil-combine-at-edge (ly:bar-line::print grob) X RIGHT (grob-interpret-markup grob #{ \markup\with-dimensions-from \null { \translate #'(2.7 . .6)\arrow-at-angle #80 #(sqrt 200) ##t }#}) 0)) \break } force = -\tweak padding #.5 -\tweak stencil #(lambda (grob) (grob-interpret-markup grob #{ \markup \override #'(filled . #t) \path #0 #'((moveto 0 0) (lineto 1 0) (lineto .5 1) (closepath)) #})) ^- %% end defs %%% voixUn = \relative { \time 4/4 | % mes.1 \once\override MultiMeasureRest.expand-limit = #0 R1-"Tacet ~ 1 minute" \break | % mes.2 \tempo \markup \column { "Allegro entusiasmo" \normal-text "Commencer à peu près lorsque le comédien dit « Des pages et des pages »." } \durLineOn \shape #'((0 . 0) (0 . 0) (30 . 0) (43 . 0)) PhrasingSlur fis''4\-\( ^\markup \override #'(height . 1) \override #'(angularity . 1) \draw-squiggle-line #2 #'(102 . 0) ##t d4\- s2 | % mes.3 s8 fis4\- s8 s2 \) \repeat volta 2 { | % mes.4 \durLineOff a2\( b | % mes.5 a4 g( g) fis\) | % mes.6 e4\( d cis d | % mes.7 e4\) r r2\break | % mes.8 g2\( fis \noBreak | % mes.9 b2( b4) a \) \noBreak | % mes.10 g4\( fis e a8 e\)\noBreak | % mes.11 g2( fis4) r \splitStaffBarLine | % mes.12 cis2\( ces | % mes.13 des4 ces( bes) c\) | % mes.14 f4( e d e | % mes.15 g-.) r r8 fis( d4-.)\convDownStaffBarLine | % mes.16 cis( d e fis8 gis \noBreak | % mes.17 a2 e)\noBreak | % mes.18 d4( cis b cis8 a) \noBreak | % mes.19 b2( e,)\break | % mes.20 cis'4( d e fis8 gis\noBreak | % mes.21 a2 e)\noBreak | % mes.22 fis4( d b e\noBreak | % mes.23 a,) r r2\splitStaffBarLine | % mes.24 cis4( d ees f8 ges)\noBreak | % mes.25\noBreak aes2( ees4.) d8( | % mes.26 c4. bes8 d4 cis8 a)\noBreak | % mes.27 cis4.( e,8 fis2)\convDownStaffBarLine } | % mes.28 \durLineOn fis4 \- s2 \durLineOff e8-\force g-\force | % mes.29 \durLineOn fis4 \- s2 \durLineOff g8-\force e-\force \break | % mes.30 \durLineOn \shape #'((0 . -2) (0 . 0) (-4 . -2) (-2.5 . -2)) Slur d4\-( fis\- gis2\- | % mes.31 s8 cis4\- \durLineOff d8-\force) ees-\force f-\force g-\force f-\force \splitStaffBarLine | % mes.32 a2\( b4 cis8 b | % mes.33 a4 g( g) f\) | % mes.34 e4( d c f8 d | % mes.35 e4) r r2 \invDownStaffBarLine | % mes.36 s1 | % mes.37 s1 | % mes.38 s1 | % mes.39 s1 | % mes.40 s1 | % mes.41 s1 | % mes.42 s1 | % mes.43 s1 \break | % mes.44 s1 | % mes.45 s1 | % mes.46 s1 | % mes.47 s1\break | % mes.48 s1 | % mes.49 s1\break | % mes.50 s1 | % mes.51 s1 \break | % mes.52 \tweak padding #3 \tempo\markup \override #'(baseline-skip . 2.5) \left-column\normal-text { \override #'(line-width . 90) \justify { Octave au choix, mode de jeu au choix, ordre au choix, rythme au choix, notes très détachées, de plus en plus destructuré. } \vspace #.5 \italic "Ritardando" } \repeat volta 4 { \durLineOn d,4*4/5-. -\markup \with-dimensions-from \null \path #.2 #'((moveto -1.5 -2) (lineto 85 -2) (lineto 85 6.5) (lineto -1.5 6.5) (closepath)) fis-. bes-. des-. d-. \durLineOff } \tweak break-visibility #begin-of-line-invisible \tweak self-alignment-X #RIGHT \mark\markup "4×" \break | % mes.53 s1 | % mes.54 s1 | % mes.55 s1 | % mes.56 s1 | % mes.57 s1 | % mes.58 s1 | % mes.59 s1 | % mes.60 s1 | % mes.61 s1 | % mes.62 s1 \bar "|." } voixDeux = \relative { \time 4/4 | % mes.1 s1 | % mes.2 s1 | % mes.3 s1 \repeat volta 2 { | % mes.4 s1 | % mes.5 s1 | % mes.6 s1 | % mes.7 s1 | % mes.8 s1 | % mes.9 s1 | % mes.10 s1 | % mes.11 s1 | % mes.12 cis'8( e g a) ces,( ees ges aes) | % mes.13 des,8( f aes ces) ees,( g bes c) | % mes.14 f,8( a c e) g,( b d e) | % mes.15 a,8( cis e g) r fis( d4-.)\convUpStaffBarLine | % mes.16 s1 | % mes.17 s1 | % mes.18 s1 | % mes.19 s1 | % mes.20 s1 | % mes.21 s1 | % mes.22 s1 | % mes.23 s1 | % mes.24 cis,8( e g a) bes,( ees ges aes) | % mes.25 des,8( f aes ces) ees,8( g bes c) | % mes.26 f,8( a c ees) g,( b d e) | % mes.27 a,8( cis e g) r e,8( fis4)\convUpStaffBarLine } | % mes.28 s1 | % mes.29 s1 | % mes.30 s1 | % mes.31 s1 | % mes.32 a'2\( ces4 bes8 ces | % mes.33 aes4 ges( g) f4\) | % mes.34 des4( ces e f8 d | % mes.35 e4) r r2 \invUpStaffBarLine | % mes.36 s1 | % mes.37 s1 | % mes.38 s1 | % mes.39 s1 | % mes.40 s1 | % mes.41 s1 | % mes.42 s1 | % mes.43 s1 | % mes.44 s1 | % mes.45 s1 | % mes.46 s1 | % mes.47 s1 | % mes.48 s1 | % mes.49 s1 | % mes.50 s1 | % mes.51 s1 | % mes.52 s1 | % mes.53 s1 | % mes.54 s1 | % mes.55 s1 | % mes.56 s1 | % mes.57 s1 | % mes.58 s1 | % mes.59 s1 | % mes.60 s1 | % mes.61 s1 | % mes.62 s1 \bar "|." } DynUn = { \time 4/4 | % mes.1 s1 | % mes.2 s1^\markup \with-dimensions-from "x" \override #'(filled . #t) \path #.2 #'((moveto 0 -2.5) (lineto 102 -2.5) (lineto 102 0) (closepath)) | % mes.3 s1 \repeat volta 2 { | % mes.4 s1^\markup \with-dimensions-from "x" \override #'(filled . #t) \path #.2 #'((moveto 0 0) (lineto 80 0) (lineto 80 -2.5) (lineto 0 -2.5) (closepath)) | % mes.5 s1 | % mes.6 s1 | % mes.7 s1 | % mes.8 s1^\markup \with-dimensions-from "x" \override #'(filled . #t) \path #.2 #'((moveto 0 -1.5) (lineto 35 0) (lineto 95 0) (lineto 95 -4) (lineto 0 -4) (closepath)) | % mes.9 s1 | % mes.10 s1 | % mes.11 s1 | % mes.12 s1^\markup\fulLev | % mes.13 s1 | % mes.14 s1^\markup\fulLev | % mes.15 s1 | % mes.16 s1^\markup\fulLev | % mes.17 s1 | % mes.18 s1 | % mes.19 s1 | % mes.20 s1^\markup \with-dimensions-from \column { x x x } \override #'(filled . #t) \path #.2 #'((moveto 0 -4) (lineto 83 -4) (lineto 83 0) (lineto 0 0) (closepath)) | % mes.21 s1 | % mes.22 s1 | % mes.23 s1 | % mes.24 s1^\markup\fulLev | % mes.25 s1 | % mes.26 s1^\markup\fulLev | % mes.27 s1 } | % mes.28 s1^\markup\fulLev | % mes.29 s1 | % mes.30 s1^\markup\fulLev | % mes.31 s1 | % mes.32 s1^\markup \with-dimensions-from \column { x x x } \override #'(filled . #t) \path #.2 #'((moveto 0 -4) (lineto 83 -4) (lineto 83 -3) (curveto 65 1 18 1 0 -3) (closepath)) | % mes.33 s1 | % mes.34 s1 | % mes.35 s1 | % mes.36 s1 | % mes.37 s1 | % mes.38 s1 | % mes.39 s1 | % mes.40 s1 | % mes.41 s1 | % mes.42 s1 | % mes.43 s1 | % mes.44 s1^\markup\fulLev | % mes.45 s1 | % mes.46 s1 | % mes.47 s1 | % mes.48 s1^\markup\fulLev | % mes.49 s1 | % mes.50 s1^\markup\fulLev | % mes.51 s1 | % mes.52 s1 | % mes.53 s1 | % mes.54 s1 | % mes.55 s1 | % mes.56 s1 | % mes.57 s1 | % mes.58 s1 | % mes.59 s1 | % mes.60 s1 | % mes.61 s1 | % mes.62 s1 \bar "|." } DynDeux = { \time 4/4 | % mes.1 s1 | % mes.2 s1 | % mes.3 s1 \repeat volta 2 { | % mes.4 s1 | % mes.5 s1 | % mes.6 s1 | % mes.7 s1 | % mes.8 s1 | % mes.9 s1 | % mes.10 s1 | % mes.11 s1 | % mes.12 s1^\markup\fulLev | % mes.13 s1 | % mes.14 s1^\markup\fulLev | % mes.15 s1 | % mes.16 s1 | % mes.17 s1 | % mes.18 s1 | % mes.19 s1 | % mes.20 s1 | % mes.21 s1 | % mes.22 s1 | % mes.23 s1 | % mes.24 s1^\markup\fulLev | % mes.25 s1 | % mes.26 s1^\markup\fulLev | % mes.27 s1 } | % mes.28 s1 | % mes.29 s1 | % mes.30 s1 | % mes.31 s1 | % mes.32 s1^\markup \with-dimensions-from \column { x x x } \override #'(filled . #t) \path #.2 #'((moveto 0 -5) (lineto 83 -5) (lineto 83 -1.5) (curveto 77 2 60 -4 40 -4) (curveto 15 -4 10 2 0 -1.5) (closepath)) | % mes.33 s1 | % mes.34 s1 | % mes.35 s1 | % mes.36 s1 | % mes.37 s1 | % mes.38 s1 | % mes.39 s1 | % mes.40 s1 | % mes.41 s1 | % mes.42 s1 | % mes.43 s1 | % mes.44 s1 | % mes.45 s1 | % mes.46 s1 | % mes.47 s1 | % mes.48 s1 | % mes.49 s1 | % mes.50 s1 | % mes.51 s1 | % mes.52 s1 | % mes.53 s1 | % mes.54 s1 | % mes.55 s1 | % mes.56 s1 | % mes.57 s1 | % mes.58 s1 | % mes.59 s1 | % mes.60 s1 | % mes.61 s1 | % mes.62 s1 \bar "|." } \paper { page-count = 4 markup-system-spacing.basic-distance = 15 } \header { title = \markup\normal-text\fontsize #2 \center-column { "Variations électroniques sur le concerto" "pour violon de BEETHOVEN" } composer = "Yoann LE BARS" copyright = \markup \fontsize #-2 \column { \vspace #1 \concat { "©" \hspace #.15 "2021 by Johan Le Bars" } } } \score { \new StaffGroup << \new Staff \voixUn \new Dynamics \DynUn \new Staff \with { \RemoveAllEmptyStaves } \voixDeux \new Dynamics \DynDeux >> \layout { indent = 0 system-count = 22 \context { \Score \accidentalStyle dodecaphonic proportionalNotationDuration = #(ly:make-moment 1/4) \override SpacingSpanner.strict-note-spacing = ##t \override PhrasingSlur.thickness = #(variable-bow-thickness 6 25 1 3) \override Slur.thickness = #(variable-bow-thickness 6 25 1 3) \override Tie.thickness = #(variable-bow-thickness 6 18 1 2) \override BarNumber.font-shape = #'italic \override BarNumber.font-size = #-2 \override BarNumber.X-offset= #.3 \override BarNumber.Y-offset = #4 } \context { \StaffGroup \omit SystemStartBracket \override VerticalAxisGroup.staff-staff-spacing = #'((basic-distance . 13)) } \context { \Voice \consists "Duration_line_engraver" %\override Stem.neutral-direction = #up } } }