\version "2.20.0"
\language "english"

\header {
  title = "Last Refuge"
  composer = "Tommy Montgomery"
  copyright = "(c) 2021 Tommy Montgomery"
}

global = {
  \key b \minor
  \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
  \tempo 4 = 126
}

guitarOne = \relative c' {
  \repeat volta 2 {
    b16( d b a) cs( a) g( e) b'( d b a) cs( d) fs( a) |
    b,( d b a) cs( a) g( e) fs( a) cs fs a( fs) e( cs) |
    b( d b a) cs( a) g( e) b'( d b a) cs( d) fs( a) |
    b,( d b a) cs( a) g( e) g b cs d e( g e) d |

    b( d b a) cs( a) g( e) b'( d b a) cs( d) fs( a) |
    b,( d b a) cs( a) g( e) fs( a) cs fs a( fs) e( cs) |
    b( d b a) cs( a) g( e) b'( d b a) cs( d) fs( a) |
  }
  \alternative {
    { b,( d b a) cs( a) g( e) fs as cs e \tuplet 6/4 { fs( e d) cs( b a) } | }
    {
      b( d b a) cs( a) g( e)
      <<
        { \tuplet 6/4 4 { fs' cs' fs as cs fs as( fs) cs as fs cs } } \\
        { <fs,, cs' fs>8 r r4 | }
      >>
    }
  }

  \repeat volta 2 {
    <b fs' b>8 \xNotesOn q16 q q q \xNotesOff q8 \xNotesOn q16 q q q \xNotesOff q8 \xNotesOn q16 q |
    q q \xNotesOff q8 \xNotesOn q16 q q q \xNotesOff q4 <a e' a>8 cs |
    <b fs' b>8 \xNotesOn q16 q q q \xNotesOff q8 \xNotesOn q16 q q q \xNotesOff q8 \xNotesOn q16 q |
  }
  \alternative {
    { q q \xNotesOff q8 \xNotesOn q16 q q q \xNotesOff q4 \tuplet 6/4 { b'16( a g) fs( e d) } | }
    { <b fs' b>16 q \xNotesOff q8 \xNotesOn q16 q q q \xNotesOff q4 \tuplet 6/4 { b16 cs d e fs g } | }
  }

  \time 7/4

  b,8 \xNotesOn <b fs' b>16 q q q \xNotesOff q8 \xNotesOn q16 q q q \xNotesOff q8 \xNotesOn q16 q
    q q \xNotesOff q8 \xNotesOn q16 q q q \xNotesOff \tuplet 6/4 { b16 cs d e fs g } |

  b8 \xNotesOn <b fs' b>16 q q q \xNotesOff q8 \xNotesOn q16 q q q \xNotesOff q8 \xNotesOn q16 q
    q q \xNotesOff q8 \xNotesOn q16 q q q \xNotesOff \tuplet 6/4 { b16 cs d e fs g } |

  b,8 \xNotesOn <b fs' b>16 q q q \xNotesOff q8 \xNotesOn q16 q q q \xNotesOff q8 \xNotesOn q16 q
    q q \xNotesOff q8 \xNotesOn q16 q q q \xNotesOff \tuplet 6/4 { fs'16 g a b cs d } |

  fs,8 \xNotesOn <fs cs' fs>16 q q q \xNotesOff q8 \xNotesOn q16 q q q \xNotesOff q8 \xNotesOn q16 q
    q q \xNotesOff q8 \xNotesOn q16 q q q \xNotesOff \tuplet 6/4 { a16 g fs e d cs } |

  \time 4/4

  \repeat volta 2 {
    <b, fs' b>8 \xNotesOn q16 q \xNotesOff <a e' a>8 \xNotesOn q16 q \xNotesOff
      <b fs' b>8 \xNotesOn q16 q q \xNotesOff <d a' d>8.-> |
    <b fs' b>8 \xNotesOn q16 q \xNotesOff <a e' a>8 \xNotesOn q16 q \xNotesOff
      fs( a) a( fs) a( fs) fs( a) |
    <b fs' b>8 \xNotesOn q16 q \xNotesOff <a e' a>8 \xNotesOn q16 q \xNotesOff
      <b fs' b>8 \xNotesOn q16 q q \xNotesOff <d a' d>8.-> |
  }
  \alternative {
    {
      <b fs' b>8 \xNotesOn q16 q \xNotesOff <a e' a>8 \xNotesOn q16 q \xNotesOff
        <g d'>4 \override Staff.NoteHead.style = #'harmonic-mixed cs \revert Staff.NoteHead.style |
    }
    {
      <b fs' b>8 \xNotesOn q16 q \xNotesOff <a e' a>8 \xNotesOn q16 q \xNotesOff
        <fs cs'>4 \override Staff.NoteHead.style = #'harmonic-mixed as \revert Staff.NoteHead.style |
    }
  }

  d'16( e) e e e( d) d d d( e) e e e( d) d d |
  cs( d) d d d( cs) cs cs cs( d) d d d( cs) cs cs |
  d( e) e e e( d) d d d( e) e e e( d) d d |
  e( fs) fs fs fs( e) e e e( fs) fs fs fs( e) e e |

  fs( g) g g g( fs) fs fs fs( g) g g g( fs) fs fs |
  e( fs) fs fs fs( e) e e e( fs) fs fs fs( e) e e |
  d( e) e e e( d) d d d( e) e e e( d) d d |
  cs( d) d d d( cs) cs cs b( cs) cs cs cs( b\glissando as8) |

  b16^"w/ harmony"( cs) cs cs cs( b) b b b( cs) cs cs cs( b) b b |
  a( b) b b b( a) a a a( b) b b b( a) a a |
  b( cs) cs cs cs( b) b b b( cs) cs cs cs( b) b b |
  cs( d) d d d( cs) cs cs cs( d) d d d( cs) cs cs |

  d( e) e e e( d) d d d( e) e e e( d) d d |
  b( cs) cs cs cs( b) b b b( cs) cs cs cs( b) b b |
  cs( d) d d d( cs) cs cs cs( d) d d d( cs) cs cs |
  a( b) b b b( a) a a g( a) a a a( g\glissando fs8) |

  \bar "||"

  \time 7/4
  <b, fs' b>8 \xNotesOn q16 q q q \xNotesOff q8 \xNotesOn q16 q q q \xNotesOff q8 \xNotesOn q16 q
    q q \xNotesOff q8 \xNotesOn q16 q q q \xNotesOff \tuplet 6/4 { b16 cs d e fs g } |
  <b, fs' b>8 \xNotesOn q16 q q q \xNotesOff q8 \xNotesOn q16 q q q \xNotesOff q8 \xNotesOn q16 q
    q q \xNotesOff q8 \xNotesOn q16 q q q \xNotesOff \tuplet 6/4 { fs'16 e d cs b a } |
  <b fs' b>8 \xNotesOn q16 q q q \xNotesOff q8 \xNotesOn q16 q q q \xNotesOff q8 \xNotesOn q16 q
    q q \xNotesOff q8 \xNotesOn q16 q q q \xNotesOff \tuplet 6/4 { b16 cs d e fs g } |
  <b, fs' b>8 \xNotesOn q16 q q q \xNotesOff q8 \xNotesOn q16 q q q \xNotesOff q8 \xNotesOn q16 q
    q q \xNotesOff q8 \xNotesOn q16 q q q \xNotesOff \tuplet 6/4 { fs'16 e d cs b a } |

  \time 4/4

  \bar "||"

  g'16( b g) g( cs g) g( d' g,) g( cs g) d'( g,) e'( g,) |
  g( fs' g,) g( e' g,) g( d' g,) g( e' g,) d'( g,) cs( g) |
  g( b g) g( cs g) g( d' g,) g( cs g) d'( g,) e'( g,) |
  g( g' g,) g( fs' g,) g( g' g,) g( a' g,) b'( g,) cs'( g,) |

  \ottava #1
  b( b' b,) b( cs' b,) b( d' b,) b( cs' b,) d'( b,) e'( b,) |
  b( fs'' b,,) b( e' b,) b( d' b,) b( e' b,) d'( b,) cs'( b,) |
  b( b' b,) b( cs' b,) b( d' b,) b( cs' b,) d'( b,) e'( b,) |
  b( fs'' b,,) b( e' b,) b( fs'' b,,) b( g'' b,,) a''( b,,) b''( b,,) |

  \repeat unfold 2 {
    b''( b,, b) b''( b,, b) b''( b,, b) b''( b,, b) b''( b,,) b''( b,,) |
  }

  \time 3/4

  b''4 \ottava #0 r2 |

  \time 4/4
  \repeat unfold 2 {
    b,,4 <fs' a>8 \xNotesOn q16 q \xNotesOff q8( <e gs>) \xNotesOn b16 b \xNotesOff <fs' a>8 ~ |
    q8 \xNotesOn q16 q \xNotesOff <fs a>8 \xNotesOn q16 q \xNotesOff q8( <e gs>) \tuplet 6/4 { b16 cs d e fs g } |

    b,4 <fs' a>8 \xNotesOn q16 q \xNotesOff q8( <e gs>) \xNotesOn b16 b \xNotesOff <fs' a>8 ~ |
    q8 \xNotesOn q16 q \xNotesOff <gs b>8 \xNotesOn q16 q \xNotesOff <fs a>8( <e gs>) \tuplet 6/4 { b16 cs d e fs g } |

    b,4 <fs' a>8 \xNotesOn q16 q \xNotesOff q8( <e gs>) \xNotesOn b16 b \xNotesOff <fs' a>8 ~ |
    q8 \xNotesOn q16 q \xNotesOff <fs a>8 \xNotesOn q16 q \xNotesOff q8( <e gs>) \tuplet 6/4 { b16 cs d e fs g } |

    b,4 <fs' a>8 \xNotesOn q16 q \xNotesOff q8( <e gs>) \xNotesOn b16 b \xNotesOff <d fs>8 ~ |
    q16( <e g!>) q q q( <d fs>) q q q( <e g>) q q q( <d fs>) b( a) |
  }

  \bar "||"

  b'4. fs'8 ~ fs4 \grace g8( a4 | g4) fs8 e ~ e2 |
  \grace cs8( d4. cs8) ~ cs4. b8 | \grace cs8( d4. cs8) ~ cs4 \tuplet 3/2 { b16( cs b) } a8 |

  b2 r8 b8 e \grace fs8( g |
  fs4) e8 b ~ b4 b16 cs d e |
  fs( d) g, fs g b cs( b) d, cs d fs g( e) g, fs |
  g b cs4 \grace cs8( d8 ~ d4 cs) |

  b1 |

  R1*6 |

  r2 \ottava #1 \tuplet 6/4 4 { fs'16 as cs fs as b cs b as fs cs as } \ottava #0 |

  \bar "||"

  g,16( b g) g( cs g) g( d' g,) g( cs g) d'( g,) e'( g,) |
  g( fs' g,) g( e' g,) g( d' g,) g( e' g,) d'( g,) cs( g) |
  g( b g) g( cs g) g( d' g,) g( cs g) d'( g,) e'( g,) |
  g( g' g,) g( fs' g,) g( g' g,) g( a' g,) b'( g,) cs'( g,) |

  \ottava #1
  b( b' b,) b( cs' b,) b( d' b,) b( cs' b,) d'( b,) e'( b,) |
  b( fs'' b,,) b( e' b,) b( d' b,) b( e' b,) d'( b,) cs'( b,) |
  b( b' b,) b( cs' b,) b( d' b,) b( cs' b,) d'( b,) e'( b,) |
  b( fs'' b,,) b( e' b,) b( fs'' b,,) b( g'' b,,) a''( b,,) b''( b,,) |

  \repeat unfold 2 {
    b''( b,,) b b''( b,,) b b''( b,,) b b''( b,,) b b''( b,,) b''( b,,) |
  }

  R1*7/16*3 |
  R1*16 |

}

guitarTwo = \relative c' {
  \repeat volta 2 { R1*7 | } \alternative { { R1 } { R1 } } |

  \repeat volta 2 { R1*3 } \alternative { { R1 } { R1 } } |

  R1*7/4*4 |

  \repeat volta 2 { R1*3 } \alternative { { R1 } { R1 } } |

  R1*16 |

  R1*7/4*4 |

  <g d'>8 r r <g cs> r r <g d'> r r <g e'> r r <g d'> r <g cs> r |
  <e b'>8 r r <e cs'> r r <e d'> r r <e cs'> r r <e b'> r cs'4 |
  <fs, b>4. <fs cs'>8 ~ q4 <fs d'> ~ | q8 e'4. <fs, d'>4 <fs cs'> |
  <fs b>4. <fs cs'>8 ~ q4 <fs d'> ~ | q8 e'4. <fs, d'>4 <fs cs'> |

  b16 b b cs cs cs d d d e e e fs fs g g |
  a a a b b b cs cs cs d d d e e fs fs |

  \tuplet 6/4 4 {
    g16 fs e d cs b
    d cs b a g fs
    a g fs e d cs
  } |

  \bar "||"

  b4 r <b b'> r |
  \repeat unfold 6 { <b b'> r <b b'> r | }
  <a a'> r <a a'> e'16( d) b( a) |

  \repeat unfold 3 {
    b8 b16 b e( fs) b, b' ~ b8 b,16 b e( fs) a8 |
    b,8 b16 b e( fs) b, b' ~ b8 b,16 b \tuplet 6/4 { b cs d e fs g } |
  }
  b,8 b16 b e( fs) b, b' ~ b b, b b e( fs) a8 |
  <a, d>16( e') e e <a, e'>( d) d d <a d>16( e') e e <a, e'>( d) b( a) |

  <fs b fs'>1 | <g d' g d' g> | <e b' e> | <a e' a> |
  <b fs'>4 b16 b <b fs'>8 ~ q2 |
  <b g'>4 b16 b <b g'>8 ~ q2 |
  <b e>4 b16 b <b e>8 ~ q2 |
  <a e'>2 <fs cs'>4 \tuplet 3/2 { e'16( fs e) } cs8 |

  \repeat unfold 2 {
    <b fs' b>8 \xNotesOn q16 q \xNotesOff <a e' a>8 \xNotesOn q16 q \xNotesOff
      <b fs' b>8 \xNotesOn q16 q q \xNotesOff <d a' d>8.-> |
    <b fs' b>8 \xNotesOn q16 q \xNotesOff <a e' a>8 \xNotesOn q16 q \xNotesOff
      fs( a) a( fs) a( fs) fs( a) |
    <b fs' b>8 \xNotesOn q16 q \xNotesOff <a e' a>8 \xNotesOn q16 q \xNotesOff
      <b fs' b>8 \xNotesOn q16 q q \xNotesOff <d a' d>8.-> |
  }
  \alternative {
    {
      <b fs' b>8 \xNotesOn q16 q \xNotesOff <a e' a>8 \xNotesOn q16 q \xNotesOff
        <g d'>4 \override Staff.NoteHead.style = #'harmonic-mixed cs \revert Staff.NoteHead.style |
    }
    {
      <b fs' b>8 \xNotesOn q16 q \xNotesOff <a e' a>8 \xNotesOn q16 q \xNotesOff
        <fs cs'>4 \override Staff.NoteHead.style = #'harmonic-mixed as \revert Staff.NoteHead.style |
    }
  }

  <g d'>8 g g <g cs> g g <g d'> g | g <g e'> g g <g d'> g <g cs> g |
  <e b'>8 e e <e cs'> e e <e d'> e | e <e cs'> e e <e b'> e cs'4 |
  b8 fs' b fs cs' fs, d' fs, | b, fs' e' fs, d' fs, cs' fs, |
  b, fs' b fs cs' fs, d' fs, | e'16( d cs) b cs b( a) g a g fs e fs( e) d cs |

  b16 b b cs cs cs d d d e e e fs g a cs |
  b16 b b cs cs cs d d d e e e fs g a cs |

  \time 7/16
  \set Timing.beatStructure = #'(4 3)
  b16( e,) e( b) fs'( b,) b |
  cs( g) fs( d) g( d) e |
  fs( d) cs( a) d( a) cs |

  \time 4/4

  R1*16^"intro riff" |

  \repeat unfold 3 {
    <b fs' b>8 \xNotesOn q16 q \xNotesOff <a e' a>8 \xNotesOn q16 q \xNotesOff
      <b fs' b>8 \xNotesOn q16 q q \xNotesOff <d a' d>8.-> |
  }

  <b fs' b>8 \xNotesOn q16 q \xNotesOff <a e' a>8 \xNotesOn q16 q \xNotesOff
    <b fs' b>4 r |

  \time 7/4

  <fs cs' fs>8 \xNotesOn q16 q q q \xNotesOff q8 \xNotesOn q16 q q q \xNotesOff q8 \xNotesOn q16 q
    q q \xNotesOff q8 \xNotesOn q16 q q q \xNotesOff \tuplet 6/4 { fs16 g a b cs d } |
  <fs, cs' fs>8 \xNotesOn q16 q q q \xNotesOff q8 \xNotesOn q16 q q q \xNotesOff q8 \xNotesOn q16 q
    q q \xNotesOff q8 \xNotesOn q16 q q q \xNotesOff \tuplet 6/4 { e'16 d cs b a g } |
  <fs cs' fs>8 \xNotesOn q16 q q q \xNotesOff q8 \xNotesOn q16 q q q \xNotesOff q8 \xNotesOn q16 q
    q q \xNotesOff q8 \xNotesOn q16 q q q \xNotesOff \tuplet 6/4 { fs16 g a b cs d } |
  <fs, cs' fs>8 \xNotesOn q16 q q q \xNotesOff q8 \xNotesOn q16 q q q \xNotesOff q8 \xNotesOn q16 q
    q q \xNotesOff q8 \xNotesOn q16 q q q \xNotesOff \tuplet 6/4 { b'( a g) fs( e d) } |

  \time 4/4
  <b fs' b>8 \xNotesOn q16 q \xNotesOff <a e' a>8 \xNotesOn q16 q \xNotesOff
    <b fs' b>8 \xNotesOn q16 q q \xNotesOff <d a' d>8.-> |
  <e b' e>4 <fs cs' fs> <g d' g a>2 |

  \time 7/16
  \set Timing.beatStructure = #'(4 3)
  b'16( e,) e( b) fs'( b,) b |
  cs( g) fs( d) g( d) e |
  fs( d) cs( a) d( a) cs |

  \time 4/4
  b2 r2 |

  \bar "|."
}


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

guitarTwoStaff = \new Staff \with { midiInstrument = "distorted guitar" midiMaximumVolume = #0.6 }{ \global \guitarTwo }

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 ef gf bf>1-\markup { \super { "ø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"

  \repeat volta 2 {
    b4:m a b:m d:maj7 | b:m a fs2:m |
    b4:m a b:m d:maj7 | b:m a e2:m6 |
    b4:m a b:m d:maj7 | b:m a fs2:m |
    b4:m a b:m d:maj7 |
  }
  \alternative {
    { b4:m a fs2:7 | }
    { b4:m a fs2 | }
  }

  \repeat volta 2 {
    b1:1.5 | q2. a4 | b1:1.5 |
  }
  \alternative {
    { b1:1.5 | }
    { b1:1.5 | }
  }

  \repeat unfold 4 { b1*7/4:1.5 | }

  \repeat volta 2 {
    b4:1.5 a:1.5 b:1.5 q16 d8.:1.5 |
    b4:1.5 a:1.5 fs2:m |
    b4:1.5 a:1.5 b:1.5 q16 d8.:1.5 |
  }
  \alternative {
    { b4:1.5 a:1.5 g2:1.3.5.11+ | }
    { b4:1.5 a:1.5 fs2 | }
  }

  \repeat unfold 2 {
    b1:m | g | e:m | a2:sus4 a |
    b1:m | g | e:m | a4:sus4 a fs:sus4 fs |
  }

  \repeat unfold 4 { b1*7/4:1.5 | }

  g1:1.3.5.11+ | q | e:m6 | q |
  b:m | q | q | q |
  q | q | r2. |

  \repeat unfold 2 {
    \repeat unfold 6 { b1:m6 } |
    b2..:m6 d8:/a | q1 |
  }

  b1:m | g | e:m | a2:sus4 a |
  b1:m | g | e:m | a4:sus4 a fs:sus4 fs |

  \repeat unfold 2 {
    b4:1.5 a:1.5 b:1.5 q16 d8.:1.5 |
    b4:1.5 a:1.5 fs2:m |
    b4:1.5 a:1.5 b:1.5 q16 d8.:1.5 |
  }
  \alternative {
    { b4:1.5 a:1.5 g2:1.3.5.11+ | }
    { b4:1.5 a:1.5 fs2 | }
  }

  g1:1.3.5.11+ | q | e:m6 | q |
  b:m | q | q | q |
  q | q |

  \repeat unfold 3 { r1*7/16 | }
  R1*16 |

  \repeat unfold 3 { b4:1.5 a:1.5 b:1.5 q16 d8.:1.5 | }
  b4:1.5 a:1.5 b2:1.5 |

  \repeat unfold 4 { fs1*7/4:1.5 | }

  b4:1.5 a:1.5 b:1.5 q16 d8.:1.5 |
  e4:1.5 fs:1.5 g2:sus2 |

  \repeat unfold 3 { r1*7/16 | }
  b1:1.5 |

}

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

\score {
  <<
    \chordNames
    \guitarOneStaff
    \guitarTwoStaff
  >>
  \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, \guitarOneStaff
      \transpose c c, \guitarTwoStaff
    >>
  }
  \midi {}
}