mirror of
https://github.com/kastdeur/pipeband-music.git
synced 2024-12-22 08:13:31 +01:00
Seperated music from lilydrum
This commit is contained in:
parent
c601ae3601
commit
19e815bc0f
33 changed files with 0 additions and 1592 deletions
|
@ -1,109 +0,0 @@
|
|||
% ================================================= %
|
||||
% Flams, Drags & the sort %
|
||||
% ================================================= %
|
||||
drumgrace = #(define-music-function (parser location notes ) ( ly:music? ) #{
|
||||
% Set settings
|
||||
\stemUp
|
||||
\once \override Beam.positions = #'(2 . 2)
|
||||
\once \override DrumStaff.Stem.length = #5
|
||||
\override Flag.stroke-style = #"grace"
|
||||
\override Score.GraceSpacing #'spacing-increment = #0
|
||||
\override Score.Stem #'beamlet-max-length-proportion = #'(0.5 . 0.5)
|
||||
|
||||
% Print notes
|
||||
\small \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
|
||||
|
||||
% Open Drags
|
||||
odragd = \drummode { \drumgrace { g16[ s^"o" g] } } % Open Drag right
|
||||
odragg = \drummode { \drumgrace { d16[ s^"o" d] } } % Open Drag left
|
||||
odragddr = \drummode { \drumgrace { g16[\startGroup s^"o" g] } } % Open Drag right with start repeat
|
||||
odraggdr = \drummode { \drumgrace { d16[\startGroup s^"o" d] } } % Open 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
|
||||
#})
|
||||
% Open Drag
|
||||
odrag = #(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")
|
||||
#{ \odragg #}
|
||||
#{ \odragd #})
|
||||
% 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
|
||||
#})
|
|
@ -1,62 +0,0 @@
|
|||
%!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
|
|
@ -1,107 +0,0 @@
|
|||
%!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>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<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
|
|
@ -1,50 +0,0 @@
|
|||
%!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
|
|
@ -1,49 +0,0 @@
|
|||
% ================================================= %
|
||||
% 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
|
||||
\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 )
|
||||
)
|
||||
}
|
||||
scoopo = #(define-music-function (parser location beg notes) (ly:music? ly:music?)
|
||||
#{
|
||||
%Set spanner from first to last note
|
||||
$beg
|
||||
\startGroup
|
||||
$notes
|
||||
\stopGroup
|
||||
#})
|
||||
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
|
|
@ -1,114 +0,0 @@
|
|||
% =================================================== %
|
||||
% 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 {
|
||||
indent = 0.0
|
||||
\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 = #8.5 % unbeamed stems length
|
||||
\override Stem.stemlet-length = #1 % 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 = #1 % 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"
|
||||
}
|
||||
}
|
||||
|
||||
% =================================================== %
|
||||
% *Shorts* for Naming %
|
||||
% =================================================== %
|
||||
|
||||
instrumentSide = "Side"
|
||||
instrumentTenor = "Tenor"
|
||||
instrumentBass = "Bass"
|
||||
instrumentPipes = "Pipes"
|
||||
shortInstrumentSide = "S.D."
|
||||
shortInstrumentTenor = "T.D."
|
||||
shortInstrumentBass = "B.D."
|
||||
shortInstrumentPipes = "P."
|
||||
composerSide = ""
|
||||
composerTenor = ""
|
||||
composerBass = ""
|
||||
composerPipes = ""
|
|
@ -1,45 +0,0 @@
|
|||
% ================================================= %
|
||||
% Musical Functions %
|
||||
% ================================================= %
|
||||
% Part of lilydrum
|
||||
|
||||
eighthBeaming = {
|
||||
\set baseMoment = #(ly:make-moment 1/8)
|
||||
\set beatStructure = #'( 2 2 )
|
||||
}
|
||||
compoundEighthBeaming = {
|
||||
\set baseMoment = #(ly:make-moment 1/8)
|
||||
\set beatStructure = #'( 3 )
|
||||
}
|
||||
|
||||
% 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
|
||||
#})
|
|
@ -1,21 +0,0 @@
|
|||
% ================================================= %
|
||||
% 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
|
||||
|
||||
#})
|
14
README.md
14
README.md
|
@ -1,14 +0,0 @@
|
|||
# pipeband-drumming
|
||||
First trial with github, purpose is to set up a lilypond file in the same way as there is a bagpipe.ly (see github.com/svenax/bagpipemusic). Main focus is on pipeband snare drumming. Note that it would be best if they are compatible to create fullscores (see fullscore/ folder for first set up of Black Bear)
|
||||
|
||||
Somehow, the drums part in lilypond does not cover a notation with only right left. That is right is above the line and left is below it. In the same manner as the bagpipe.ly file, flams and drags are defined as a shortcut.
|
||||
|
||||
There has been a lilypond include file earlier made by Simon Froger (which includes all of the above). So first version is a shameless copy.
|
||||
This is meant to extend or translate some parts.
|
||||
|
||||
The original file can still be found at http://lsr.di.unimi.it/LSR/Snippet?id=970
|
||||
|
||||
|
||||
Currently, the most advanced scores are for Lady MacKenzie of Fairburn in strathspeys/lady_mackenzie_of_fairburn/*.ly
|
||||
These scores are used for most of the layout.
|
||||
The scores include a side, tenor, bass, pipes, fullscore for drums and a regular fullscore.
|
7
book/.gitignore
vendored
7
book/.gitignore
vendored
|
@ -1,7 +0,0 @@
|
|||
*.pdf
|
||||
*.aux
|
||||
*.log
|
||||
*.toc
|
||||
images/*
|
||||
scores/*
|
||||
tmp/*
|
|
@ -1,22 +0,0 @@
|
|||
\documentclass{tex/score_book}
|
||||
|
||||
\title{Seaforth Highlanders of Holland\\Scores Bass}
|
||||
\author{Eric Teunis de Boone}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\input{./tex/titlepage.tex}
|
||||
|
||||
\newpage
|
||||
\cleardoublepage
|
||||
\phantomsection
|
||||
\addcontentsline{toc}{section}{\contentsname}
|
||||
\begin{multicols}{2}
|
||||
\tableofcontents
|
||||
\end{multicols}
|
||||
|
||||
%\newpage
|
||||
%\input{./tex/playlist}
|
||||
\newpage
|
||||
\input{./tex/main_bass.tex}
|
||||
\end{document}
|
|
@ -1,2 +0,0 @@
|
|||
#!/bin/sh
|
||||
rm -v *.log *.aux *.pyc
|
|
@ -1,22 +0,0 @@
|
|||
\documentclass{tex/score_book}
|
||||
|
||||
\title{Seaforth Highlanders of Holland\\Drumscores}
|
||||
\author{Eric Teunis de Boone}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\input{./tex/titlepage.tex}
|
||||
|
||||
\newpage
|
||||
\cleardoublepage
|
||||
\phantomsection
|
||||
\addcontentsline{toc}{section}{\contentsname}
|
||||
\begin{multicols}{2}
|
||||
\tableofcontents
|
||||
\end{multicols}
|
||||
|
||||
%\newpage
|
||||
%\input{./tex/playlist}
|
||||
\newpage
|
||||
\input{./tex/main_drums.tex}
|
||||
\end{document}
|
|
@ -1,22 +0,0 @@
|
|||
\documentclass{tex/score_book}
|
||||
|
||||
\title{Seaforth Highlanders of Holland\\Fullscores}
|
||||
\author{Eric Teunis de Boone}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\input{./tex/titlepage.tex}
|
||||
|
||||
\newpage
|
||||
\cleardoublepage
|
||||
\phantomsection
|
||||
\addcontentsline{toc}{section}{\contentsname}
|
||||
\begin{multicols}{2}
|
||||
\tableofcontents
|
||||
\end{multicols}
|
||||
|
||||
%\newpage
|
||||
%\input{./tex/playlist}
|
||||
\newpage
|
||||
\input{./tex/main_full.tex}
|
||||
\end{document}
|
50
book/init
50
book/init
|
@ -1,50 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
SHELLCMD='sh'
|
||||
PYTHONCMD='python3.4'
|
||||
LATEXCMD='pdflatex'
|
||||
|
||||
#$SHELLCMD load_scores
|
||||
|
||||
#$PYTHONCMD makebook -o tex/main_full.tex full
|
||||
#$PYTHONCMD makebook -o tex/main_drums.tex drums
|
||||
#$PYTHONCMD makebook -o tex/main_pipes.tex pipes
|
||||
#$PYTHONCMD makebook -o tex/main_bass.tex bass
|
||||
#$PYTHONCMD makebook -o tex/main_tenor.tex tenor
|
||||
#$PYTHONCMD makebook -o tex/main_side.tex side snare
|
||||
|
||||
for ins in tenor;
|
||||
do
|
||||
printf "\\documentclass{tex/score_book}
|
||||
|
||||
\\title{Seaforth Highlanders of Holland\\\\ %s Scores}
|
||||
\\author{Eric Teunis de Boone}
|
||||
|
||||
\\begin{document}
|
||||
|
||||
\\input{./tex/titlepage.tex}
|
||||
|
||||
\\newpage
|
||||
\\cleardoublepage
|
||||
\\phantomsection
|
||||
\\addcontentsline{toc}{section}{\contentsname}
|
||||
\\begin{multicols}{2}
|
||||
\\tableofcontents
|
||||
\\end{multicols}
|
||||
|
||||
%\\newpage
|
||||
%\\input{./tex/playlist}
|
||||
\\newpage
|
||||
\\input{./tex/main_%s.tex}
|
||||
\\end{document}
|
||||
" "$instr" "$instr"
|
||||
done;
|
||||
|
||||
echo "All setup!"
|
||||
|
||||
#read -p "Press [Enter] to compile *.tex"
|
||||
|
||||
#for f in ./*.tex;
|
||||
#do
|
||||
# $LATEXCMD $f
|
||||
#done;
|
|
@ -1,34 +0,0 @@
|
|||
#!/bin/bash
|
||||
MKDRUM_DIR="../"
|
||||
MKDRUMCOMMAND=$MKDRUM_DIR"makedrum"
|
||||
SCORES_DIR="./scores/"
|
||||
|
||||
trap "echo Aborted!; exit;" SIGINT SIGTERM
|
||||
|
||||
another_dir () {
|
||||
d=$1
|
||||
for f in $d/*
|
||||
do
|
||||
if [ -d $f ]; then
|
||||
another_dir $f
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ ! -f $f ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
if [[ ! "$f" == *.ly ]]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
mkdir -p $SCORES_DIR${d/$MKDRUM_DIR}
|
||||
#echo $SCORES_DIR${f/$MKDRUM_DIR}
|
||||
$MKDRUMCOMMAND $f -d $SCORES_DIR${d/$MKDRUM_DIR}
|
||||
done;
|
||||
}
|
||||
|
||||
for d in ${MKDRUM_DIR}*_marches ${MKDRUM_DIR}strathspeys ${MKDRUM_DIR}standards ${MKDRUM_DIR}jigs ${MKDRUM_DIR}airs ${MKDRUM_DIR}hornpipes ${MKDRUM_DIR}other
|
||||
do
|
||||
another_dir $d
|
||||
done;
|
180
book/makebook
180
book/makebook
|
@ -1,180 +0,0 @@
|
|||
#!/usr/bin/python3.4
|
||||
|
||||
# To be Run: python3.4 makebook -v -o ./tex/main_pipes.tex pipes
|
||||
# Uses a copy of the filestructure of pipeband-drumming to generate the body of a tex file
|
||||
|
||||
import os
|
||||
from argparse import ArgumentParser
|
||||
|
||||
class MakeBook:
|
||||
OUT = './tex/main.tex'
|
||||
MASTER_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
RUN_DIR = os.path.abspath(os.curdir)
|
||||
SCORES_DIR = './scores/'
|
||||
LY_DIR = '../'
|
||||
ORDER_FILE = 'order.txt'
|
||||
INSTRUMENTS = ['full','drums', 'pipes', 'bass', 'tenor', 'side','snare']
|
||||
def __init__(self):
|
||||
|
||||
usage = __file__
|
||||
parser = ArgumentParser(usage)
|
||||
parser.add_argument('-v','--verbose',default=False,action='store_true',dest='verbose', help='verbose')
|
||||
parser.add_argument('instrument',default=False,nargs='*',help='Instruments to be included in the book')
|
||||
parser.add_argument('-o','--output',default=self.OUT,help='Output file')
|
||||
|
||||
self.args = parser.parse_args()
|
||||
|
||||
if self.args.verbose:
|
||||
self.vprint('Verbose output')
|
||||
standards = ['standards']
|
||||
marches = ['2-4_marches', '3-4_marches', '4-4_marches', '5-4_marches', '6-8_marches']
|
||||
watch_folders = [ 'hornpipes', 'jigs', 'strathspeys', 'reels','other']
|
||||
watch_folders = marches + watch_folders
|
||||
|
||||
# Run Path_walker over dirs
|
||||
tune_dirs = []
|
||||
for d in watch_folders:
|
||||
if d in marches:
|
||||
continue
|
||||
tune_dirs.append(d)
|
||||
|
||||
# Ready f.out
|
||||
try:
|
||||
self.fout = open(self.args.output,'w+')
|
||||
|
||||
self.fwrite(u'\\addcontentsline{toc}{section}{Standards}')
|
||||
for d in standards:
|
||||
self.vprint()
|
||||
self.vprint(os.path.join(self.SCORES_DIR,d))
|
||||
self.path_walker(os.path.join(self.SCORES_DIR,d), level=1, content_line_level=1)
|
||||
self.fwrite(u'\\addcontentsline{toc}{section}{Marches}')
|
||||
for d in marches:
|
||||
self.vprint()
|
||||
self.vprint(os.path.join(self.SCORES_DIR,d))
|
||||
self.path_walker(os.path.join(self.SCORES_DIR,d), level=1, content_line_level=2)
|
||||
|
||||
for d in tune_dirs:
|
||||
self.vprint()
|
||||
self.vprint(os.path.join(self.SCORES_DIR,d))
|
||||
self.path_walker(os.path.join(self.SCORES_DIR,d))
|
||||
except IOError:
|
||||
print('Cannot open {}'.format(self.OUT))
|
||||
except:
|
||||
self.fout.close()
|
||||
raise
|
||||
|
||||
def vprint(self,line = None):
|
||||
if self.args.verbose:
|
||||
if line is None:
|
||||
line = ''
|
||||
print(line)
|
||||
|
||||
def fwrite(self,line):
|
||||
self.fout.write(line+'\n')
|
||||
|
||||
def include_pdf (self,file, level):
|
||||
title = False
|
||||
self.vprint(file)
|
||||
lilydir = file[:file.rfind('/')].replace(self.SCORES_DIR,self.LY_DIR)
|
||||
if os.path.isdir(lilydir):
|
||||
path = file[:file.rfind('/')]
|
||||
#Try to load title from config file
|
||||
if os.path.isfile(os.path.join(lilydir,'config.ily')):
|
||||
self.vprint('Loading config file')
|
||||
with open(os.path.join(lilydir,'config.ily'),'r') as f:
|
||||
for line in iter(f):
|
||||
if line.startswith('title'):
|
||||
title = line[line.find('=')+1:]#Strip 'title='
|
||||
title = title[1:-1] #Strip Quotes
|
||||
continue
|
||||
|
||||
lilyfile = os.path.join(lilydir, file[file.rfind('-')+1:].replace('.pdf','.ly'))
|
||||
if not title and os.path.isfile(lilyfile):
|
||||
self.vprint('Look through lilyfile')
|
||||
with open(lilyfile, 'r') as f:
|
||||
for line in iter(f):
|
||||
if line.strip().startswith('title'):
|
||||
title = line[line.find('=')+1:]#Strip 'title='
|
||||
title = title[1:-1] #Strip Quotes
|
||||
continue
|
||||
if title:
|
||||
ref = title
|
||||
forbid = ' /!@#$%^&*()<>?\|;:\'"'
|
||||
for s in forbid:
|
||||
ref = ref.replace(s,'_')
|
||||
if not title:
|
||||
self.vprint('No title yet Found!')
|
||||
last_slash = file.rfind('/')
|
||||
last_dot = file.rfind('.')
|
||||
|
||||
if file[file.rfind('.',0,last_dot)+1:file.rfind('.')] in self.INSTRUMENTS:
|
||||
ref = file[file.rfind('/')+1:file.rfind('.')]
|
||||
else :
|
||||
ref = file[file.rfind('/',0,last_slash-1)+1:file.rfind('.')].replace('/','-')
|
||||
# Make title from filename
|
||||
title = ref
|
||||
#Remove references to Instruments
|
||||
for inst in self.INSTRUMENTS:
|
||||
title = title.replace('-'+inst, '')
|
||||
title = title.replace('.'+inst, '')
|
||||
#Remove chars
|
||||
title = title.replace('-','').replace('_',' ').title()
|
||||
|
||||
title = title[1:-1].replace('\\n',' ')
|
||||
|
||||
if not self.args.instrument:
|
||||
for inst in self.INSTRUMENTS:
|
||||
if inst in file:
|
||||
title = title + ' ('+inst+')'
|
||||
self.vprint('= '+title)
|
||||
ref = 'p'+ref.strip('_').lower()
|
||||
#string = u'\\includepdf[pages=-, addtotoc={1,'+('sub'*level)+'section,'+str(level+1)+','+title+','+ref+'}, pagecommand={}]{'+file+'}'
|
||||
string = u'\\includepdf[pages=-, addtotoc={1,'+('sub'*level)+'section,'+str(level+1)+',{'+title+'},'+ref+'}, pagecommand={}]{'+file+'}'
|
||||
|
||||
self.fwrite(string)
|
||||
return string
|
||||
|
||||
def path_walker(self, a, level=None, content_line_level=None):
|
||||
if not a:
|
||||
return
|
||||
if level is None:
|
||||
level = 0
|
||||
if content_line_level is None:
|
||||
content_line_level = 1
|
||||
# Do stuff
|
||||
if level < content_line_level:
|
||||
self.fwrite(u'\\mysection{'+('sub'*level)+'section}{'+a[a.rfind('/')+1:].replace('_',' ').replace('-','/').title()+'}')
|
||||
newline = False
|
||||
|
||||
if os.path.isfile(os.path.join(a, 'order.txt')):
|
||||
self.vprint('Found order')
|
||||
with open(os.path.join(a, self.ORDER_FILE)) as f:
|
||||
line = f.readline().rstrip('\n')
|
||||
while line:
|
||||
self.path_walker(os.path.join(a,line), level+1)
|
||||
line = f.readline().rstrip('\n')
|
||||
else:
|
||||
for root, dirs, files in os.walk(a,False):
|
||||
for f in files:
|
||||
if not f.endswith('.pdf'):
|
||||
self.vprint('F! '+f)
|
||||
continue
|
||||
if self.args.instrument:
|
||||
instr_in_file = False
|
||||
for instr in self.args.instrument:
|
||||
if instr in f:
|
||||
self.vprint(instr)
|
||||
instr_in_file = True
|
||||
break
|
||||
if not instr_in_file:
|
||||
self.vprint('F! '+f)
|
||||
continue
|
||||
# Include file
|
||||
self.vprint('F '+f)
|
||||
if newline:
|
||||
self.fwrite(u'\\newpage')
|
||||
|
||||
newline = True
|
||||
self.include_pdf(os.path.join(root,f), level+1)
|
||||
# Run above
|
||||
MakeBook();
|
|
@ -1,22 +0,0 @@
|
|||
\documentclass{tex/score_book}
|
||||
|
||||
\title{Seaforth Highlanders of Holland\\Pipe Scores}
|
||||
\author{Eric Teunis de Boone}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\input{./tex/titlepage.tex}
|
||||
|
||||
\newpage
|
||||
\cleardoublepage
|
||||
\phantomsection
|
||||
\addcontentsline{toc}{section}{\contentsname}
|
||||
\begin{multicols}{2}
|
||||
\tableofcontents
|
||||
\end{multicols}
|
||||
|
||||
%\newpage
|
||||
%\input{./tex/playlist}
|
||||
\newpage
|
||||
\input{./tex/main_pipes.tex}
|
||||
\end{document}
|
|
@ -1,22 +0,0 @@
|
|||
\documentclass{tex/score_book}
|
||||
|
||||
\title{Seaforth Highlanders of Holland\\Side Scores}
|
||||
\author{Eric Teunis de Boone}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\input{./tex/titlepage.tex}
|
||||
|
||||
\newpage
|
||||
\cleardoublepage
|
||||
\phantomsection
|
||||
\addcontentsline{toc}{section}{\contentsname}
|
||||
\begin{multicols}{2}
|
||||
\tableofcontents
|
||||
\end{multicols}
|
||||
|
||||
%\newpage
|
||||
%\input{./tex/playlist}
|
||||
\newpage
|
||||
\input{./tex/main_side.tex}
|
||||
\end{document}
|
|
@ -1,22 +0,0 @@
|
|||
\documentclass{tex/score_book}
|
||||
|
||||
\title{Seaforth Highlanders of Holland\\Tenor Scores}
|
||||
\author{Eric Teunis de Boone}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\input{./tex/titlepage.tex}
|
||||
|
||||
\newpage
|
||||
\cleardoublepage
|
||||
\phantomsection
|
||||
\addcontentsline{toc}{section}{\contentsname}
|
||||
\begin{multicols}{2}
|
||||
\tableofcontents
|
||||
\end{multicols}
|
||||
|
||||
%\newpage
|
||||
%\input{./tex/playlist}
|
||||
\newpage
|
||||
\input{./tex/main_tenor.tex}
|
||||
\end{document}
|
|
@ -1,17 +0,0 @@
|
|||
\addcontentsline{toc}{section}{Standards}
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{6/8 Standard},p6_8_standard}, pagecommand={}]{./scores/standards/standards-standards.bass.pdf}
|
||||
\addcontentsline{toc}{section}{Marches}
|
||||
\mysection{subsection}{2/4 Marches}
|
||||
\mysection{subsection}{3/4 Marches}
|
||||
\mysection{subsection}{4/4 Marches}
|
||||
\mysection{subsection}{5/4 Marches}
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{Cullen Bay},pcullen_bay}, pagecommand={}]{./scores/5-4_marches/cullen_bay/5-4_marches-cullen_bay-bass.pdf}
|
||||
\mysection{subsection}{6/8 Marches}
|
||||
\mysection{section}{Hornpipes}
|
||||
\mysection{section}{Jigs}
|
||||
\mysection{section}{Strathspeys}
|
||||
\includepdf[pages=-, addtotoc={1,subsection,2,{Lady MacKenzie of Fairburn},plady_mackenzie_of_fairburn}, pagecommand={}]{./scores/strathspeys/lady_mackenzie_of_fairburn/strathspeys-lady_mackenzie_of_fairburn-bass.pdf}
|
||||
\newpage
|
||||
\includepdf[pages=-, addtotoc={1,subsection,2,{Molly Connell},pmolly_connell}, pagecommand={}]{./scores/strathspeys/molly_connell/strathspeys-molly_connell-bass.pdf}
|
||||
\mysection{section}{Reels}
|
||||
\mysection{section}{Other}
|
|
@ -1,20 +0,0 @@
|
|||
\addcontentsline{toc}{section}{Standards}
|
||||
\addcontentsline{toc}{section}{Marches}
|
||||
\mysection{subsection}{2/4 Marches}
|
||||
\mysection{subsection}{3/4 Marches}
|
||||
\mysection{subsection}{4/4 Marches}
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{The Leaving of Liverpool},pthe_leaving_of_liverpool}, pagecommand={}]{./scores/4-4_marches/the_leaving_of_liverpool/4-4_marches-the_leaving_of_liverpool-drums.pdf}
|
||||
\newpage
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{The Pikeman's March},pthe_pikeman_s_march}, pagecommand={}]{./scores/4-4_marches/the_pikemans_march/4-4_marches-the_pikemans_march-drums.pdf}
|
||||
\mysection{subsection}{5/4 Marches}
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{Cullen Bay},pcullen_bay}, pagecommand={}]{./scores/5-4_marches/cullen_bay/5-4_marches-cullen_bay-drums.pdf}
|
||||
\mysection{subsection}{6/8 Marches}
|
||||
\mysection{section}{Hornpipes}
|
||||
\mysection{section}{Jigs}
|
||||
\includepdf[pages=-, addtotoc={1,subsection,2,{Seaforth Sticks},pseaforth_sticks}, pagecommand={}]{./scores/jigs/seaforth_sticks/jigs-seaforth_sticks-drums.pdf}
|
||||
\mysection{section}{Strathspeys}
|
||||
\includepdf[pages=-, addtotoc={1,subsection,2,{Lady MacKenzie of Fairburn},plady_mackenzie_of_fairburn}, pagecommand={}]{./scores/strathspeys/lady_mackenzie_of_fairburn/strathspeys-lady_mackenzie_of_fairburn-drums.pdf}
|
||||
\newpage
|
||||
\includepdf[pages=-, addtotoc={1,subsection,2,{Molly Connell},pmolly_connell}, pagecommand={}]{./scores/strathspeys/molly_connell/strathspeys-molly_connell-drums.pdf}
|
||||
\mysection{section}{Reels}
|
||||
\mysection{section}{Other}
|
|
@ -1,13 +0,0 @@
|
|||
\addcontentsline{toc}{section}{Standards}
|
||||
\addcontentsline{toc}{section}{Marches}
|
||||
\mysection{subsection}{2/4 Marches}
|
||||
\mysection{subsection}{3/4 Marches}
|
||||
\mysection{subsection}{4/4 Marches}
|
||||
\mysection{subsection}{5/4 Marches}
|
||||
\mysection{subsection}{6/8 Marches}
|
||||
\mysection{section}{Hornpipes}
|
||||
\mysection{section}{Jigs}
|
||||
\mysection{section}{Strathspeys}
|
||||
\includepdf[pages=-, addtotoc={1,subsection,2,{Lady MacKenzie of Fairburn},plady_mackenzie_of_fairburn}, pagecommand={}]{./scores/strathspeys/lady_mackenzie_of_fairburn/strathspeys-lady_mackenzie_of_fairburn-full.pdf}
|
||||
\mysection{section}{Reels}
|
||||
\mysection{section}{Other}
|
|
@ -1,14 +0,0 @@
|
|||
\addcontentsline{toc}{section}{Standards}
|
||||
\addcontentsline{toc}{section}{Marches}
|
||||
\mysection{subsection}{2/4 Marches}
|
||||
\mysection{subsection}{3/4 Marches}
|
||||
\mysection{subsection}{4/4 Marches}
|
||||
\mysection{subsection}{5/4 Marches}
|
||||
\mysection{subsection}{6/8 Marches}
|
||||
\mysection{section}{Hornpipes}
|
||||
\includepdf[pages=-, addtotoc={1,subsection,2,{Itchy Fingers},pitchy_fingers}, pagecommand={}]{./scores/hornpipes/itchy_fingers/hornpipes-itchy_fingers-side.pdf}
|
||||
\mysection{section}{Jigs}
|
||||
\mysection{section}{Strathspeys}
|
||||
\includepdf[pages=-, addtotoc={1,subsection,2,{Lady MacKenzie of Fairburn},plady_mackenzie_of_fairburn}, pagecommand={}]{./scores/strathspeys/lady_mackenzie_of_fairburn/strathspeys-lady_mackenzie_of_fairburn-pipes.pdf}
|
||||
\mysection{section}{Reels}
|
||||
\mysection{section}{Other}
|
|
@ -1,58 +0,0 @@
|
|||
\addcontentsline{toc}{section}{Standards}
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{2/4 Standards},p2_4_standards}, pagecommand={}]{./scores/standards/standards-24_standards.side.pdf}
|
||||
\newpage
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{3/4 Standards Setting 1},p3_4_standards_nsetting_1}, pagecommand={}]{./scores/standards/standards-34_standards1.side.pdf}
|
||||
\newpage
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{3/4 Standards Setting 2},p3_4_standards_n_setting_2}, pagecommand={}]{./scores/standards/standards-34_standards2.side.pdf}
|
||||
\newpage
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{3/4 Standards Setting 3},p3_4_standards_n_setting_3}, pagecommand={}]{./scores/standards/standards-34_standards3.side.pdf}
|
||||
\newpage
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{4/4 Standards},p4_4_standards}, pagecommand={}]{./scores/standards/standards-44_standards.side.pdf}
|
||||
\newpage
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{6/8 Standards},p6_8_standards}, pagecommand={}]{./scores/standards/standards-68_standards.side.pdf}
|
||||
\addcontentsline{toc}{section}{Marches}
|
||||
\mysection{subsection}{2/4 Marches}
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{Black Bear},pblack_bear}, pagecommand={}]{./scores/2-4_marches/black_bear/2-4_marches-black_bear-side.pdf}
|
||||
\newpage
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{Duncan McInnes},pduncan_mcinnes}, pagecommand={}]{./scores/2-4_marches/duncan_mcinness/2-4_marches-duncan_mcinness-side.pdf}
|
||||
\newpage
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{MacKenzie Highlanders},pmackenzie_highlanders}, pagecommand={}]{./scores/2-4_marches/mackenzie_highlanders/2-4_marches-mackenzie_highlanders-side.alt.pdf}
|
||||
\newpage
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{MacKenzie Highlanders},pmackenzie_highlanders}, pagecommand={}]{./scores/2-4_marches/mackenzie_highlanders/2-4_marches-mackenzie_highlanders-side.pdf}
|
||||
\mysection{subsection}{3/4 Marches}
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{On the Road to Passchendaele},pon_the_road_to_passchendaele}, pagecommand={}]{./scores/3-4_marches/on_the_road_to_passchendaele/3-4_marches-on_the_road_to_passchendaele-side.pdf}
|
||||
\mysection{subsection}{4/4 Marches}
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{51st Highland Division},p51st_highland_division}, pagecommand={}]{./scores/4-4_marches/51st_highland_division/4-4_marches-51st_highland_division-side.pdf}
|
||||
\newpage
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{Flett from Flotta},pflett_from_flotta}, pagecommand={}]{./scores/4-4_marches/flett_from_flotta/4-4_marches-flett_from_flotta-side.pdf}
|
||||
\newpage
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{Minstrel Boy},pminstrel_boy}, pagecommand={}]{./scores/4-4_marches/minstrel_boy/4-4_marches-minstrel_boy-side.pdf}
|
||||
\newpage
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{Rowan Tree},prowan_tree}, pagecommand={}]{./scores/4-4_marches/rowan_tree/4-4_marches-rowan_tree-side.pdf}
|
||||
\newpage
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{Scotland the Brave},pscotland_the_brave}, pagecommand={}]{./scores/4-4_marches/scotland_the_brave/4-4_marches-scotland_the_brave-side.pdf}
|
||||
\newpage
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{The Leaving of Liverpool},pthe_leaving_of_liverpool}, pagecommand={}]{./scores/4-4_marches/the_leaving_of_liverpool/4-4_marches-the_leaving_of_liverpool-side.pdf}
|
||||
\newpage
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{The Pikeman's March},pthe_pikeman_s_march}, pagecommand={}]{./scores/4-4_marches/the_pikemans_march/4-4_marches-the_pikemans_march-side.pdf}
|
||||
\newpage
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{Wings},pwings}, pagecommand={}]{./scores/4-4_marches/wings/4-4_marches-wings-side.pdf}
|
||||
\mysection{subsection}{5/4 Marches}
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{Cullen Bay},pcullen_bay}, pagecommand={}]{./scores/5-4_marches/cullen_bay/5-4_marches-cullen_bay-side.pdf}
|
||||
\mysection{subsection}{6/8 Marches}
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{Hills of Glenorchy},phills_of_glenorchy}, pagecommand={}]{./scores/6-8_marches/hills_of_glenorchy/6-8_marches-hills_of_glenorchy-side.pdf}
|
||||
\mysection{section}{Hornpipes}
|
||||
\includepdf[pages=-, addtotoc={1,subsection,2,{Itchy Fingers},pitchy_fingers}, pagecommand={}]{./scores/hornpipes/itchy_fingers/hornpipes-itchy_fingers-side.pdf}
|
||||
\mysection{section}{Jigs}
|
||||
\includepdf[pages=-, addtotoc={1,subsection,2,{Seaforth Sticks},pseaforth_sticks}, pagecommand={}]{./scores/jigs/seaforth_sticks/jigs-seaforth_sticks-side.pdf}
|
||||
\mysection{section}{Strathspeys}
|
||||
\includepdf[pages=-, addtotoc={1,subsection,2,{A. A. Cameron's Strathspey},pa._a._cameron_s_strathspey}, pagecommand={}]{./scores/strathspeys/aa_camerons/strathspeys-aa_camerons-side.pdf}
|
||||
\newpage
|
||||
\includepdf[pages=-, addtotoc={1,subsection,2,{Lady MacKenzie of Fairburn},plady_mackenzie_of_fairburn}, pagecommand={}]{./scores/strathspeys/lady_mackenzie_of_fairburn/strathspeys-lady_mackenzie_of_fairburn-side.pdf}
|
||||
\newpage
|
||||
\includepdf[pages=-, addtotoc={1,subsection,2,{Molly Connell},pmolly_connell}, pagecommand={}]{./scores/strathspeys/molly_connell/strathspeys-molly_connell-side.pdf}
|
||||
\newpage
|
||||
\includepdf[pages=-, addtotoc={1,subsection,2,{Molly Connell},pmolly_connell}, pagecommand={}]{./scores/strathspeys/molly_connell/strathspeys-rolls.side.pdf}
|
||||
\mysection{section}{Reels}
|
||||
\mysection{section}{Other}
|
||||
\includepdf[pages=-, addtotoc={1,subsection,2,{Band of Brothers},pband_of_brothers}, pagecommand={}]{./scores/other/other-band_of_brothers.snare.pdf}
|
|
@ -1,24 +0,0 @@
|
|||
\addcontentsline{toc}{section}{Standards}
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{6/8 Standards},p6_8_standards}, pagecommand={}]{./scores/standards/standards-standards.tenor.pdf}
|
||||
\addcontentsline{toc}{section}{Marches}
|
||||
\mysection{subsection}{2/4 Marches}
|
||||
\mysection{subsection}{3/4 Marches}
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{Castle Dangerous},pcastle_dangerous}, pagecommand={}]{./scores/3-4_marches/castle_dangerous/3-4_marches-castle_dangerous-tenor.pdf}
|
||||
\mysection{subsection}{4/4 Marches}
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{The Leaving of Liverpool},pthe_leaving_of_liverpool}, pagecommand={}]{./scores/4-4_marches/the_leaving_of_liverpool/4-4_marches-the_leaving_of_liverpool-tenor.pdf}
|
||||
\newpage
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{The Old Rustic Bridge},pthe_old_rustic_bridge}, pagecommand={}]{./scores/4-4_marches/the_old_rustic_bridge/4-4_marches-the_old_rustic_bridge-tenor.pdf}
|
||||
\newpage
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{The Pikeman's March},pthe_pikeman_s_march}, pagecommand={}]{./scores/4-4_marches/the_pikemans_march/4-4_marches-the_pikemans_march-tenor.pdf}
|
||||
\mysection{subsection}{5/4 Marches}
|
||||
\includepdf[pages=-, addtotoc={1,subsubsection,3,{Cullen Bay},pcullen_bay}, pagecommand={}]{./scores/5-4_marches/cullen_bay/5-4_marches-cullen_bay-tenor.pdf}
|
||||
\mysection{subsection}{6/8 Marches}
|
||||
\mysection{section}{Hornpipes}
|
||||
\mysection{section}{Jigs}
|
||||
\includepdf[pages=-, addtotoc={1,subsection,2,{Seaforth Sticks},pseaforth_sticks}, pagecommand={}]{./scores/jigs/seaforth_sticks/jigs-seaforth_sticks-tenor.pdf}
|
||||
\mysection{section}{Strathspeys}
|
||||
\includepdf[pages=-, addtotoc={1,subsection,2,{Lady MacKenzie of Fairburn},plady_mackenzie_of_fairburn}, pagecommand={}]{./scores/strathspeys/lady_mackenzie_of_fairburn/strathspeys-lady_mackenzie_of_fairburn-tenor.pdf}
|
||||
\newpage
|
||||
\includepdf[pages=-, addtotoc={1,subsection,2,{Molly Connell},pmolly_connell}, pagecommand={}]{./scores/strathspeys/molly_connell/strathspeys-molly_connell-tenor.pdf}
|
||||
\mysection{section}{Reels}
|
||||
\mysection{section}{Other}
|
|
@ -1,36 +0,0 @@
|
|||
\LoadClass{article}
|
||||
\NeedsTeXFormat{LaTeX2e}
|
||||
\ProvidesClass{score_book}
|
||||
%
|
||||
% Load packages
|
||||
\RequirePackage[a4paper,margin=1in,landscape]{geometry}
|
||||
\RequirePackage{pdfpages}%Includepdf
|
||||
\RequirePackage{amsmath}
|
||||
\RequirePackage{graphicx}
|
||||
\RequirePackage{grffile}
|
||||
\RequirePackage[dutch]{babel}
|
||||
\RequirePackage{multicol}%Needed for toc
|
||||
\RequirePackage{bookmark}%Needed for bookmark to toc
|
||||
\RequirePackage{background}
|
||||
\backgroundsetup{scale=0.7}
|
||||
\backgroundsetup{angle=0}
|
||||
\backgroundsetup{opacity=0.1}
|
||||
\backgroundsetup{contents={\includegraphics[width=\textheight]{./images/seaforth_capbadge.jpg}}}
|
||||
\RequirePackage{hyperref}
|
||||
\hypersetup{colorlinks=false}
|
||||
\RequirePackage{tocloft}
|
||||
\PassOptionsToPackage{unicode}{hyperref}
|
||||
\PassOptionsToPackage{naturalnames}{hyperref}
|
||||
%\RequirePackage{chngpage}
|
||||
%
|
||||
% (Re)Set counters
|
||||
\setcounter{secnumdepth}{-2}%Hides section no's
|
||||
%
|
||||
% Define commands
|
||||
\newcommand{\mysection}[2]{
|
||||
\phantomsection
|
||||
\stepcounter{#1}
|
||||
\addtocontents{toc}{\cftpagenumbersoff{#1}}%cft for disabling page numbering
|
||||
\addcontentsline{toc}{#1}{#2}
|
||||
\addtocontents{toc}{\cftpagenumberson{#1}}%cft for enabling page numbering
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
\NoBgThispage
|
||||
\maketitle
|
||||
\begin{center}
|
||||
\includegraphics[width=0.3\textwidth]{./images/SEAFORTH_logo_PMS.pdf}
|
||||
\end{center}
|
||||
|
113
cheatsheet.ly
113
cheatsheet.ly
|
@ -1,113 +0,0 @@
|
|||
|
||||
#(ly:set-option 'point-and-click #f)
|
||||
|
||||
% Choose a size
|
||||
#(set-global-staff-size 18)
|
||||
#(set-default-paper-size "a4" 'landscape)
|
||||
|
||||
\paper {
|
||||
indent = 0\mm
|
||||
ragged-right = ##t
|
||||
ragged-bottom = ##t
|
||||
}
|
||||
\layout {
|
||||
indent = 30\mm
|
||||
\context {
|
||||
\Score
|
||||
\override NonMusicalPaperColumn #'line-break-permission = ##f
|
||||
}
|
||||
}
|
||||
|
||||
\include "lilydrum.ly"
|
||||
|
||||
\score {
|
||||
\new PipeBandDrumStaff {
|
||||
\set Staff.instrumentName = "Plain notes"
|
||||
\drummode {
|
||||
d4 g \crossstick d \crossstick g \rimshot d \rimshot g \backstick d \backstick g
|
||||
}
|
||||
}
|
||||
\addlyrics {
|
||||
"d" "g" "\crossstick d" "\crossstick g" "\rimshot d" "\rimshot g" "\backstick d" "\backstick g"
|
||||
}
|
||||
}
|
||||
|
||||
\score {
|
||||
\new PipeBandDrumStaff {
|
||||
\set Staff.instrumentName = "Tenor Flourishing"
|
||||
\drummode {
|
||||
d^\splitTheFeather g^\cartWheel d^\up {d8 g8 d4} g d \flourish { d4 g d g }
|
||||
}
|
||||
}
|
||||
\addlyrics {
|
||||
"\splitTheFeather" "cartWheel" "up" "scoop d g d" "\flourish { }"
|
||||
}
|
||||
}
|
||||
|
||||
\score {
|
||||
\new PipeBandDrumStaff {
|
||||
\set Staff.instrumentName = "Embellishments"
|
||||
\time 2/4
|
||||
\drummode {
|
||||
\flam d \flam g
|
||||
\drag d \drag g
|
||||
\odrag d \odrag g
|
||||
\ruff d \ruff g
|
||||
\sruff d \sruff g
|
||||
}
|
||||
}
|
||||
\addlyrics {
|
||||
"\flam d" "\flam g"
|
||||
"\drag d" "\drag g"
|
||||
"\odrag d" "\odrag g"
|
||||
"\ruff d" "\ruff g"
|
||||
"\sruff d" "\sruff g"
|
||||
}
|
||||
}
|
||||
\score {
|
||||
\new PipeBandDrumStaff {
|
||||
\set Staff.instrumentName = \markup \column { \line{Forced hand} \line{embellishments}}
|
||||
\time 2/4
|
||||
\drummode {
|
||||
\flamg d \flamd g
|
||||
\dragg d \dragd g
|
||||
\odragg d \odragd g
|
||||
\ruffg d \ruffd g
|
||||
\sruffg d \sruffd g
|
||||
}
|
||||
}
|
||||
\addlyrics {
|
||||
"\flamg d" "\flamd g"
|
||||
"\dragg d" "\dragd g"
|
||||
"\odragg d" "\odragd g"
|
||||
"\ruffg d" "\ruffd g"
|
||||
"\sruffg d" "\sruffd g"
|
||||
}
|
||||
}
|
||||
\score {
|
||||
\new PipeBandDrumStaff {
|
||||
\set DrumStaff.drumStyleTable = #(alist->hash-table pipeband-style)
|
||||
\set Staff.instrumentName = "Rolls"
|
||||
\drummode {
|
||||
d4:32( d8:32)(-> g8) \flam d4 r8 d8:32( \dr |
|
||||
\triplet { g16) d g } \drag d16. g32 d32 g d g d16. g32-> d16. d32 \flam g4
|
||||
}
|
||||
}
|
||||
\addlyrics {
|
||||
\partial 8
|
||||
"d8:32(" "\\triplet " -- "\\flam d16." "g32" -- "\\drag g16" -- "\\triplet" "g:64" "d-> }"
|
||||
}
|
||||
}
|
||||
|
||||
% # Writing parts
|
||||
% rolls
|
||||
% tuplets
|
||||
% tutti
|
||||
% accents ( > v ^)
|
||||
%
|
||||
|
||||
\header {
|
||||
title = "Cheat sheet for entering pipeband drumming music"
|
||||
subtitle = "Intended for Lilypond 2.18 or better"
|
||||
tagline = \markup { "Cpl ET de Boone, Seaforths of Holland" }
|
||||
}
|
24
example.ly
24
example.ly
|
@ -1,24 +0,0 @@
|
|||
\version "2.18.2"
|
||||
% include the lilydrum file
|
||||
\include "lilydrum.ly"
|
||||
|
||||
% Now a tiny example :
|
||||
\score {
|
||||
\new DrumStaff {
|
||||
\drummode {
|
||||
\time 6/8
|
||||
\partial 8 d8:32(_"7" |
|
||||
\repeat volta 2 {
|
||||
g8.[) g16 \dragd d8] d8.[ d16 \dragg g8] |
|
||||
g8.[ \dragd d16 d8] d8.[ d16 \dragg g8] |
|
||||
\flamddr d8. d16 g8 d4.:32(_"13" |
|
||||
d8.) g16 d8 \flamg g4 d8:32(_"7" \fr |
|
||||
\break
|
||||
g8.[) g16 \dragd d8] d8.[ d16 \dragg g8] |
|
||||
g8.[ \dragd d16 d8] d8.[ d16 \dragg g8] |
|
||||
\flamddr d8. d16:64(_"5" d8) \flamd d8. d16 \flamg g8 |
|
||||
d8.:32(_"5" d16) \flamg g8 \flamd d4. \fr |
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
34
lilydrum.ly
34
lilydrum.ly
|
@ -1,34 +0,0 @@
|
|||
\version "2.16.2"
|
||||
%{
|
||||
LilyPond file definitions for Pipeband drumming scores.
|
||||
Primarily focused on Snare drumming,
|
||||
occasional bass or tenor scores should be possible.
|
||||
|
||||
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 "[pathtothisfile]" e.g. "~/lilydrum.ly"
|
||||
|
||||
Music has to be put into :
|
||||
\new DrumStaff {
|
||||
\drummode {
|
||||
[musique]
|
||||
}
|
||||
}
|
||||
|
||||
%}
|
||||
|
||||
% Note name defs :
|
||||
% "d" for the right hand ("droite") and
|
||||
% "g" for the left hand ("gauche")
|
||||
%-----------------------------------------
|
||||
|
||||
#(ly:set-option 'point-and-click #f)
|
||||
#(ly:set-option 'relative-includes #t)
|
||||
|
||||
\include ".lilydrum/layout_tweaks.ily"
|
||||
\include ".lilydrum/musical_functions.ily"
|
||||
\include ".lilydrum/embellishments.ily"
|
||||
\include ".lilydrum/flourishing.ily"
|
||||
\include ".lilydrum/special_sticking.ily"
|
240
makedrum
240
makedrum
|
@ -1,240 +0,0 @@
|
|||
#!/usr/bin/python3.4
|
||||
|
||||
## Generate pdf form lilypond file
|
||||
## by using standard command
|
||||
##
|
||||
## Most of programming was done by Sven Axelsson, http://svenax.net/
|
||||
|
||||
import codecs, os
|
||||
from argparse import ArgumentParser
|
||||
|
||||
class MakeDrum:
|
||||
LILYPOND = 'lilypond'
|
||||
VERSION = '0.9.5'
|
||||
TMP_DIR = './tmp'
|
||||
TMP_PREFIX = 'tmp_'
|
||||
MASTER_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
RUN_DIR = os.path.abspath(os.curdir)
|
||||
|
||||
def __init__(self):
|
||||
# Gather options and create the template file
|
||||
usage = __file__
|
||||
parser = ArgumentParser(usage)
|
||||
|
||||
parser.add_argument('--version',
|
||||
action='store_true', dest='show_version', default=False,
|
||||
help='show makeDrum version and exit')
|
||||
parser.add_argument('--lilyversion',
|
||||
action='store_true', dest='show_lilyversion', default=False,
|
||||
help='show Lilypond version and exit')
|
||||
|
||||
parser.add_argument('-x', '--drumfile',
|
||||
dest='lilydrum', default='lilydrum.ly',
|
||||
help='Use the specified file for drums')
|
||||
parser.add_argument('-c', '--pipefile',
|
||||
dest='lilypipe', default='bagpipe.ly',
|
||||
help='Use the specified file for pipes')
|
||||
|
||||
parser.add_argument('-p', '--paper-size',
|
||||
dest='papersize', default='a4',
|
||||
help='Paper size. Default: A4')
|
||||
parser.add_argument('-o', '--orientation',
|
||||
dest='orientation', default='landscape',
|
||||
help='Paper orientation. Default: landscape')
|
||||
parser.add_argument('-s', '--staff-size',
|
||||
dest='staffsize', default='20',
|
||||
help='Staff size. Default: 16pt.')
|
||||
parser.add_argument('-f', '--format',
|
||||
dest='format', default=None,
|
||||
help='Use header format file "header_{format}". Default: "header_default"')
|
||||
parser.add_argument('-w', '--view-spacing',
|
||||
action='store_true', dest='view_spacing', default=False,
|
||||
help='Turn on "Paper.annotatespacing".')
|
||||
|
||||
parser.add_argument('-g','--generated',
|
||||
dest='gen_out', default=self.TMP_DIR,
|
||||
help='Put generated lilyfiles in $gen_out')
|
||||
parser.add_argument('--no-compile', default=True,
|
||||
action='store_false', dest='compile',
|
||||
help='Do not compile generated Lilypond files')
|
||||
parser.add_argument('--no-log',
|
||||
action='store_false', dest='log', default=True,
|
||||
help='Do not generate log files.')
|
||||
parser.add_argument('--no-cleanup',
|
||||
action='store_false', dest='clean', default=True,
|
||||
help='Leave all temporary files in place')
|
||||
parser.add_argument('-d', '--out_dir',
|
||||
dest='out_dir', default='pdf',
|
||||
help='Output dir, for lilypond. If it doesn\'t exist, try to create it')
|
||||
parser.add_argument('music_file',
|
||||
default='', nargs='*',
|
||||
help='file to process')
|
||||
parser.add_argument('-@', '--list_file',
|
||||
dest='list_file', default='',
|
||||
help='list of files to process')
|
||||
|
||||
self.args = parser.parse_args()
|
||||
|
||||
if self.args.show_version:
|
||||
print(__name__, ' ', self.VERSION)
|
||||
return
|
||||
|
||||
if self.args.show_lilyversion:
|
||||
print(os.system(self.LILYPOND+' --version'))
|
||||
return
|
||||
|
||||
if self.args.view_spacing:
|
||||
self.args.view_spacing = "##t"
|
||||
else:
|
||||
self.args.view_spacing = "##f"
|
||||
|
||||
# Input files
|
||||
if self.args.list_file != '':
|
||||
self.args.music_file.append(open(self.args.list_file, 'r').readlines())
|
||||
close(self.args.list_file)
|
||||
# Check for files
|
||||
if not self.args.music_file:
|
||||
parser.print_usage()
|
||||
return
|
||||
|
||||
|
||||
# Clean up of files
|
||||
self.remove_tmp_dir = self.args.clean
|
||||
|
||||
if not os.path.exists(os.path.join(os.path.curdir, self.TMP_DIR)):
|
||||
try: os.makedirs(os.path.join(os.path.curdir, self.TMP_DIR))
|
||||
except:
|
||||
print('Seems like no temporary directory can be created')
|
||||
return
|
||||
if not os.path.exists(os.path.join(os.path.curdir, self.args.out_dir)):
|
||||
try: os.makedirs(os.path.join(os.path.curdir, self.args.out_dir))
|
||||
except:
|
||||
print('Seems like no output directory can be created')
|
||||
return
|
||||
|
||||
os.chdir(self.MASTER_DIR)
|
||||
for file_path in self.args.music_file:
|
||||
self.processit(self.TMP_DIR, os.path.join(self.RUN_DIR, file_path), self.args.gen_out, self.args.compile)
|
||||
|
||||
#if not
|
||||
#os.rmdir(self.TMP_DIR)
|
||||
|
||||
os.chdir(self.RUN_DIR)
|
||||
|
||||
def processit(self, tmp_dir, file, gen_out, compile):
|
||||
if self.args.format is None:
|
||||
if file.endswith(".book"):
|
||||
header_format = "header_book"
|
||||
else:
|
||||
header_format = "header_default"
|
||||
else:
|
||||
header_format = "header_" + self.args.format
|
||||
|
||||
tmp_file = self.maketemplate(tmp_dir, file, header_format)
|
||||
|
||||
if gen_out is not None and gen_out != tmp_dir:
|
||||
new_tmp_file = os.path.basename(tmp_file).replace(self.TMP_PREFIX, '');
|
||||
print ('Moving ', tmp_file, ' to ', new_tmp_file, end=' ', flush=True)
|
||||
gen_dir = os.path.join(self.RUN_DIR, gen_out);
|
||||
# if not dir $gen_out, make it
|
||||
if not os.path.exists(gen_dir):
|
||||
try: os.makedirs(gen_dir)
|
||||
except:
|
||||
print('[Error]')
|
||||
print(' ! Seems like the {} directory cannot be created'.format(gen_dir))
|
||||
return
|
||||
# mv file to dir, remove self.TMP_PREFIX
|
||||
os.rename(tmp_file, os.path.join(gen_dir, new_tmp_file))
|
||||
tmp_file = new_tmp_file
|
||||
print('[OK]')
|
||||
|
||||
if compile:
|
||||
if self.args.log:
|
||||
logfile = os.path.join(self.TMP_DIR, os.path.relpath(file).replace(".ly", '').replace('/', '-')+'.log')
|
||||
log = ' > '+logfile+' 2>&1'
|
||||
else:
|
||||
log = ''
|
||||
|
||||
print ('Compiling ', file, end=' ', flush=True)
|
||||
if not self.args.log:
|
||||
print()
|
||||
lilyout = os.path.join(self.RUN_DIR, self.args.out_dir, os.path.basename(tmp_file).replace(self.TMP_PREFIX, '').replace(".ly", ''))
|
||||
print (lilyout)
|
||||
lilycmd = self.LILYPOND+' --pdf --output='+lilyout+' '+tmp_file+log
|
||||
|
||||
if os.system(lilycmd) != 0:
|
||||
self.remove_tmp_dir = False
|
||||
print ('[Error]')
|
||||
if self.args.log:
|
||||
print (' ! Did not compile, please see the log at ', logfile)
|
||||
else :
|
||||
print ('[OK]')
|
||||
|
||||
if self.args.clean:
|
||||
#remove files
|
||||
if self.args.log:
|
||||
os.remove(logfile)
|
||||
os.remove(tmp_file)
|
||||
|
||||
def maketemplate(self, tmp_dir, file, header_format):
|
||||
lily_includes = ''
|
||||
include_drum_file = False
|
||||
include_pipe_file = False
|
||||
# find out whether drum, pipes, or full score
|
||||
for ext in ['full', 'side', 'tenor', 'bass', 'drum', 'snare']:
|
||||
if ext in file:
|
||||
include_drum_file = True
|
||||
for ext in ['full', 'pipes']:
|
||||
if ext in file:
|
||||
include_pipe_file = True
|
||||
if include_drum_file:
|
||||
lily_includes = lily_includes + u"""
|
||||
\\include \""""+self.args.lilydrum+"""\"
|
||||
"""
|
||||
if include_pipe_file:
|
||||
lily_includes = lily_includes + u"""
|
||||
\\include \""""+self.args.lilypipe+"""\"
|
||||
"""
|
||||
|
||||
# set up a tmp file with template and file combined
|
||||
tmp_file = os.path.join(tmp_dir, self.TMP_PREFIX + os.path.relpath(file).replace('/', '-'))
|
||||
|
||||
out_file = codecs.open(tmp_file, 'w+', 'utf8')
|
||||
out_file.write(u'\ufeff')
|
||||
|
||||
out_file.write(u"""
|
||||
% Generated from """+file+""" by """+__file__+""" version """+self.VERSION+"""
|
||||
|
||||
\\version "2.18.0"
|
||||
|
||||
#(ly:set-option 'point-and-click #f)
|
||||
"""+ lily_includes +"""
|
||||
|
||||
\\include \""""+os.path.join(os.path.abspath(self.MASTER_DIR), header_format.strip(".ily")+""".ily""")+"""\"
|
||||
|
||||
#(set-global-staff-size """+self.args.staffsize+""")
|
||||
#(set-default-paper-size \""""+self.args.papersize+"""\" '"""+self.args.orientation+""")
|
||||
|
||||
% The tune to generate.
|
||||
""")
|
||||
|
||||
# Read lily file into tmp file
|
||||
music = codecs.open(file, 'r', 'utf8').read()
|
||||
if music.startswith(u'\ufeff'): music = music[1:]
|
||||
music = music.split(u'\n')
|
||||
printit = 1
|
||||
for line in music:
|
||||
if line.startswith(u'\\include "lilydrum.ly"'): continue
|
||||
if line.startswith(u'\\include'):
|
||||
# Rewrite includes to absolute location of file
|
||||
incline = line.replace('\\include', '').strip('"\' ')
|
||||
if not incline.startswith('\\'): #already absolute
|
||||
incline = os.path.join(os.path.abspath(os.path.dirname(file)), incline)
|
||||
line = "\\include \""+incline+"\""
|
||||
if printit:
|
||||
out_file.write(line.replace('\r', '')+'\n')
|
||||
out_file.close()
|
||||
|
||||
# Return tmp_file_path
|
||||
return tmp_file
|
||||
MakeDrum();
|
17
todo
17
todo
|
@ -1,17 +0,0 @@
|
|||
TODO
|
||||
* show 8th and 16th beats in beaming, currently only 8ths: d32[[ g] d[ g]] d32[[ g] d[ g]]
|
||||
* Macro for tutti's (unisons)
|
||||
- on just one note
|
||||
- with open ending
|
||||
* Macro for "Part 2 of $n"
|
||||
* If 8/16/32/..th notes come before a flam, they have a flag instead of a beam (fixable by explicit beaming, but rather have a good autobeaming)
|
||||
* A tuplet beginning with a flam has a strange tuplet beam (slanted) (fixable by putting the flam outside of the tuplet .. However the flam function doesnt work that way (yet))
|
||||
* It's customary to have 4 bars per line for portrait and 8 for landscape...
|
||||
|
||||
* SIDE sticking
|
||||
rimshot default + cross
|
||||
|
||||
* FLOURISHING short long note above-note
|
||||
ups \up arrow-up
|
||||
scoop \scoop arrow-right-(diag-up then diag-down) [propably start on beginning of note and filter out the last one]
|
||||
(further EUSPBA symbols)
|
Loading…
Reference in a new issue