Decided to split up my lilydrum file for now

Especially for flourishing symbols
Went for a special context, d/g still available in DrumStaff
  PipeBandDrumStaff has all characteristics of a regular PB DrumStaff

Oh, entered another score :)
This commit is contained in:
Eric Teunis de Boone 2015-11-05 01:39:52 +01:00
parent 6d9bb716d9
commit edd1abcaac
13 changed files with 641 additions and 363 deletions

View File

@ -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"

93
lilydrum/embellishments.ily Executable file
View File

@ -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
#})

View File

@ -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

View File

@ -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<C]5Uh!k@@"!
Ho%,9[sf4m-B6=G7H>[;3Kfk`i84XJ!hG'9ZZkmI]J8tcC:B[7P)8U^Qges79AqoD<S>2&"
uOF+^U@A0C*>jgD&gtCAK/&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<CubTkVbRIC$1[N
hq>$[%*#sWE+S@)%aar5I.TL"I"DT6HaWU0*<62pi1c@6K`%ma^jCCHHYL.#+pi]VpMi0/=
/R0o0hU+&=3a,W^+:nf*-78_W&F#ijXf\]IGeEbDG-hIM<f`<ZCmYCY#%'K`7:?uJ(=4pjb
$qWsR[\SJGtogjWE-&cpp$o:C2/Xq+WfR9[C%li<Kp,;>;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

View File

@ -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

45
lilydrum/flourishing.ily Executable file
View File

@ -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

94
lilydrum/layout_tweaks.ily Executable file
View File

@ -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"
}
}

36
lilydrum/musical_functions.ily Executable file
View File

@ -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
#})

21
lilydrum/special_sticking.ily Executable file
View File

@ -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
#})

View File

@ -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()

View File

@ -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
}
}

View File

@ -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"
}
}
}