\include "articulate.ly"

\version "2.22.1"
\language "english"

#(set-global-staff-size 18)

\header {
  title = "Rogue Fable III - The Iron Forge"
  composer = "music by Nooskewl Games (https://nooskewl.com)"
  tagline = ""
  arranger = "transcribed by Tommy Montgomery (https://tmont.com)"
}

\paper {
  % system-system-spacing = #'((basic-distance . 0.1) (padding . 4))
}

global = {
  \set Staff.printKeyCancellation = ##f
  \numericTimeSignature
  \compressEmptyMeasures
  \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
  \key d \minor
  \tempo 4 = 124
}

sawHighMainRiff = \relative c {
  d8 a'-. f-. a-. c, a'-. f-. a-. |
  bf, bf'-. f-. bf-. c, g'-. e-. g-. |
  d a'-. f-. a-. c, a'-. f-. a-. |
  bf, bf'-. a-. g-. c, g'-. f-. e-. |
}

sawtoothHigh = \relative c {
  \global
  \clef bass

  \sawHighMainRiff
  \break

  % bass enters
  \repeat unfold 2 { \sawHighMainRiff }

  % lead enters
  \repeat volta 2 { \sawHighMainRiff }

  \sawHighMainRiff

  \repeat volta 2 {
    \repeat unfold 2 {
      r8 a'-. f-. a-. r f-. d-. f-. |
      r d c d r d-. r4 |
    }
  }

  % all notes staccato
  \repeat unfold 2 {
    d8-. a'-. f-. a-. c,-. a'-. f-. a-. |
    bf,-. bf'-. f-. bf-. c,-. g'-. e-. g-. |
    d-. a'-. f-. a-. c,-. a'-. f-. a-. |
    bf,-. bf'-. a-. g-. c,-. g'-. f-. e-. |
  }

  \bar "|."
}

sawLowMainRiff = \relative c, {
  d4 r8 c ~ c r8 r4 | bf4 r8 bf c c bf c |
  d4 r8 c ~ c r8 r4 | bf4 r8 c ~ c8 g' f e |
}

sawtoothLow = \relative c, {
  \global
  \clef bass

  R1*4 |

  \repeat unfold 2 { \sawLowMainRiff }

  \repeat volta 2 \sawLowMainRiff

  \sawLowMainRiff

  \repeat volta 2 {
    d4 r8 bf8 ~ bf bf c bf |
    g4 r8 g8 ~ g r g' f |
    d4 r8 bf8 ~ bf bf c bf |
    g4 r8 g8 ~ g r bf4 |
  }

  \repeat unfold 2 {
    d4 r4 r2 | bf'8 r r g r g f e |
    d4 r4 r2 | bf'8r  r c r2 |
  }
}

mainDrumBeatKickSnare = \drummode {
  bd4 sn8 bd r bd sn4 | bd4 sn8 bd r bd sn bd |
  bd4 sn8 bd r bd sn4 | bd4 sn8 bd r bd sn sn |
}

percussion = \drummode {
  \global
  R1*8 |

  \stemDown

  \mainDrumBeatKickSnare


  \repeat volta 2 {
    <<
      { \repeat unfold 32 { hh8 }  } \\
      { \mainDrumBeatKickSnare }
    >>
  }

  <<
    { \repeat unfold 32 { hh8 }  } \\
    { \mainDrumBeatKickSnare }
  >>

  \repeat volta 2 {
    <<
      { \repeat unfold 32 { hh8 }  } \\
      { \mainDrumBeatKickSnare }
    >>
  }

  <<
    { \repeat unfold 32 { hh8 }  } \\
    { \mainDrumBeatKickSnare }
  >>

  <<
    { \repeat unfold 16 { hh8 } | r4 hh8 hh hh hh r4 } \\
    {
      bd4 sn8 bd r bd sn4 | bd4 sn8 bd r bd sn bd |
      bd4 sn8 bd r bd sn4 |
    }
  >>

  bd4 r8 bd r2 |
}

lead = \relative c'' {
  \global

  R1*12 |


  \repeat volta 2 {
    a8( g f e f d4. ~ | d4. a'8)-. g( f e c) |
    a'( g f e f d4.) | bf'4( a8 g ~ g2)  |
  }
  d1 ~ | d2 r2 | R1*2 |

  \repeat volta 2 {
    d'8( a g a g4\glissando a8 f |
    d2 ~ d8 d)-. f( g) |
    d'( a g a f'4. e8 |
    d1) |
  }

  R1*8 |
}

leadStaff = \new Staff \with {
  instrumentName = "Lead"
  midiInstrument = #"lead 8 (bass+lead)"
  midiMinimumVolume = #0.6
  midiMaximumVolume = #0.6
} {
  \lead
}

highSawStaff = \new Staff \with {
  instrumentName = "Saw"
  midiInstrument = #"lead 2 (sawtooth)"
  midiMinimumVolume = #0.8
  midiMaximumVolume = #0.8
} {
  \sawtoothHigh
}

lowSawStaff = \new Staff \with {
  instrumentName = "Bass"
  midiInstrument = #"lead 8 (bass+lead)"
  midiMinimumVolume = #0.6
  midiMaximumVolume = #0.6
} {
  \sawtoothLow
}

drumStaff = \new DrumStaff \with {
  instrumentName = "Drums"
  midiMinimumVolume = #0.9
  midiMaximumVolume = #0.9
} {
  \percussion
}

\score {
  <<
    \leadStaff
    \highSawStaff
    \lowSawStaff
    \drumStaff
  >>
  \layout {
    \context {
      \Score \omit BarNumber
    }
    \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 {
  \articulate \unfoldRepeats {
    <<
      \leadStaff
      \highSawStaff
      \lowSawStaff
      \drumStaff
  >>
  }
  \midi {}
}