\version "2.18.2"
\language "english"

\header {
  title = "Forever"
  composer = "Tommy Montgomery"
  copyright = "(c) 2019 Tommy Montgomery"
}

global = {
  \key d \mixolydian
  \set Staff.printKeyCancellation = ##f
  \numericTimeSignature
  \compressFullBarRests
  \omit Voice.StringNumber
  \override TupletBracket #'bracket-visibility = #'if-no-beam
  \override MultiMeasureRest.expand-limit = #3
  \override Score.ChordName.font-name = #"Noto Serif"
  \override Score.ChordName.font-size = #0
  \override Score.LyricText.font-name = #"Noto Serif"
  \override Score.LyricText.font-size = #0
  \time 12/8
  \tempo 4. = 46
}

guitarOne = \relative c''' {
  a16 d, a d, a' d a' d, a d, a' d c' f, c a c f c' f, c a c f |
  bf d, bf f bf d a' d, bf f bf d g c, g e g c g' c, g e8. |



  <a, d a' d>8 q16 q q q q8 q16 q q q q8 q16 q q q q8 q16 q q q |
  <a d a' d>8 q16 q q q q8 q16 q q q g'( a) d a( g) fs d( e) g e( d) c |

  \bar "||"

  % verse 1
  R1.*7 |
  <a d a' d>8 q16 q q q q8 q16 q q q g'( a) d a( g) fs d( e) g e( d) c |
  R1.*7 |
  <a d a' d>8 q16 q q q q8 q16 q q q g'( a) d a( g) fs d( e) g e( d) c |

  <a e' a cs>2. <c g' c e> |
  <a d a' d>1. |
  <a e' a cs>2. <c g' c e> |
  <a d a' d>1. |

  <a e' a cs>2. <c g' c e> |
  <d a' d f>2. <d a' d e> |
  <d bf' d e>2. <d c' e e>4. <d b' d e> |

  <a d a' d>1. |

  g'16\glissando( a ~ a4 ~ a4.) r r8 g16( a) c( d ~ |
  d4 e8 d4.) r r4 c32( d c\glissando b |
  c8 b c g'4.^"+") r r8 \tuplet 3/2 { b,16( c b) } a g |
  a2. r4. \tuplet 9/6 { d,16 e g a c d e g( fs) } |

  e4. ~ e8.( d16) b( a) f8 e32( f e d) e8 ~ e4. |
  r16 bf d g a bf d g a d, \grace a'( bf8) ~ bf16 g'16( bf, g) f( e) c'4. |
  r8 r r16 bf32( c
  d c bf) a(    g f g a)    bf^"+"( a g f)
  e( d c d    e) f^"+"( e d    c) bf( a g
  a bf) c^"+"( bf a    g) \tuplet 3/2 { f( e d }   e8) ~ |
  e4. e16( f32 e) d16 c d8 ~ d2. |

  R1.*24 |

  <a d a' d>1. | <c g' d'>2. ~ q4. c8 b a |
  <g d' g d'>2. ~ q4. g8 fs e | <a d a' d>2. g'16( a) d a( g) fs d( e) g e( d) c |
  <a d a' d>1. | <c g' d'>2. ~ q4. c8 b a |
  <c f g c f>2. <g d' g d'> |
  <d' bf' d e>2. <d c' e e>4. <d b' d e> |

  f16 g d' e, g d' d, g d' c, d g b, d g a, d g g,8 fs e |
  <a d a' d>1.\arpeggio\fermata |
}

vocalMelody = \relative c'' {
  R1.*4 |

  \repeat unfold 2 {
    d2.( fs4. ~ fs8) fs g |
    e4.( ~ e4 fs16 e d2. ~ |
    d4.) r4. r8. d d e |
    g4.( fs4 g16 fs e4. ~ e8 d4 ~ |
    d4.) r4. r2. |
    f4. e d4. r8 c c16( d) |
    d2. r2. |
    r1. |
  }

  r8. a a cs e4. d |
  d2. r |
  r8. cs cs e g4. g |
  a2. r |

  r8. a, a8 a cs e4. d8. c |
  c16( b a4 ~ a4. ~ a) r4. |
  r4. d8 d d c8.( b) b8( a g) |
  a2. r |

  \bar "||"

  R1.*8 |

  \repeat unfold 2 {
    d2.( fs4. ~ fs8) fs g |
    e4.( ~ e4 fs16 e d2. ~ |
    d4.) r4. r8. d d e |
    g4.( fs4 g16 fs e4. ~ e8 d4 ~ |
    d4.) r4. r2. |
    f4. e d4. r8 c c16( d) |
    d2. r2. |
    r1. |
  }

  r8. a a cs e4. d |
  d2. r |
  r8. cs cs e g4. g |
  a2. r |

  r8. a, a8 a cs e4. d8. c |
  c16( b a4 ~ a4. ~ a) r4. |
  r4. d8 d d c8.( b) b8( a g) |

  a2. r |

  R1.*7 |
  r4. d8 d d c8.( b) b8( a g) |
  a1. ~ | a\fermata | \bar "|."
}

allTheLyrics = \lyricmode {
  He __ runs a -- way __
  from all he knows. __
  Will he find his way __ home.

  She __ looks a -- way __
  from all she loves. __
  Will she lose her way __ home.

  What are they search -- ing for?
  And are they los -- ing time?
  And once all mis -- takes have been made __
  may -- be they'll come __ back __ home.

  He __ turns a -- round __
  to find the way. __
  Will he find his way __ home.

  She __ looks in -- side __
  for a way out. __
  Will she lose her way __ home.

  What are they search -- ing for?
  And are they los -- ing time?
  And once all mis -- takes have been made __
  may -- be they'll come __ back __ home.

  When will they come __ back __ home.





}

guitarOneStaff = \new Staff \with { midiInstrument = "distorted guitar" midiMaximumVolume = #0.6 }{ \global \guitarOne }


vox = \new Staff \with { midiInstrument = "voice oohs" midiMinimumVolume = #0.7 } {
  <<
    \new Voice = "vocalMelody" { \clef treble \global \vocalMelody }
  >>
}

demLyrics = \new Lyrics \lyricsto "vocalMelody" {
  <<
    \new Lyrics {
      \set associatedVoice = "vocalMelody"
      \allTheLyrics
    }
  >>
}

chordExceptionMusic = {
  <c e g b d'>1-\markup { "maj9" }
  <c e g b fs'>1-\markup { "maj7" \sharp "11" }
  <c ef f g bf>1-\markup { "m7sus4" }
  <c ef gf bff>1-\markup { "°7" }
  <c e g d'>1-\markup { "add9" }
  <c ef g d'>1-\markup { "m(add9)" }
  <c e fs as>1-\markup { \super { \sharp "11" \sharp "13" } }
  <c g>1-\markup { "5" }
  <c e g bf>1-\markup { "7" }
  <c e g b>1-\markup { "maj7" }
  <c ef g bf>1-\markup { "m7" }
  <c f g>1-\markup { "sus4" }
  <c d g>1-\markup { "sus2" }
  <c e g bf df'>1-\markup { "7" \super { \flat "9" } }
  <c e g f'>1-\markup { "add11" }
}

chordExceptions = #(append
  (sequential-music-to-chord-exceptions chordExceptionMusic #t)
  ignatzekExceptions
)

chordValues = \chordmode {
  \global
  \powerChords
  \set chordNameExceptions = #chordExceptions
  \set majorSevenSymbol = \markup "maj7"

  d2.:1.5 f:/a | bf4.:/f bf:maj7/f c2.:/e |
  d1.:1.5 | q |

  \repeat unfold 2 {
    d1.:1.5 | c:1.3.5.9 | d:1.5 | c:1.3.5.9 |
    d:1.5 | f2.:1.5 g:1.5 | d1.:1.5 | d:1.5 |
  }

  a2. c | d1. | a2. c | d1. |
  a2. c | d:m d:sus2 | g:m6/d c4.:/d g:6/b |

  d1. |

  d | c:1.3.5.9 | g | d |
  d:m | g:m6 | c:/e | d2. r |

  % verse 2
  \repeat unfold 2 {
    d1.:1.5 | c:1.3.5.9 | d:1.5 | c:1.3.5.9 |
    d:1.5 | f2.:1.5 g:1.5 | d1.:1.5 | d:1.5 |
  }

  a2. c | d1. | a2. c | d1. |
  a2. c | d:m d:sus2 | g:m6/d c4.:/d g:6/b | d1.:1.5 |

  d:1.5 | c:1.3.5.9 | g | d2.:1.5 r |
  d1.:1.5 | c:1.3.5.9 | f2. g | g2.:m6/d c4.:/d g:6/b |

  r1. |
  d1. |


}

chordNames = \new ChordNames {
  \set chordChanges = ##t
  \set chordNameExceptions = #chordExceptions
  \chordValues
}

\score {
  <<
    \chordNames
    \vox
    \demLyrics
    \guitarOneStaff
  >>
  \layout {
    \context {
      \Staff \RemoveEmptyStaves
      \override Glissando.minimum-length = #4
      \override Glissando.springs-and-rods = #ly:spanner::set-spacing-rods
      \override Glissando.thickness = #2
      \override VerticalAxisGroup.remove-first = ##t
    }
  }
}

\score {
  \unfoldRepeats {
    <<
      \transpose c c, \vox
      \transpose c c, \guitarOneStaff
    >>
  }
  \midi {}
}