%%% TODO: ADD FINGERINGS!!!
% fix collision of beams in m. 55

\version "2.12.2"

\include "showlast.ly"
\include "showfirst.ly"

\header {
  title = \markup \left-align { \override #'(font-name . "Vera") { \fontsize #+3 "Danza Cubana No. 4" } }
  composer = \markup { \override #'(font-name . "Vera") { "Jonathan Kulp (1970-)" } }
  copyright = \markup { \override #'(font-name . "Vera") { \fontsize #-2 "© 2004 by Jonathan Kulp -- Creative Commons Attribution-Noncommercial-Share Alike 3.0" } }
}

\paper {
  #(set-paper-size "letter")
  ragged-last-bottom = ##f
}

#(ly:set-option 'point-and-click #f)

%*******************************%
% MACROS FOR DANZA CUBANA NO. 4 %
%*******************************%

slant = 
#(define-music-function (parser location positionA positionB) (number? number?)
  #{
    \once \override Beam #'positions = #(cons $positionA $positionB )
  #})

% example: \slant #5 #6

% Main ostinato with articulation markings
ostinatoMarked = \relative c' { r8 a[ e] b'-. r8 d e[-> e]-. }

% Main ostinato without articulation markings
ostinatoClean = \relative c' { d8\rest a[ e] b' d8\rest d e[ e] }

% indication for repeat to segno and coda
dalsegno = \markup { \italic { "D.S.  " { \musicglyph #"scripts.segno" } " al Coda  " { \musicglyph #"scripts.coda" } } } 

%  fingering orientations
	sfol = \set fingeringOrientations = #'(left)
	sfor = \set fingeringOrientations = #'(right)
	sfod = \set fingeringOrientations = #'(down)
	sfou = \set fingeringOrientations = #'(up)

% define fingering offset
FO = #(define-music-function (parser location offsetX offsetY) (number? number?)
  #{
    \once \override Voice.Fingering #'extra-offset = #(cons $offsetX $offsetY )
  #})

%---------------------------END OF MACROS FOR DC. 4---------------------------%

global = { 
  \time 4/4
  \clef "treble_8"
}

%********************************%
% THE MUSIC BEGINS HERE!!!!!!!!  %
%********************************%

melody = \relative c' { 
   \global
   \once \override TextScript #'padding = #2
   \tempo "Suavamente, sin prisa" 4=108		

  r8 a[\mp e] b'-. r8 d e[-> e]-. | \ostinatoMarked \ostinatoMarked | % m. 1-3  
  r8^\markup {\italic { "(simile)" } } a,[ e] b' r8 d e[ e]   	| % m. 4
\voiceOne 
  \ostinatoClean \ostinatoClean \ostinatoClean | % m. 5-7
  \ostinatoClean | 				% m. 8
  \ostinatoClean \ostinatoClean \ostinatoClean 	% m. 9-11
  \ostinatoClean | \break			% m. 12
  \bar "|:" 

  \mark \markup { \musicglyph #"scripts.segno" } 
  r8 \FO #'-0.2 #'-1.9 <a,-1>8^\mp[ 
    \FO #'-0.2 #'-3.0 <e-1>] 
    \FO #'-0.2 #'-1.0 <b'-0> 
  r8 \FO #'-0.2 #'-0.0 <d-4> e[ e]| 	% m. 13
  \ostinatoClean \ostinatoClean \ostinatoClean	% m. 14-16
  \ostinatoClean \ostinatoClean \ostinatoClean    % m. 17-19
  \ostinatoClean \ostinatoClean \ostinatoClean 	% m. 20-22
  \ostinatoClean \ostinatoClean \ostinatoClean 	% m. 23-25
  \ostinatoClean \ostinatoClean \ostinatoClean 	% m. 26-28
  \ostinatoClean \ostinatoClean 		% m. 29-30
  a4. gis4 fis8 g4 		| 		% m. 31
  fis e8 d4 fis8 e[ e] ~ 	|		% m. 32
  e2. s4			|		% m. 33
  s1				|		% m. 34
  a4. gis4 fis8 g4 		| 		% m. 35
  fis e8 d4 fis8 e[ e] ~ 	|		% m. 36
  e2. s4			|		% m. 37
  s1				|		% m. 38
  d'4. cis4 b8 c!4		|		% m. 39
  fis,4. g8 d8\rest <d f!>8 <e a>[-> <e a>]-> ~	| % m. 40
  a1	| s1  |					% m. 41-42
  \ostinatoClean \ostinatoClean \bar "||"	% m. 43-44
  \ostinatoClean | d,8\rest a[ e] b' d8\rest d e[ g]	% m. 45-46
  a4.-> g8-> a8\rest d, e4-> 	|		% m. 47
  f4.-> e8-> a8\rest d,-> d4->	|		% m. 48
  c2. a'4\rest	| s1		|		% m. 49-50
  a4.-> g8-> a8\rest d,8 e4->  |		% m. 51
  f4.-> e8-> a8\rest d,8-> d->[ c->] ~ |	% m. 52
  c2. a'4\rest 	| s1		|		% m. 53-54
  c,4. e8 a8\rest a8\rest d, e 	|		% m. 55
  dis4. eis8 a8\rest dis, eis4	|		% m. 56
  fis4. b,8 fis'8\rest fis\rest b,4	|	% m. 57
  fis'4. b,8 fis'8\rest fis\rest b,4	|	% m. 58
  fis'4. e8 a8\rest e8 fis8[ e]	|		% m. 59
  g4. f8 a8\rest a8\rest g4	|		% m. 60
  a2. c4\rest	|	s1	|		% m. 61-62
  a4.-> g8-> a8\rest d, e4-> 	|		% m. 63
  f4.-> e8-> a8\rest d,-> d4->	|		% m. 64
  c2. a'4\rest	| s1		|		% m. 65-66
\autoBeamOff
  bes4-> a8 g-> a8\rest f e4-> |		% m. 67
\autoBeamOn
  f4.-> e8-> a8\rest d,8-> d->[ c->] ~ |	% m. 68
  c2. a'4\rest | s1		|		% m. 69-70
  c,4. e8 a8\rest a8\rest d, e 	|		% m. 71
  dis4. eis8 a8\rest dis, eis4	|		% m. 72
  fis4. b,8 fis'8\rest fis\rest b,4	|	% m. 73
  fis'4. b,8 fis'8\rest fis\rest b,4	|	% m. 74
  fis'4. e8 a8\rest e8 fis8[ e]	|		% m. 75
  g4. f8 a8\rest a8\rest g4	|		% m. 76
  a2. c4\rest	|	s1*4	|		% m. 77-81
\once \override TextScript #'font-size = #-1.2
  s16 s16^\markup { \musicglyph #"scripts.coda" } s8 s2.^\markup { "Coda" }   | s1  | % m. 82-83
  c,8 c g'8\rest b, g'8\rest d g4 |		% m. 84
  f2. c'4\rest	| s1 |				% m. 85-86
  c,8 c g'8\rest b, g'8\rest d g4 |		% m. 87
  a2. c4\rest			|		% m. 88
  g2. c4\rest			|		% m. 89
  a2. c4\rest			|		% m. 90
  s1_\>
  s1*2				|		% m. 92-93
  <c, e gis>1_\pp		|		% m. 94
}

%--------------------BASS VOICE STARTS HERE--------------------------%

bass = 	\relative c { 
  \voiceTwo
  s1*4				% mm. 1-4	
  g1  |  f  |  e ~  |  e  | 	% mm. 5-8
  a 		| 		% m. 9
  bes4.\< c d4 	| 		% m. 10
  e1\!\> 		| 		% m. 11
  e, 		|		% m. 12
\override Fingering #'staff-padding = #'()
   \sfod  \FO #'0.3 #'0.3 
  <c'-2>8\mf c r8 a4 \FO #'0.4 #'-0.9 <c-3>8 d4 |  	% m. 13
  \FO #'0.3 #'0.0 <b-1>8 \FO #'0.3 #'0.0 <g-2> ~ g2 e8 g 	| 		% m. 14
  a[ b c] d4. c4 	| 		% m. 15
  b1 		| 		% m. 16
  c8\mp\< c r8 d8[ e f] g4 | 	% m. 17
  f r8 d8 c4 b 	| 		% m. 18
  c8 b c d b4 g4 	| 		% m. 19
  a1\f ~ 	|   a 	|		% m. 20-21
  c8\mf c r8 a4 c8 d4 |  		% m. 22
  b8 g ~ g2 e8 g 	|		% m. 23 
  a[ b c] d4. c4 	| 		% m. 24
  b1 			|		% m. 25
  a8\< b c d e f g4 	| 		% m. 26
  f r4 d4 des\! 	| 		% m. 27
  c8\> b c d c b g4 	| 		% m. 28
  a1\! ~ |   a 		|		% m. 29-30
  fis2 e4 e		|		% m. 31
  d'2 cis4 b		|		% m. 32
  a2 e4 e		|		% m. 33
  a2 g4 g		|		% m. 34
  fis2 e4 e		|		% m. 35
  d'2 cis4 b		|		% m. 36
  a2 e4 e		|		% m. 37
  a2 e4 e		|		% m. 38
  b'2 d4 a		|		% m. 39 
  g2 d'4 d		|		% m. 40
  a1 ~			|		% m. 41
  a1			|		% m. 42
  a4. gis4 fis8 g4	|		% m. 43
  fis4. f4 e8 ~ e4	|		% m. 44
  a1 ~ a1		|		% m. 45-46
  d2\f a4 ais 		|		% m. 47
  b!2 e4 e,		|		% m. 48
  a2 e4 e | a2 e4 e	|		% m. 49-50
  d'2\ff a4 ais 	|		% m. 51
  b!2 e4 e,  |  a2 e4 e | 		% m. 52-53
  a2 e4 e  		| 		% m. 54
\once \override TextScript #'extra-offset = #'( 3.0 . 2.7 )
  bes'2\mf_\markup { \italic { "subito" } } f4 f |  % m. 55
  gis2 dis'4 dis 	|		% m. 56
  e,2 b'4 b		|		% m. 57
  e,2 b'4 b		|		% m. 58
  a2\< e4 e 		|		% m. 59
  g2 d'4 d		|		% m. 60
  a1\ff ~ a1		|		% m. 61-62
  d2\f a4 ais 		|		% m. 63
  b!2 e4 e,		|		% m. 64
  a2 e4 e | a2 e4 e	|		% m. 65-66
  d'2\ff a4 ais 	|		% m. 67
  b!2 e4 e,  |  a2 e4 e | 		% m. 68-69
  a2 e4 e  		| 		% m. 70
\once \override TextScript #'extra-offset = #'( 3.0 . 2.7 )
  bes'2\mf_\markup { \italic { "subito" } } f4 f |  % m. 71
  gis2 dis'4 dis 	|		% m. 72
  e,2 b'4 b		|		% m. 73
  e,2 b'4 b		|		% m. 74
  a2\< e4 e 		|		% m. 75
  g2 d'4 d		|		% m. 76
  a1\ff | g1\>		|		% m. 77-78
  f1 | e1 ~ e2. e4\rest\!		% m. 79-81
  a1\p ~ a1		|		% m. 82-83
  a2\rest\< d4 e,\!	| s1\fp | s1 	|	% m. 84-86
  a2\rest\< d4 e,\!		|		% m. 87
  fis2\f cis'4 cis	|		% m. 88
  f,!2\> c'!4 c 	|		% m. 89
  a1\mf ~ | a1 ~ | a1	|		% m. 90-92
  s1 | a1		|		% m. 93-94
}

%------------------------MIDDLE VOICE STARTS HERE-------------------------%	

middle =  \relative c { 
  \voiceThree
  s1*30						% m. 1-30
  b'8\rest a8[ e] b'4 d8 e[ e] |		% m. 31
  b8\rest a g\rest b4 d8 g,4\rest		% m. 32
  g8\rest a8[ e] b' b8\rest d e[ e] |		% m. 33
  b8\rest a8[ e] b' b8\rest d e[ e] |		% m. 34
  b8\rest a8[ e] b'4 d8 e[ e] |		% m. 35
  b8\rest a g\rest b4 d8 g,4\rest		% m. 36
  g8\rest a8[ e] b' b8\rest d e[ e] |		% m. 37
  b8\rest a8[ e] b' b8\rest d e[ e] |		% m. 38
  d8\rest a8[ e] b'4 d8 e[ e] |		% m. 39
  g,8\rest a8[ e] \stemDown b' s4 s4 |		% m. 40
\stemNeutral		
  b8\rest a8[^\mp e] \stemDown b' b8\rest d e[ e] |% m. 41
\stemUp
  \ostinatoClean | % m. 42
  s1 | s2 s4 s4 | 		% m. 43-44
  s1 | s8 s8\< s4 s4 s8 s8\!	% m. 45-46
\stemDown
% Use this with \once to adjust horizontal shift:
% \override NoteColumn #'force-hshift = #0.3
  \stemUp b8\rest <bes d>[ <bes d>] <bes d> b8\rest bes <bes d>[ <bes d>] | % m. 47
  \stemDown a8\rest <a d>[ <a d>] <a d> b8\rest \stemUp gis8 gis[ gis] 	 | % m. 48
  f8\rest <f a>[ <f a>] <f a> g8\rest <e a> <e a>[ <e a>]	 | % m. 49
  b'8\rest <a b e>[ <a b e>] <a b e> b8\rest <e, a> <e a>[ <a e>]| % m. 50
  b8\rest <bes d>[ <bes d>] <bes d> b8\rest <bes> <bes d>[ <bes d>] | % m. 51
  b8\rest <a d>[ <a d>] <a d> b8\rest gis gis[ gis] 		|  % m. 52
  e8\rest <f a>[ <f a>] <f a> b8\rest <e, a> <e a>[ <e a>]	|  % m. 53
  b'8\rest <a b e>[ <a b e>] <a b e> b8\rest <e, a> <e a>[ <e a>]|  % m. 54
  f8\rest <d g>[ <d g>] <d g> e8\rest <d g> \slant #.3 #.7 <d g>[ <d g>]	|  % m. 55
  g8\rest <g! b>[ <g b>] <g b> b8\rest <g b> <g b>[ <g b>]	|  % m. 56
  g8\rest <dis gis>[ <dis gis>] <dis gis> g8\rest <dis gis> <dis gis>[ <dis gis>] | % m. 57
  g8\rest <dis gis>[ <dis gis>] <dis gis> g8\rest <dis gis> <dis gis>[ <dis gis>] | % m. 58
  g8\rest <a cis>[ <a cis>] <a cis> g\rest <a c> <a c>[ <a c>]  |  % m. 59
  g8\rest <bes d>[ <bes d>] bes b8\rest <bes d> <bes d>[ <bes d>] % m. 60
  \ostinatoClean | b8\rest a[ e] b' b8\rest g16 d' e8 g		| % m. 61-62
  b,8\rest <bes d>[ <bes d>] <bes d> b8\rest bes <bes d>[ <bes d>] | % m. 63
  a8\rest <a d>[ <a d>] <a d> b8\rest \stemUp gis8 gis[ gis] 	 | % m. 64
  f8\rest <f a>[ <f a>] <f a> g8\rest <e a> <e a>[ <e a>]	 | % m. 65
  b'8\rest <a b e>[ <a b e>] <a b e> b8\rest <e, a> <e a>[ <a e>]| % m. 66
\stemDown
  b8\rest <bes d>[ <bes d>] \voiceFour <bes d> b8\rest <bes> \slant #-1.7 #-1.7 <bes d>[ <bes d>] | % m. 67
\voiceThree
  b8\rest <a d>[ <a d>] <a d> b8\rest gis gis[ gis] 		|  % m. 68
  e8\rest <f a>[ <f a>] <f a> b8\rest <e, a> <e a>[ <e a>]	|  % m. 69
  b'8\rest <a b e>[ <a b e>] <a b e> b8\rest <e, a> <e a>[ <e a>]|  % m. 70
  f8\rest <d g>[ <d g>] <d g> e8\rest <d g> \slant #.3 #.7 <d g>[ <d g>]	|  % m. 71
  g8\rest <g! b>[ <g b>] <g b> b8\rest <g b> <g b>[ <g b>]	|  % m. 72
  g8\rest <dis gis>[ <dis gis>] <dis gis> g8\rest <dis gis> <dis gis>[ <dis gis>] | % m. 73
  g8\rest <dis gis>[ <dis gis>] <dis gis> g8\rest <dis gis> <dis gis>[ <dis gis>] | % m. 74
\stemUp
  g8\rest <a cis>[ <a cis>] <a cis> g\rest <a c> <a c>[ <a c>]  |  % m. 75
  g8\rest <bes d>[ <bes d>] bes b8\rest <bes d> <bes d>[ <bes d>] % m. 76
  \ostinatoClean | \ostinatoClean  | \ostinatoClean | 	% m. 77-79
  \ostinatoClean | 				% m. 80
  b8\rest \once \override TextScript #'font-size = #-1.0 a8[^\dalsegno e] b' b8\rest d e[ e] | 	% m. 81
  \bar ":|"
  \ostinatoClean | \ostinatoClean |		% m. 82-83
  e,8\rest a8[ e] g b8\rest b8 e[ e]	|	% m. 84
  b8\rest a[ e] b' b\rest d e[ e] | \ostinatoClean	|	% m. 85-86
  e,8\rest aes8[ es] g8 b\rest b e[ d]	|	% m. 87
  \slant #2.7 #1.7
  cis[ a e] b' b\rest d e[ e]		|	% m. 88
  %\once \override Beam #'damping = #1.0 
  \slant #3.2 #2
  c!8[ a e] b' b\rest d e[ e]		|	% m. 89
  \ostinatoClean | \ostinatoClean	|	% m. 90-91
  \ostinatoClean |				% m. 92
\textSpannerUp
\stemNeutral
     \override TextSpanner #'bound-details #'left #'text = #"nat. harm. "
\override Staff.NoteHead #'style = #'harmonic-mixed
% This is something to work with: the alignment of string numbers
% can be manipulated with this self-alignment thing.  Not quite
% right for this situation but potentially very useful in others.
% \override StringNumber #'self-alignment-X = #RIGHT
  b8\rest <a\4>\startTextSpan <e\5> <b'\2>4 <d\3>8 <e\1>4\stopTextSpan	|	% m. 93
\override Staff.NoteHead #'style = #'default
  s1
\bar "|."
}

barres = \relative c' {
  \hideNotes
  s1*46
  s8 \arpeggioBracket <bes d>8\arpeggio s2.
}

%%%%%%%%%%%%%%%%%%%%%%%%%% SCORE BLOCK %%%%%%%%%%%%%%%%%%%%%%

\score {
  \context Staff = "guitar" \with { 
    \consists "Span_arpeggio_engraver" 
  }
  << 
    %\global
    \set Staff.midiInstrument = "acoustic guitar (nylon)"
    \set Staff.instrumentName = "Guitar"
    \set Staff.connectArpeggios = ##t
    %\clef "treble_8"
    \override Staff.TimeSignature #'style = #'()
    %\time 4/4
    \set Staff.instrumentName = "Guitar"
    \context Voice = "melody" \melody 
    \context Voice = "middle" \middle 
    \context Voice = "bass" \bass   
    \context Voice = "barres" \barres
  >>
    
  \layout { }
    
  \midi {
    \context {
      \Score
      tempoWholesPerMinute = #(ly:make-moment 160 4)
    }
  }
}


