diff --git a/lilydrum.ly b/lilydrum.ly index 81a77e6..ee38e94 100755 --- a/lilydrum.ly +++ b/lilydrum.ly @@ -3,12 +3,12 @@ LilyPond file definitions for Pipeband drumming scores. Primarily focused on Snare drumming, occasional bass or tenor scores should be possible. - Especially with the use of an external eps file with flourishi symbols This file builds on work done by Simon Froger. + Substantial changes by ET de Boone, Seaforth Highlanders of Holland (seaforth.nl) Include by using : - \include "[path]/lilydrum.ly" + \include "[pathtothisfile]" e.g. "~/lilydrum.ly" Music has to be put into : \new DrumStaff { @@ -18,318 +18,17 @@ } %} -#(ly:set-option 'point-and-click #f) % Note name defs : % "d" for the right hand ("droite") and % "g" for the left hand ("gauche") +%----------------------------------------- -drumPitchNames = -#(append '( - (d . right-hand) - (g . left-hand) - (right . right-hand) - (left . left-hand) +#(ly:set-option 'point-and-click #f) +#(ly:set-option 'relative-includes #t) - (dback . right-backstick) - (gback . left-backstick) - (rightback . right-backstick) - (leftback . left-backstick) - - (dcross . right-crossstick) - (gcross . right-crossstick) - (rightcross . right-crossstick) - (leftcross . right-crossstick) - ) - drumPitchNames -) - -% Position according to the line : right hand above and left hand below -#(define pipeband-style '( - (right-hand () #f 1) - (left-hand () #f -1) - (right-crossstick cross #f 1) - (left-crossstick cross #f -1) - (right-backstick xcircle #f 1) - (left-backstick xcircle #f -1) - ) -) -% Built-in noteheads: default, cross, xcircle, diamond - -% =================================================== % -% Layout tweaks for good defaults % -% =================================================== % -\layout { - \context { - \DrumStaff - - % add hands to note definitions - drumStyleTable = #(alist->hash-table pipeband-style) - - % one line per staff - \override StaffSymbol.line-positions = #'(0) - - % stems - \override Stem.direction = #DOWN % stems down - \override Stem.length = #9 % unbeamed stems length - \override Stem.stemlet-length = #1.5 % short stem length - - % beams - \override Beam.beam-thickness = #0.4 % beam-thickness - \override Beam.positions = #'(-3.8 . -3.8) % fix beams on one height - - % slurs and ties - \override Slur.direction = #UP % Slurs on top - \override Tie.direction = #UP % Ties on top - - % dynamics up - \dynamicUp - - % slurs below rolls number - %\override TextScript.outside-staff-priority = ##f - %\override TextScript.side-axis = #0 - %\override TextScript.staff-padding = #3 - %\override TextScript.X-offset = #2 % padding to stems - %\override TextScript.extra-offset = #'(-0.3 . 0) - - % tremolos (rolls) - \override StemTremolo.slope = #0.5 % slope - \override StemTremolo.beam-width = #1.5 % beam-width - \override StemTremolo.beam-thickness = #0.3 % beam-thickness - \override StemTremolo.extra-offset = #'(0 . 0.3) % vertical pos. position - - %\override StemTremolo.Y-offset = #-2.8 - - % repeat brackets - \consists "Horizontal_bracket_engraver" - \override HorizontalBracket.staff-padding = #3.5 % staff-padding - \override HorizontalBracket.direction = #UP % brackets under thr staff - \override HorizontalBracket.bracket-flare = #'(0 . 0) % vertical brackets - - } - \context { - \Score - - \override RehearsalMark.break-align-symbols = #'(clef) - \override RehearsalMark.padding = #3 - \override VoltaBracket.edge-height = #'(1.5 . 1.5) - } -} - -% =================================================== % -% Define some tweaks for printing nicely % -% =================================================== %\ - -eighthBeaming = { - \set Score.baseMoment = #(ly:make-moment 1 8) - \set Score.beatStructure = #'( 2 ) -} -sixteenthBeaming = { - \set Score.baseMoment = #(ly:make-moment 1 16) - \set Score.beatStructure = #'( 4 ) -} - -\layout{ - % no indent - indent = 0 - \context{ - \DrumStaff - % always numeric Time Signatures - \numericTimeSignature - - % bar line height - \override BarLine.bar-extent = #'(-2 . 2) - - % I like being able to identify the 8th notes - subdivideBeams = ##t - strictBeatBeaming = ##t - - \override TupletBracket.bracket-visibility = #'if-no-beams - } -} - -% ================================================= % -% Side Sticking (modifies note, or adds mark) % -% ================================================= % -backstick = #(define-music-function (parser location notes) (ly:music?) - #{ - \temporary \override Staff.NoteHead.style = \ - $notes - \revert Staff.NoteHead.style - #}) -crossstick = #(define-music-function (parser location notes) (ly:music?) - #{ - \temporary \override Staff.NoteHead.style = #'xcircle - $notes - \revert Staff.NoteHead.style - #}) -rimshot = #(define-music-function (parser location notes) (ly:music?) - #{ - $notes - - #}) - -% ================================================= % -% Tenor Flourishing % -% ================================================= % -splitTheFeather = \markup{ \musicglyph #"noteheads.s2xcircle"} -cartWheel = \markup { \musicglyph #"timesig.neomensural94" } -up = \markup { - % \combine - %\tiny \triangle ##t - \center-align \draw-line #'(0 . 2) - } - -flourish = #(define-music-function (parser location notes) (ly:music?) - #{ - \temporary \override Staff.NoteHead.style = #'cross - $notes - \revert Staff.NoteHead.style - #}) -scoop = #(define-music-function (parser location notes end) (ly:music? ly:music?) - #{ - $notes ^\markup { \path - $end - #}) - -% stf = \splitTheFeather -% cart = \cartWheel -% fl = \flourish - -% ================================================= % -% Functions % -% ================================================= % - -% triplet -triplet = #(define-music-function (parser location notes) (ly:music?) - #{ \tuplet 3/2 { $notes } #} - ) - -% dynamics -v = #(define-event-function (parser location) () - #{ \upbow #} -) - -% repeat brackets -dr = #(define-event-function (parser location) () - #{ \startGroup #} -) -fr = #(define-event-function (parser location) () - #{ \stopGroup #} -) - -% dynamics with extended lines -dynLine = #(define-music-function - (parser location text) - (markup?) - #{ - \once \override TextSpanner.style = #'line - \once \override TextSpanner.bound-details.left.text = \markup { - \combine - \draw-line #'(0 . -1) - \draw-line #'(1 . 0) - \dynamic #text - } - \once \override TextSpanner.bound-details.right.text = \markup { \draw-line #'(0 . -1) } - #}) - -tutti = #(define-event-function (parser location notes) (ly:music?) #{ - \startGroup - % still to add: a little 'u' - $notes - \stopGroup - #}) - -% ================================================= % -% Flams, Drags & the sort % -% ================================================= % -drumgrace = #(define-music-function (parser location notes) (ly:music?) #{ - % Set settings - \stemUp - \once \override Beam.positions = #'(1.8 . 1.8) - \once \override DrumStaff.Stem.length = #5 - \override Flag.stroke-style = #"grace" - \override Score.GraceSpacing #'spacing-increment = #1 - \override Score.Stem #'beamlet-max-length-proportion = #'(0.5 . 0.5) - - % Print notes - \grace $notes - - % Revert back - \revert Score.Stem #'beamlet-default-length - \revert Flag.stroke-style - \stemNeutral -#}) - - -% Flams -flamd = \drummode { \drumgrace { g8 } } % Flam right -flamg = \drummode { \drumgrace { d8 } } % Flam left -flamddr = \drummode { \drumgrace { g8\startGroup } } % Flam right with start repeat -flamgdr = \drummode { \drumgrace { d8\startGroup } } % Flam left with start repeat - -% Drags -dragd = \drummode { \drumgrace { g16[ g] }} % Drag right -dragg = \drummode { \drumgrace { d16[ d] }} % Drag left -dragddr = \drummode { \drumgrace { g16[\startGroup g] }} % Drag right with start repeat -draggdr = \drummode { \drumgrace { d16[\startGroup d] }} % Drag left with start repeat - -% Ruff -ruffg = \drummode { \drumgrace { g16[ d g] }} % Ruff right -ruffd = \drummode { \drumgrace { d16[ g d] }} % Ruff left -ruffgdr = \drummode { \drumgrace { g16[\startGroup d g] }} % Ruff right with start repeat -ruffddr = \drummode { \drumgrace { d16[\startGroup g d] }} % Ruff left with start repeat - -% Swiss Ruff -sruffg = \drummode { \drumgrace { g16[ d d] }} % Swiss Ruff right -sruffd = \drummode { \drumgrace { d16[ g g] }} % Swiss Ruff left -sruffgdr = \drummode { \drumgrace { g16[\startGroup d d] }} % Swiss Ruff right with start repeat -sruffddr = \drummode { \drumgrace { d16[\startGroup g g] }} % Swiss Ruff left with start repeat - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Embellishment functions, automatic left or right %% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% Flam -flam = #(define-music-function (parser location note) (ly:music?) #{ - % is note right-handed? then \flamd - % if left, then \flamg - #(if (string=? (symbol->string (ly:music-property note 'drum-type)) "left-hand") - #{ \flamg #} - #{ \flamd #}) - % print the note, else it won't show up - $note -#}) - -% Drag -drag = #(define-music-function (parser location note) (ly:music?) #{ - % is note right-handed? then \flamd - % if left, then \flamg - #(if (string=? (symbol->string (ly:music-property note 'drum-type)) "left-hand") - #{ \dragg #} - #{ \dragd #}) - % print the note, else it won't show up - $note -#}) - -% Ruff -ruff = #(define-music-function (parser location note) (ly:music?) #{ - % is note right-handed? then \flamd - % if left, then \flamg - #(if (string=? (symbol->string (ly:music-property note 'drum-type)) "left-hand") - #{ \ruffg #} - #{ \ruffd #}) - % print the note, else it won't show up - $note -#}) - -% Swiss Ruff -sruff = #(define-music-function (parser location note) (ly:music?) #{ - % is note right-handed? then \flamd - % if left, then \flamg - #(if (string=? (symbol->string (ly:music-property note 'drum-type)) "left-hand") - #{ \sruffg #} - #{ \sruffd #}) - % print the note, else it won't show up - $note -#}) +\include "lilydrum/layout_tweaks.ily" +\include "lilydrum/musical_functions.ily" +\include "lilydrum/embellishments.ily" +\include "lilydrum/flourishing.ily" +\include "lilydrum/special_sticking.ily" diff --git a/lilydrum/embellishments.ily b/lilydrum/embellishments.ily new file mode 100755 index 0000000..73d4060 --- /dev/null +++ b/lilydrum/embellishments.ily @@ -0,0 +1,93 @@ +% ================================================= % +% Flams, Drags & the sort % +% ================================================= % +drumgrace = #(define-music-function (parser location notes) (ly:music?) #{ + % Set settings + \stemUp + \once \override Beam.positions = #'(1.8 . 1.8) + \once \override DrumStaff.Stem.length = #5 + \override Flag.stroke-style = #"grace" + \override Score.GraceSpacing #'spacing-increment = #1 + \override Score.Stem #'beamlet-max-length-proportion = #'(0.5 . 0.5) + + % Print notes + \grace $notes + + % Revert back + \revert Score.Stem #'beamlet-default-length + \revert Flag.stroke-style + \stemNeutral +#}) + + +% Flams +flamd = \drummode { \drumgrace { g8 } } % Flam right +flamg = \drummode { \drumgrace { d8 } } % Flam left +flamddr = \drummode { \drumgrace { g8\startGroup } } % Flam right with start repeat +flamgdr = \drummode { \drumgrace { d8\startGroup } } % Flam left with start repeat + +% Drags +dragd = \drummode { \drumgrace { g16[ g] }} % Drag right +dragg = \drummode { \drumgrace { d16[ d] }} % Drag left +dragddr = \drummode { \drumgrace { g16[\startGroup g] }} % Drag right with start repeat +draggdr = \drummode { \drumgrace { d16[\startGroup d] }} % Drag left with start repeat + +% Ruff +ruffg = \drummode { \drumgrace { g16[ d g] }} % Ruff right +ruffd = \drummode { \drumgrace { d16[ g d] }} % Ruff left +ruffgdr = \drummode { \drumgrace { g16[\startGroup d g] }} % Ruff right with start repeat +ruffddr = \drummode { \drumgrace { d16[\startGroup g d] }} % Ruff left with start repeat + +% Swiss Ruff +sruffg = \drummode { \drumgrace { g16[ d d] }} % Swiss Ruff right +sruffd = \drummode { \drumgrace { d16[ g g] }} % Swiss Ruff left +sruffgdr = \drummode { \drumgrace { g16[\startGroup d d] }} % Swiss Ruff right with start repeat +sruffddr = \drummode { \drumgrace { d16[\startGroup g g] }} % Swiss Ruff left with start repeat + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Embellishment functions, automatic left or right %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Flam +flam = #(define-music-function (parser location note) (ly:music?) #{ + % is note right-handed? then \flamd + % if left, then \flamg + #(if (string=? (symbol->string (ly:music-property note 'drum-type)) "left-hand") + #{ \flamg #} + #{ \flamd #}) + % print the note, else it won't show up + $note +#}) + +% Drag +drag = #(define-music-function (parser location note) (ly:music?) #{ + % is note right-handed? then \flamd + % if left, then \flamg + #(if (string=? (symbol->string (ly:music-property note 'drum-type)) "left-hand") + #{ \dragg #} + #{ \dragd #}) + % print the note, else it won't show up + $note +#}) + +% Ruff +ruff = #(define-music-function (parser location note) (ly:music?) #{ + % is note right-handed? then \flamd + % if left, then \flamg + #(if (string=? (symbol->string (ly:music-property note 'drum-type)) "left-hand") + #{ \ruffg #} + #{ \ruffd #}) + % print the note, else it won't show up + $note +#}) + +% Swiss Ruff +sruff = #(define-music-function (parser location note) (ly:music?) #{ + % is note right-handed? then \flamd + % if left, then \flamg + #(if (string=? (symbol->string (ly:music-property note 'drum-type)) "left-hand") + #{ \sruffg #} + #{ \sruffd #}) + % print the note, else it won't show up + $note +#}) diff --git a/lilydrum/flourish_symbols/butterfly.eps b/lilydrum/flourish_symbols/butterfly.eps new file mode 100755 index 0000000..ad99448 --- /dev/null +++ b/lilydrum/flourish_symbols/butterfly.eps @@ -0,0 +1,62 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner +%%Title: butterfly.eps +%%CreationDate: Tue Nov 3 18:58:20 2015 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%Pages: 1 +%%BoundingBox: 14 14 28 23 +%%EndComments +%%BeginProlog +% Use own dictionary to avoid conflicts +10 dict begin +%%EndProlog +%%Page: 1 1 +% Translate for offset +14.173228346456694 14.173228346456694 translate +% Translate to begin of first scanline +0 8 translate +13 -8 scale +% Image geometry +13 8 8 +% Transformation matrix +[ 13 0 0 8 0 0 ] +% Strings to hold RGB-samples per scanline +/rstr 13 string def +/gstr 13 string def +/bstr 13 string def +{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop} +{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop} +{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop} +true 3 +%%BeginData: 521 ASCII Bytes +colorimage +s8N,fqu$Hrp$r(^J,~> +s8N,fqu$Hrp$r(^J,~> +s8N,fqu$Hrp$r(^J,~> +%,Fub,@p3Al">-rJFS-~> +%,Fub,@p3Al">-rJFS-~> +%,Fub,@p3Al">-rJFS-~> +%!VFFnjYIn8*9jOooah~> +%!VFFnjYIn8*9jOooah~> +%!VFFnjYIn8*9jOooah~> +!3Z>$"7e/Pci*kDS:C~> +!3Z>$"7e/Pci*kDS:C~> +!3Z>$"7e/Pci*kDS:C~> +!4)S'".KO$rr2otR",~> +!4)S'".KO$rr2otR",~> +!4)S'".KO$rr2otR",~> +%#Fo_s2eEn(3KNTjbJ?~> +%#Fo_s2eEn(3KNTjbJ?~> +%#Fo_s2eEn(3KNTjbJ?~> +%,#f`D0l$Xfg[Vp@e"s~> +%,#f`D0l$Xfg[Vp@e"s~> +%,#f`D0l$Xfg[Vp@e"s~> +s8N,`p\b$no^Mn\J,~> +s8N,`p\b$no^Mn\J,~> +s8N,`p\b$no^Mn\J,~> +%%EndData +showpage +%%Trailer +end +%%EOF diff --git a/lilydrum/flourish_symbols/st_andrews_crss.eps b/lilydrum/flourish_symbols/st_andrews_crss.eps new file mode 100755 index 0000000..71dd630 --- /dev/null +++ b/lilydrum/flourish_symbols/st_andrews_crss.eps @@ -0,0 +1,107 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.14.2 (http://cairographics.org) +%%CreationDate: Wed Nov 4 14:58:05 2015 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 3 +%%BoundingBox: 0 -1 21 19 +%%EndComments +%%BeginProlog +save +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/pdfmark where { pop globaldict /?pdfmark /exec load put } + { globaldict begin /?pdfmark /pop load def /pdfmark + /cleartomark load def end } ifelse +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 -1 21 19 +%%EndPageSetup +q 0 -1 21 20 rectclip q +Q q +0 18.4 20.801 -18.398 re W n +q +0 18.4 21 -19 re W n +[ 0.8 0 0 0.8 0 -0.00000038147 ] concat +/DeviceRGB setcolorspace +8 dict dup begin + /ImageType 1 def + /Width 26 def + /Height 23 def + /Interpolate true def + /BitsPerComponent 8 def + /Decode [ 0 1 0 1 0 1 ] def + /DataSource currentfile /ASCII85Decode filter /FlateDecode filter def + /ImageMatrix [ 1 0 0 -1 0 23 ] def +end +image +Gatm8gFo%9)#d/2gE[.Um;+hI3UEp%Xt3I?N/l1l9M:.%/M((/>\H_ta+]A=3YdQT;E&]$>p + h8S*.'p^e?KM&*c:JEl*lPlhY]"?n,#8_kBl([IGWlCjo:D5oCKl;_loW%4[;3Kfk`i84XJ!hG'9ZZkmI]J8tcC:B[7P)8U^Qges79AqoD2&" + uOF+^U@A0C*>jgD>CAK/&lJ9j'uVEpg"s`+"o;18kr!ISt:+ZmI'BL"Th:]!.gj=q^_R@ + X]DJQ$u5H]4b7UU=0]#?@q2[Ge^[ZUEJ&\*aYl%8>[`^T1GeWU:;>iV9u%AT&p-1*.r99JP + @%GUWrKf*?ai@Q._-:)H[E@o/:JKQ7L]d%@0Hh2Z.W<_Q7+NB"Dsb\.T!JW<%?&fO@G.<14 + RWqU/5`D!2En.g=c[pQ"ZSa])#]EAp.5+o("QE/hSbQ*:tO5,GV?I['$R7U:_JL91qo*-R[ + uH?9$s>q"VoB[\KV>aiWP:+r6*EZEeLiE$,pS6.O`E$X0%EG(m3STF.U$[%*#sWE+S@)%aar5I.TL"I"DT6HaWU0*<62pi1c@6K`%ma^jCCHHYL.#+pi]VpMi0/= + /R0o0hU+&=3a,W^+:nf*-78_W&F#ijXf\]IGeEbDG-hIM;gh-V8=a]5VA0ihIgKEj`7X2PR + ]-`3?68Nh%B8Mo)ReV]RB%3^':PN(W$]j)KQAFAu)?B=)\l,9DBMS\qn\QSR?F?*ak[[6UO + Uc(fHRFf\Fsj8uK!o;fUc($_un,Q4WseYD3Wq7Rpt%:.uWK*o=;.#s<5u#E+Lu*sDn-73Xj + $mjn=:YHJJCr%'<)QH"lqiM"_.0[tnHm$*a+md=r?4\5brK!qE0ba97&eXiYuWgdUAPsCGS + iUeN4IjIJuTL,)c==hP2jaV[oW1gH$ZDk+VCbh,sd2J*cEcMk">tF-*,B#?*i82/\4n9@l2 + JY#):A/5V5Q@+Tkl~> +Q +Q Q +showpage +%%Trailer +end restore +%%EOF diff --git a/lilydrum/flourish_symbols/stop.eps b/lilydrum/flourish_symbols/stop.eps new file mode 100755 index 0000000..a663d4d --- /dev/null +++ b/lilydrum/flourish_symbols/stop.eps @@ -0,0 +1,50 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner +%%Title: stop.eps +%%CreationDate: Wed Nov 4 21:02:56 2015 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%Pages: 1 +%%BoundingBox: 14 14 23 33 +%%EndComments +%%BeginProlog +% Use own dictionary to avoid conflicts +10 dict begin +%%EndProlog +%%Page: 1 1 +% Translate for offset +14.173228346456693 14.173228346456693 translate +% Translate to begin of first scanline +0 18.747656542932134 translate +8.2488188976377952 -18.747656542932134 scale +% Variable to keep one line of raster data +/scanline 9 3 mul string def +% Image geometry +9 17 8 +% Transformation matrix +[ 9 0 0 17 0 0 ] +{ currentfile scanline readhexstring pop } false 3 +%%BeginData: 946 ASCII Bytes +colorimage +fffffff5f5f5fffffffffffffffffffffffffffffffffffffcfcfc +fafafaffffff4e4e4e0000000000000000004e4e4effffffffffff +ffffff4e4e4e000000ffffffffffffffffff0000004e4e4effffff +ffffff000000ffffffffffffffffffffffffffffff000000ffffff +ffffff000000ffffffffffffffffffffffffffffff000000ffffff +ffffff000000ffffffffffffffffffffffffffffff000000ffffff +ffffff4e4e4e000000ffffffffffffffffff0000004e4e4effffff +ffffffffffff4e4e4e0000000000000000004e4e4efffffff5f5f5 +ffffffffffffffffffffffff000000ffffffffffffffffffffffff +ffffffffffffffffffffffff000000ffffffffffffffffffffffff +ffffffffffffffffffffffff000000ffffffffffffffffffffffff +ffffffffffffffffffffffff000000ffffffffffffffffffffffff +ffffffffffffffffffffffff000000ffffffffffffffffffffffff +ffffffffffffffffffffffff000000ffffffffffffffffffffffff +ffffffffffffffffffffffff000000ffffffffffffffffffffffff +ffffffffffffffffffffffff000000ffffffffffffffffffffffff +000000000000000000000000000000000000000000000000000000 +%%EndData +showpage +%%Trailer +end +%%EOF diff --git a/lilydrum/flourishing.ily b/lilydrum/flourishing.ily new file mode 100755 index 0000000..d91569b --- /dev/null +++ b/lilydrum/flourishing.ily @@ -0,0 +1,45 @@ +% ================================================= % +% Tenor Flourishing % +% ================================================= % +% Part of lilydrum +splitTheFeather = \markup{ \musicglyph #"noteheads.s2xcircle"} +cartWheel = \markup { \musicglyph #"timesig.neomensural94" } +up = \markup { + %\center-column { + \combine + \draw-line #'(0 . -2) % draw stick + \combine % draw arrow + \draw-line #'(0.5 . -1) + \draw-line #'(-0.5 . -1) + %\arrow-head #Y #UP ##f + %} + } +bfly = \markup { + \epsfile #X #2 #"../lilydrum/flourish_symbols/butterfly.eps" +} +stop = \markup { + \epsfile #X #2 #"../lilydrum/flourish_symbols/stop.eps" + } +scoop = \markup { + \path #.2 #'( (moveto 0 0 ) + (lineto 3 1 ) + (lineto 6 0 ) + (lineto 7 1 ) + ) + } + +flourish = #(define-music-function (parser location notes) (ly:music?) + #{ + \temporary \override Staff.NoteHead.style = #'cross + $notes + \revert Staff.NoteHead.style + #}) +sdcoop = #(define-music-function (parser location notes end) (ly:music? ly:music?) + #{ + $notes + $end + #}) + +% stf = \splitTheFeather +% cart = \cartWheel +% fl = \flourish \ No newline at end of file diff --git a/lilydrum/layout_tweaks.ily b/lilydrum/layout_tweaks.ily new file mode 100755 index 0000000..376059d --- /dev/null +++ b/lilydrum/layout_tweaks.ily @@ -0,0 +1,94 @@ +% =================================================== % +% Layout tweaks for good defaults % +% =================================================== % + +% Note name defs : +% "d" for the right hand ("droite") and +% "g" for the left hand ("gauche") +drumPitchNames = +#(append '( + (d . right-hand) + (g . left-hand) + (right . right-hand) + (left . left-hand) + ) + drumPitchNames +) + +% Position according to the line : right hand above and left hand below +#(define pipeband-style '( + (right-hand () #f 1) + (left-hand () #f -1) + ) +) +\layout { + \context {% add hands to note definitions + \DrumStaff + drumStyleTable = #(alist->hash-table pipeband-style) + } +} +\layout { + \context { + \DrumStaff + \name PipeBandDrumStaff + \alias DrumStaff + % one line per staff + \override StaffSymbol.line-positions = #'(0) + % bar line height + \override BarLine.bar-extent = #'(-2 . 2) + + % stems + \override Stem.direction = #DOWN % stems down + \override Stem.length = #9 % unbeamed stems length + \override Stem.stemlet-length = #1.5 % short stem length + + % beams + \override Beam.beam-thickness = #0.4 % beam-thickness + \override Beam.positions = #'(-3.8 . -3.8) % fix beams on one height + + % slurs and ties + \override Slur.direction = #UP % Slurs on top + \override Tie.direction = #UP % Ties on top + + % dynamics up + \dynamicUp + + % slurs below rolls number + %\override TextScript.outside-staff-priority = ##f + %\override TextScript.side-axis = #0 + %\override TextScript.staff-padding = #3 + %\override TextScript.X-offset = #2 % padding to stems + %\override TextScript.extra-offset = #'(-0.3 . 0) + + % tremolos (rolls) + \override StemTremolo.slope = #0.5 % slope + \override StemTremolo.beam-width = #1.5 % beam-width + \override StemTremolo.beam-thickness = #0.3 % beam-thickness + \override StemTremolo.extra-offset = #'(0 . 0.3) % vertical pos. position + + \override TupletBracket.bracket-visibility = #'if-no-beams + + % unison brackets + \consists "Horizontal_bracket_engraver" + \override HorizontalBracket.staff-padding = #3.5 % staff-padding + \override HorizontalBracket.direction = #UP % brackets above the staff + \override HorizontalBracket.bracket-flare = #'(0 . 0) % vertical brackets + + subdivideBeams = ##t + strictBeatBeaming = ##t + \numericTimeSignature + + } + \context { + \Score + \accepts "PipeBandDrumStaff" + + \override RehearsalMark.break-align-symbols = #'(clef) + \override RehearsalMark.padding = #3 + \override VoltaBracket.edge-height = #'(1.5 . 1.5) + } + \context { + \StaffGroup + \accepts "PipeBandDrumStaff" + } +} \ No newline at end of file diff --git a/lilydrum/musical_functions.ily b/lilydrum/musical_functions.ily new file mode 100755 index 0000000..81e49fd --- /dev/null +++ b/lilydrum/musical_functions.ily @@ -0,0 +1,36 @@ +% ================================================= % +% Musical Functions % +% ================================================= % +% Part of lilydrum + +% triplet +triplet = #(define-music-function (parser location notes) (ly:music?) #{ \tuplet 3/2 { $notes } #}) + +% dynamics +v = #(define-event-function (parser location) () #{ \upbow #}) + +% repeat brackets +dr = #(define-event-function (parser location) () #{ \startGroup #}) +fr = #(define-event-function (parser location) () #{ \stopGroup #}) + +% dynamics with extended lines +dynLine = #(define-music-function + (parser location text) + (markup?) + #{ + \once \override TextSpanner.style = #'line + \once \override TextSpanner.bound-details.left.text = \markup { + \combine + \draw-line #'(0 . -1) + \draw-line #'(1 . 0) + \dynamic #text + } + \once \override TextSpanner.bound-details.right.text = \markup { \draw-line #'(0 . -1) } + #}) + +% still to add: a little 'u' +tutti = #(define-event-function (parser location notes) (ly:music?) #{ + \startGroup + $notes + \stopGroup + #}) diff --git a/lilydrum/special_sticking.ily b/lilydrum/special_sticking.ily new file mode 100755 index 0000000..7d72d1e --- /dev/null +++ b/lilydrum/special_sticking.ily @@ -0,0 +1,21 @@ +% ================================================= % +% Side Sticking (modifies note, or adds mark) % +% ================================================= % +% Part of lilydrum +backstick = #(define-music-function (parser location notes) (ly:music?) + #{ + \temporary \override Staff.NoteHead.style = #'cross + $notes + \revert Staff.NoteHead.style + #}) +crossstick = #(define-music-function (parser location notes) (ly:music?) + #{ + \temporary \override Staff.NoteHead.style = #'xcircle + $notes + \revert Staff.NoteHead.style + #}) +rimshot = #(define-music-function (parser location notes) (ly:music?) + #{ + $notes + + #}) diff --git a/makedrum b/makedrum index 8c45264..29038a2 100755 --- a/makedrum +++ b/makedrum @@ -29,7 +29,7 @@ class MakeDrum: help='show Lilypond version and exit') parser.add_argument('-x', '--drumfile', - dest='lilydrum', default='lilydrum.ly', + dest='lilydrum', default='lilydrum/lilydrum.ly', help='Use the specified file for drums') parser.add_argument('-c', '--pipefile', dest='lilypipe', default='bagpipe.ly', @@ -69,7 +69,6 @@ class MakeDrum: self.args = parser.parse_args() - print(self.RUN_DIR) if self.args.show_version: print(__name__, ' ', self.VERSION) return @@ -113,7 +112,7 @@ class MakeDrum: def processit(self, tmp_dir, file): if self.args.log: - logfile = os.path.join(self.TMP_DIR, os.path.relpath(file).strip('.ly').replace('/', '-')+'.log') + logfile = os.path.join(self.TMP_DIR, os.path.relpath(file).replace(".ly", '').replace('/', '-')+'.log') log = ' > '+logfile+' 2>&1' else: log = '' @@ -130,7 +129,7 @@ class MakeDrum: if not self.args.log: print() - lilyout = os.path.join(os.path.curdir, self.args.out_dir, os.path.basename(tmp_file).strip(self.TMP_PREFIX).strip('.ly')) + lilyout = os.path.join(os.path.curdir, self.args.out_dir, os.path.basename(tmp_file).replace(self.TMP_PREFIX, '').replace(".ly", '')) lilycmd = self.LILYPOND+' --pdf --output='+lilyout+' '+tmp_file+log if os.system(lilycmd) != 0: @@ -186,19 +185,9 @@ class MakeDrum: #(set-global-staff-size """+self.args.staffsize+""") #(set-default-paper-size \""""+self.args.papersize+"""\" '"""+self.args.orientation+""") -\\include "../"""+header_format+""".ily" """+ lily_includes +""" -% Local tweaks -\\paper { - ragged-bottom = ##t -} -\layout { - \context { - \Score - % We only permit explicit line breaks - \override NonMusicalPaperColumn #'line-break-permission = ##f - } -} + +\\include \""""+header_format+""".ily" % The tune to generate. """) @@ -209,7 +198,7 @@ class MakeDrum: music = music.split(u'\n') printit = 1 for line in music: - if line.strip().startswith(u'\\include "lilydrum.ly"'): continue + if line.startswith(u'\\include "lilydrum.ly"'): continue if printit: out_file.write(line.replace('\r', '')+'\n') out_file.close() diff --git a/other/band_of_brothers.snare.ly b/other/band_of_brothers.snare.ly index 03b1cef..f2e3d88 100755 --- a/other/band_of_brothers.snare.ly +++ b/other/band_of_brothers.snare.ly @@ -1,41 +1,122 @@ \version "2.18.2" -\include "lilydrum.ly" - +#(set-default-paper-size "a4" 'landscape) +#(set-global-staff-size 19) +\layout { + indent = 0 +\set Score.markFormatter = #format-mark-box-alphabet + \context { + \DrumStaff + % one line per staff + \override StaffSymbol.line-positions = #'(0) + \numericTimeSignature + } +} \score { \new DrumStaff = "staff_snare" { - \set DrumStaff.drumStyleTable = #(alist->hash-table pipeband-style) - \drummode { + \compressMMRests { + \tempo 2. = 32 \time 3/4 - R1*4 + \override MultiMeasureRest.expand-limit = #3 + R2.*4 + } + \compressMMRests { \bar "||" - s16^ \markup "A" - R1*35 + \mark \default + R2.*35 + } \bar "||" - + \tempo 4 = 108 + \mark \default \time 4/4 - - s16^ \markup "B" - sn4 \tuplet 3/2 {r8 sn8 sn8 } r4 | + sn4 \f \tuplet 3/2 {r8 sn8 sn8 } r4 sn4 | \grace { sn16 sn16 sn16 sn16} \tuplet 3/2 { sn4 sn8 } \tuplet 3/2 { r8 sn8 sn8 } sn4 r4 | \grace { sn16 sn16 sn16 sn16} \tuplet 3/2 { sn4 sn8 } \tuplet 3/2 { r8 sn8 sn8 } \tuplet 3/2 { sn4 sn8 } r4 + | \time 2/4 sn2:16( + | \time 4/4 \tuplet 3/2 { sn4) sn8 } \tuplet 3/2 { r8 sn8 sn8 } \tuplet 3/2 { sn8 sn8 sn8} \tuplet 3/2 { sn8 sn8 sn8} - \bar "||" - s16^\markup "C" - \repeat volta 2 { + \bar "||" + \mark \default + \repeat percent 7{ \grace sn8 sn4 \tuplet 3/2 { r8 sn8 sn8 } sn4 r4 | - \grace { sn16 sn16 sn16 sn16 } + \grace { sn16 sn16 sn16 sn16 } \tuplet 3/2 {sn4 sn8 } \tuplet 3/2 { r8 sn8 sn8 } sn4 r4 | } + \grace sn16 \tuplet 3/2 { sn4 sn8 } \tuplet 3/2 { r8 sn8 sn8 } \tuplet 3/2 { sn4 sn8 } \tuplet 3/2 { r8 sn8 sn8} | + sn8 r8 r4 sn2:32( | + \tuplet 3/2 { sn4) sn8 } \tuplet 3/2 { r8 sn8 sn8 } \tuplet 3/2 { sn4 sn8 } r4 | + \tuplet 3/2 { sn4 sn8 } \tuplet 3/2 { r8 sn8 sn8 } \tuplet 3/2 { sn4 sn8 } r4 | + \tuplet 3/2 { sn4 sn8 } \tuplet 3/2 { r8 sn8 sn8 } \tuplet 3/2 { sn4 sn8 } \tuplet 3/2 { r8 sn8 sn8} | + sn8 r8 r4 \grace {sn16 sn16} sn4 \grace {sn16 sn16} sn4 | + + \bar "||" + \mark \default + \repeat percent 10 { + \grace {sn16} sn4 \mf \grace { sn16 sn16 sn16 sn16 } sn4 \grace { sn16 sn16 sn16 sn16 } sn4 \grace { sn16 sn16 sn16 sn16 } \tuplet 3/2 { sn8 sn8 sn8} | + } + \tuplet 3/2 { sn4 sn8 } \tuplet 3/2 { r8 sn8 sn8 } \tuplet 3/2 { sn4 sn8 } \tuplet 3/2 { sn8 sn8 sn8 } | + \tuplet 3/2 { sn4 \mf\< sn8 } + \tuplet 3/2 { r8 sn8 sn8 } + \tuplet 3/2 { sn4 sn8 } + \tuplet 3/2 { sn8 sn8 sn8 \! } + | + + \grace { sn16 sn sn sn} \tuplet 3/2 { sn4 \f sn8 } \tuplet 3/2 { r8 sn8 sn8 } \tuplet 3/2 { sn4 sn8 } \tuplet 3/2 { r8 sn8 sn8} | + sn8 r8 r4 \tuplet 3/2 { sn4 sn sn} | + + \tuplet 3/2 { sn4 sn8 } \tuplet 3/2 { r8 sn8 sn8 } \tuplet 3/2 { sn4 sn8 } \tuplet 3/2 { sn8 sn8 sn8 } | + \tuplet 3/2 { sn4 sn8 } \tuplet 3/2 { r8 sn8 sn8 } \tuplet 3/2 { sn4 sn8 } \tuplet 3/2 { sn8 sn8 sn8 } | + \tuplet 3/2 { sn4 sn8 } \tuplet 3/2 { r8 sn8 sn8 } \tuplet 3/2 { sn4 sn8 } \tuplet 3/2 { sn8 sn8 sn8 } | + sn8 r8 r4 \tuplet 3/2 { sn4 sn sn} | + sn1:32( + + \bar "||" + \mark \default + sn8) \f r8 r4 r2 | + \tuplet 3/2 {sn4 sn8 } \tuplet 3/2 { r8 sn8 sn8 } \tuplet 3/2 { sn8. sn16 sn8 } \tuplet 3/2 { sn8 sn sn} | + \grace {sn16} sn8 r8 r4 r2 + \tuplet 3/2 {sn4 sn8 } \tuplet 3/2 { r8 sn8 sn8 } \tuplet 3/2 { sn8 sn16 sn16 sn8 } \tuplet 3/2 { sn8 sn sn} | + + \bar "||" + \mark \default + + \repeat percent 3 { + \tuplet 3/2 { sn4 sn8 } \tuplet 3/2 { r8 sn8 sn8 } \tuplet 3/2 { sn8 sn16 sn16 sn8 } \tuplet 3/2 { sn8 sn sn} | + } + \tuplet 3/2 {sn4 sn8 } \tuplet 3/2 { r8 sn8 sn8 } \tuplet 3/2 { sn8 sn8 sn8 } \grace sn16 \tuplet 3/2 { sn8 sn sn} | + \repeat percent 3 { + \tuplet 3/2 {sn4 sn8 } \tuplet 3/2 { r8 sn8 sn8 } \tuplet 3/2 { sn8 sn16 sn16 sn8 } \tuplet 3/2 { sn8 sn sn} | + } + \tuplet 3/2 {sn4 \< sn8 } \tuplet 3/2 { r8 sn8 sn8 } \tuplet 3/2 { sn8 sn16 sn16 sn8 } \tuplet 3/2 { sn8 sn sn} | + + \tuplet 3/2 { sn4 \ff sn8} \tuplet 3/2 { r8 sn8 sn8 } \tuplet 3/2 { sn4 sn8 } \tuplet 3/2 { r8 sn8 sn8 } + sn8 r8 r4 r2 | + + \tuplet 3/2 { sn4 sn8} \tuplet 3/2 { r8 sn8 sn8 } \tuplet 3/2 { sn8. sn16 sn8 } \tuplet 3/2 { sn8 sn sn } | + \tuplet 3/2 { sn4 sn8} \tuplet 3/2 { r8 sn8 sn8 } \tuplet 3/2 { sn4 sn sn } + \tuplet 3/2 { sn4 sn8} \tuplet 3/2 { r8 sn8 sn8 } \tuplet 3/2 { sn8 sn16 sn16 sn8 } \tuplet 3/2 { sn8 sn sn } | + sn8 r8 r4 \tuplet 3/2 { sn4 sn sn } | + \tuplet 3/2 { sn4 \fp\< sn8} \tuplet 3/2 { r8 sn8 sn8 } \tuplet 3/2 { sn8. sn16 sn8 } \tuplet 3/2 { sn8 sn sn} | + \tuplet 3/2 { sn4 sn8} \tuplet 3/2 { r8 sn8 sn8 } \tuplet 3/2 { sn8. sn16 sn8 } \tuplet 3/2 { sn8 sn sn} | + + \bar "||" + \tuplet 3/2 { sn4\ff sn8} \tuplet 3/2 { r8 sn8 sn8 } \tuplet 3/2 { sn8. sn16 sn8 } \tuplet 3/2 { sn8 sn sn} | + \tuplet 3/2 { sn4 sn8} \tuplet 3/2 { r8 sn8 sn8 } \tuplet 3/2 { sn8. sn16 sn8 } \tuplet 3/2 { sn8 sn sn} | + sn8 r8 r4 sn4:32( sn4:32)( | + \tuplet 3/2 { sn8) sn8 r8 } \tuplet 3/2 { r8 sn8 sn8 } sn8 r8 r4 + + + + } } diff --git a/strathspeys/molly_connell.bass.ly b/strathspeys/molly_connell.bass.ly index 215a71b..f5ac633 100755 --- a/strathspeys/molly_connell.bass.ly +++ b/strathspeys/molly_connell.bass.ly @@ -1,31 +1,32 @@ -\version "2.18.2" - -\include "lilydrum.ly" - \score { - \drummode { - \numericTimeSignature + \new DrumStaff = "staff_bass"{ + \set DrumStaff.drumStyleTable = #(alist->hash-table pipeband-style) + \set Staff.instrumentName = #"Bass" + \set Staff.shortInstrumentName = #"B.D." + \time 4/4 + \numericTimeSignature - % Part 1 - \repeat volta 2 { - d4-> g4-> d4 g4 | - d4 g4 d4 g4 | - d4-> g4 d4 g4 | - d4-> g4 d8.-> g16 d4 | - - \break - d4-> g4-> d4 g4 | - r8 d8 r8 g8 r8 d8 r8 g8 | - d4-> g4 d4 g4 | - d4-> g4 r8. g16 d4 | + \drummode { + \repeat volta 2 { + d4-> g4-> d4 g4 | + d4 g4 d4 g4 | + d4-> g4 d4 g4 | + d4-> g4 d8.-> g16 d4 | + \break + d4-> g4-> d4 g4 | + r8 d8 r8 g8 r8 d8 r8 g8 | + d4-> g4 d4 g4 | + d4-> g4 r8. g16 d4 | + + } } } - header { + \header { title = "Molly Connell" composer = "W.H. de Boone / E.T. de Boone, 2014" instrument = "Bass Drum" meter = "STRATHSPEY" } -} \ No newline at end of file +} diff --git a/todo (hoofdletterconflict) b/todo similarity index 100% rename from todo (hoofdletterconflict) rename to todo