File:Crush Collision March.pdf

From Wikimedia Commons, the free media repository
Jump to navigation Jump to search
Go to page
next page →
next page →
next page →

Original file(1,239 × 1,752 pixels, file size: 124 KB, MIME type: application/pdf, 4 pages)

Captions

Captions

Add a one-line explanation of what this file represents

Summary

[edit]
Description
Date
Source Faithful transcription from Scott Joplin: Complete Piano Works, Fourth Edition, pages 4–7. Both the copyright of the original work (first published 1896, composer died 1917) and of the critical edition that the work is transcribed from (first published 1971, fourth edition published 1981) should be expired by now.
Author

Original: Scott Joplin Restoration: Vera Brodsky Lawrence (editor)

Vectorization: Galaktos (LilyPond)

LilyPond source

\version "2.18.2"

% general warning: this document contains a lot of overrides and tweaks to closely (though not perfectly) match the original printed score

\header {
  title = "The Crush Collision March"
  short-title = "Collision March"
  composer = "Scott Joplin"
  composer-credit = \markup { \override #'(baseline-skip . 2.5) \left-column { " Author of“Combintion March”" "“Harmony“Club Waltz”&c." } } % sic!
  copyright = "1896 by John R. Fuller"
  tagline = ##f
  page-count = 4
}

% helper command to print title and composer in uppercase in the title while keeping them in regular case for the metadata
#(define-markup-command (uppercase-property layout props symbol) (symbol?)
   (let ((property (chain-assoc-get symbol props)))
     (interpret-markup layout props
                       (string-upcase property))))
% helper command to get the page-count (number) as a string for the footer
#(define-markup-command (string-property layout props symbol) (symbol?)
   (let ((property (chain-assoc-get symbol props)))
     (interpret-markup layout props
                       (number->string property))))

% source: http://lsr.di.unimi.it/LSR/Snippet?id=861
#(define ((shift offsets) grob)
"Defines how NoteHeads should be moved according to the given list of offsets."
 (let* (
 ;; NoteHeads
        ;; Get the NoteHeads of the NoteColumn
        (note-heads (ly:grob-array->list (ly:grob-object grob 'note-heads)))
        ;; Get their durations
        (nh-duration-log 
          (map 
            (lambda (note-head-grobs)
              (ly:grob-property note-head-grobs 'duration-log))
            note-heads))
        ;; Get the stencils of the NoteHeads
        (nh-stencils 
          (map 
            (lambda (note-head-grobs)
              (ly:grob-property note-head-grobs 'stencil))
            note-heads))
        ;; Get their length in X-axis-direction
        (stencils-x-lengths 
          (map 
            (lambda (x) 
                (let* ((stencil (ly:grob-property x 'stencil))
                       (stencil-X-exts (ly:stencil-extent stencil X))
                       (stencil-lengths (interval-length stencil-X-exts)))
                stencil-lengths))
             note-heads))
 ;; Stem
        (stem (ly:grob-object grob 'stem))
        (stem-thick (ly:grob-property stem 'thickness 1.3))
        (stem-stil (ly:grob-property stem 'stencil))
        (stem-x-width (if (ly:stencil? stem-stil)
                         (interval-length (ly:stencil-extent stem-stil X))
                         ;; if no stem-stencil use 'thickness-property
                         (/ stem-thick 10)))
        (stem-dir (ly:grob-property stem 'direction))
        ;; Calculate a value to compensate the stem-extension
        (stem-x-corr 
          (map 
            (lambda (q)
               ;; TODO better coding if (<= log 0)
               (cond ((and (= q 0) (= stem-dir 1))
                      (* -1 (+ 2  (* -4 stem-x-width))))
                     ((and (< q 0) (= stem-dir 1))
                      (* -1 (+ 2  (* -1 stem-x-width))))
                     ((< q 0)
                      (* 2 stem-x-width))
                     (else (/ stem-x-width 2))))
             nh-duration-log)))
 ;; Final Calculation for moving the NoteHeads
   (for-each
     (lambda (nh nh-x-length off x-corr) 
         (if (= off 0)  
           #f 
           (ly:grob-translate-axis! nh (* off (- nh-x-length x-corr)) X)))
     note-heads stencils-x-lengths offsets stem-x-corr)))

displaceHeads =
#(define-music-function (parser location offsets) (list?)
"
 Moves the NoteHeads, using (shift offsets)
"
 #{
   \once \override NoteColumn.before-line-breaking = #(shift offsets)
 #})

\paper {
  % based on the default value in ly/titling-init.ly
  bookTitleMarkup = \markup {
    \override #'(baseline-skip . 3.5)
    \column {
      \override #'(baseline-skip . 6.5)
      \column {
        \fill-line {
          \huge \larger \larger
          \concat { \uppercase-property #'header:title "." }
        }
        \override #'(baseline-skip . 4.0)
        \fill-line {
          "" % no poet
          "" % no instrument
          \center-column { \concat { { \uppercase-property #'header:composer } "." } \fromproperty #'header:composer-credit }
        }
      }
    }
  }
  evenFooterMarkup = \markup {
    \on-the-fly \not-first-page
    \italic \concat { \fromproperty #'header:short-title "." \string-property #'header:page-count "." }
  }
  oddFooterMarkup = \markup {
    \on-the-fly \first-page \fill-line { \italic \concat { "Copyright " \fromproperty #'header:copyright "." } }
    \on-the-fly \not-first-page \italic \concat { \fromproperty #'header:short-title ". " \string-property #'header:page-count "." }
  }
  print-page-number = ##f
}

\layout {
  \context {
    \Score
    \omit BarNumber
  }
}

% clef changes look more like cue clefs than full-size clefs
smallClefBass = { \once \override Staff.Clef.font-size = #-1 \clef "bass" }
smallClefViolin = { \once \override Staff.Clef.font-size = #-2 \clef "violin" }

\score {
  \new PianoStaff \with {
    instrumentName = #"PIANO." % semantically, instrumentName should be "Piano" and uppercase and period should come from formatting, but that seems hard to implement (no easy template as for bookTitleMarkup) and for the instrument name it doesn’t matter as much, so *shrug*
  } <<
    \new Staff {
      \key d \minor
      \relative f' {
        % Intro
        \partial 4 <f f'> |
        <e e'>8^\markup { \translate #'(1.5 . 3) \huge \right-align "Introd." } <d d'> <cis cis'> <bes bes'> <a a'>4 <f' f'> |
        <e e'>8 <d d'> <cis cis'> <bes bes'> <a a'>4 <gis gis'> |
        <a a'> <bes bes'> <a a'> <a' cis e a> |
        <d f a d>8 <cis cis'> <d f a d> <cis cis'> <d f a d>4 f, |
        \bar ".|:-||" \break
      }
      \relative c'' {
        \tempo "Tempo di Marcia."
        % Part A
        \repeat volta 2 {
          <<
            { a2 a | a a | }
            \\
            { r4 <a, d f> r <a cis e g> | r <a d f> r \displaceHeads #'(1 -1 0) <c d fis> | }
          >>
          g'4. a8 bes4 d |
          a8 d cis d a2 |
          g4. a8 bes4 d |
          a8 d cis d <a d f>2 | \break
          <e gis b e> f'8 e dis e |
          <a, cis e a>4 <a cis e a> a,8( gis a4) |
          <<
            { a'2 a | a a | }
            \\
            { r4 <a, d f> r <a cis e g> | r <a d f> r \displaceHeads #'(1 -1 0) <c d fis> | }
          >>
          g'4. a8 bes4 d |
          a8 d cis d a2 | \break
          <a d>4. <a e'>8 <a f'>4 <a d> |
          <bes d bes'> <gis d' gis> <a cis e a> <e gis! b e> |
          <a cis e a>2 bes'8 a gis a |
        }
        \alternative {
          { <d, f a d>4 r r2 | }
          { <d f a d>4 <a f'> <a e'> <a d> | }
        }
        % Part B
        \repeat volta 2 {
          <<
            { e'1~ | \break e4 }
            \\
            { r <g, bes> q q | q }
          >>
          <bes c> <bes d> <bes e> |
          <<
            { a'2.( f4) | }
            \\
            { \tweak Y-offset #-0.25 r <a, c> q <f d'> | }
          >>
          <f c' f> <c' c'> q4. <a a'>8 |
          <<
            { <bes bes'~>1 | bes'4 }
            \\
            { \tweak Y-offset #0 \tweak X-offset #-1 r <c, e> q q | q }
          >>
          <c c'> q4. <gis gis'>8 |
          <<
            { <a a'~>1 | \pageBreak a'4 }
            \\
            { \tweak Y-offset #0.25 \tweak X-offset #-1 r <c, f> q q | q }
          >>
          <a f'> <a e'> <a d> |
          <<
            { cis1~ | cis4 }
            \\
            { s <e, g> q q | q }
          >>
          <a a'> <e e'> <g g'> |
          <<
            { <f f'>1 | }
            \\
            { \tweak Y-offset #0 \tweak X-offset #-1 r4 <a d> q q | }
          >>
          <dis a'> <dis c'> <dis b'> <dis a'> |
          <<
            { <g, g'~>1 | \break g'4 }
            \\
            { \tweak Y-offset #0.25 \tweak X-offset #-1 r <c, e> q q | <b d> }
          >>
          <f' g> <f a> <f b> |
        }
        \alternative {
          {
            <e g c>2 r4 <d f g> |
            <c e g c> <a f'> <a e'> <a d> |
          }
          {
            <e' g c>2 r4 <d f g> |
            <c e g c> g' e c |
          }
        }
        % Part C
        \repeat volta 2 {
          % several beams in this part don’t match the printed score, but I couldn’t find an easy way to override them (in particular to make a slanted beam straight)
          <bes d>2. e8( g) | \break
          <bes, d>4 <bes des> <bes c> f'8( e) |
          <a, d>2. f'8( a) |
          <a, d>4 <a des> <a c> f'8( a) |
          <e g bes d>\arpeggio( e g bes) q4 q |
          q8\arpeggio( c bes g e d des c) |
          <c f a c>\arpeggio( c f a) q4 q | \break
          c8( a f c a' f c a) |
          <bes d>2. e8( g) |
          <bes, d>4 <bes des> <bes c> f'8( e) |
          <a, d>2. e'8( a) |
          <a, d>4 q <a f'> <a a'> | \break
          <d fis a d>8\arpeggio( d fis a) <d, g d'>\arpeggio( d g bes) |
          <a, cis e a>\arpeggio( a cis e) <a, d a'>\arpeggio( a d f!) |
          d( f e d d c f a)
        }
        \alternative {
          { <bes, g'>2 <a f'>4 c | }
          { <bes g'>2 <a f'>4 f | \bar ".|:-||" \pageBreak }
        }
        \key bes \major
        % Part D
        \repeat volta 2 {
          d'2 c4. d8 |
          es2 <a, es' a> |
          es' d4. es8 |
          f2 <bes, d f bes>\arpeggio |
          <d d'> q4. <b b'>8 | \break
          <c es c'>2 <g es' g> |
          <c es c'> q4. <a a'>8 |
          <bes d f bes>2\arpeggio <f bes d f>\arpeggio |
          d' c4. d8 |
          es2 <a, es' a> | \break
          es' d4. es8 |
          f2 <bes, d f bes>\arpeggio |
          <bes bes'> <g g'>4. <bes bes'>8 |
          <d d'>2 <f f'>4. <d d'>8 |
          <c e c'>2 <c es c'> | \break
        }
        \alternative {
          { <bes d f bes>4. f8 g a bes c }
          { q2. r4 | }
        }
        % Part E
        \repeat volta 2 {
          r <g' bes d g> <fis c' d fis> <d d'> |
          <g g'> <bes d bes'> <a c a'> <d, fis a d> |
          <g bes d g>2 \ottava #1 \set Staff.ottavation = #"8" <a cis e a> | \break
          <d fis a d>4 q \ottava #0 r2 |
          r4 <f, a c f> <e bes' c e> <c c'> |
          <f f'> <a c a'> <g bes g'> <e g bes e> |
          <f! a c f!>2 <e g bes e> |
          <f a c f>4 q r <c, fis a> | \pageBreak
          \once \override DynamicText.X-offset = #-4 \once \override DynamicLineSpanner.Y-offset = #2.5 \once \override DynamicText.font-size = #-1 <c e g>\ff <b f' g> <c e g> <b f' g> |
          \once \override Score.NoteColumn.X-offset = #2.5 \once \override DynamicText.X-offset = #-4 \once \override DynamicLineSpanner.Y-offset = #2.5 \once \override DynamicText.font-size = #-1 <c e g>\ff <b f' g> <c e g> r |
          \acciaccatura b'8 c2 \acciaccatura b8 c2 |
          \once \override Accidental #'stencil = ##f \acciaccatura b8 c4 \acciaccatura b8 c4 r <e, bes' c> | \break
          <f a c> <e bes' c> <f a c> <e bes' c> |
          <f a c> <\tweak Accidental.stencil ##f e bes' c> <f a c> r |
          \acciaccatura e'8 f4-. \acciaccatura e8 f4-. \acciaccatura e8 f4-. \acciaccatura e8 f4-. |
          \acciaccatura e8 f4-. r s2 | \break
          <d, d'>2 <c c'>4. <d d'>8 |
          <es! es'!>2 <a es' a> |
          <es es'> <d d'>4. <es es'>8 |
          <f bes d f>2\arpeggio <bes d f bes>\arpeggio |
          <d d'> q4. <b b'>8 | \break
          <c es c'>2 <g es' g> |
          <c es c'> q4. <a a'>8 |
          <bes d f bes>2\arpeggio <f bes d f>\arpeggio |
          <d d'> <c c'>4. <d d'>8 |
          <es es'>2 <a es' a> |
          <es es'> <d d'>4. <es es'>8 | \break
          <f bes d f>2\arpeggio <bes d f bes>\arpeggio |
          <bes bes'> <g g'>4. <bes bes'>8 |
          <d d'>2 <f f'>4. <d d'>8 |
          <c e c'>2 <c es c'> |
        }
        \alternative {
          { <bes d f bes>2. r4 | }
          { <bes d f bes>2 r4 \bar "|." }
        }
      }
    }
    \new Dynamics { % also used for the programmatic annotations and the "Fine.", which is a hack, but the best solution I found :/
      \override DynamicText.font-size = #-3
      % Intro
      \partial 4 s4 |
      s1*4 |
      % Part A
      s1\mf s1*16 |
      % Part B
      s1*18 |
      % Part C
      s1*17 |
      % Part D
      s1*17
      % Part E
      s1*8 |
      \once \override TextScript.X-offset = #-3.5 s1-\markup { \teeny \italic "The noise of the trains while running at the rate of sixty miles per hour," } |
      s1 |
      \acciaccatura s8-\markup { \teeny \italic "Whistling for the crossing," } s1 |
      s1 |
      s1-\markup { \teeny \italic "Noise of the trains" } |
      s1 |
      \acciaccatura s8-\markup { \override #'(baseline-skip . 2) \teeny \italic \left-column { "Whistle before" "the collision" } } s1 |
      s2 \once \override TextScript.padding = #0 s2-\markup { \override #'(baseline-skip . 1.5) \center-align \teeny \italic \center-column { "The" "collision" } } |
      s1\mf |
      s1*15 |
      s2 s4-\markup { \center-align \small \italic \bold "Fine." }
    }
    \new Staff {
      \key d \minor
      \clef "bass"
      \relative f, {
        % Intro
        \partial 4 <f f'>4 |
        <e e'>8 <d d'> <cis cis'> <bes bes'> <a a'>4 <f' f'> |
        <e e'>8 <d d'> <cis cis'> <bes bes'> <a a'>4 <gis gis'> |
        <a a'> <bes bes'> <a a'> <a' a'> |
        <d, d'>8 <e e'> <f f'> <e e'> <d d'>4 r |
        \bar ".|:-||" \break
        % Part A
        \repeat volta 2 {
          <d d'> r <e e'> r |
          <f f'> r <fis fis'> <a a'> |
          <bes bes'> <g' bes d> <g, g'> <g' bes d> |
          <d, d'> <a'' d f> <d,, d'> <a'' d f> |
          <bes, bes'> <g' bes d> <g, g'> <g' bes d> |
          <d, d'> <a'' d f> <d,, d'> <a'' d f> |
          <e, e'> <e' gis b d> <e, e'> <e' gis b d> |
          <a, a'> <a a'> a8( gis a4) |
          <d, d'> r <e e'> r |
          <f f'> r <fis fis'> <a a'> |
          <bes bes'> <g' bes d> <g, g'> <g' bes d> |
          <d, d'> <a'' d f> <d,, d'> <a'' d f> |
          <f, f'> <a' d f> <d,, d'> <a'' d f> |
          <g, g'> <bes bes'> <a a'> <e e'> |
          <a, a'> <a'' cis e g> <cis,, cis'> <a'' cis e g> |
        }
        \alternative {
          { <d,, d'> <a' a'> <f f'> <e e'> | }
          { <d d'> r r2 | }
        }
        % Part B
        \repeat volta 2 {
          <c c'>4 <d d'> <e e'> <f f'> |
          <g g'> \displaceHeads #'(1 -1 0) <bes' c e> <c,, c'> \displaceHeads #'(1 -1 0) <bes'' c e> |
          <f, f'> <g g'> <a a'> <bes bes'> |
          <a a'> <a' c f> <f, f'> <a' c f> |
          <g, g'> <c c'> <bes bes'> <g g'> |
          <e e'> \displaceHeads #'(1 -1 0) <bes'' c e> <c,, c'> \displaceHeads #'(1 -1 0) <bes'' c e> |
          <f, f'> <c' c'> <a a'> <g g'> |
          <f f'> <a' c f> q q |
          <a,, a'> <b b'> <cis cis'> <d d'> |
          <e e'> \displaceHeads #'(1 -1 0) <g' a cis> cis, <a' cis> |
          d, <a' d> q q |
          <fis, fis'> <a' c dis> q q |
          <g, g'> <c c'> <b b'> <a a'> |
          <g g'> <g' b d f> <g, g'> <g' b d f> |
        }
        \alternative {
          {
            <c, c'> <e e'> <d d'> <b b'> |
            <c c'> r r2 |
          }
          {
            <c c'>4 <e e'> <d d'> <b b'> |
            <c c'> r r2 |
          }
        }
        % Part C
        \repeat volta 2 {
          <g g'>4 \displaceHeads #'(1 -1 0) <bes' c e> <c,, c'> \displaceHeads #'(1 -1 0) <bes'' c e> |
          <e,, e'> \displaceHeads #'(1 -1 0) <bes'' c e> <c,, c'> \displaceHeads #'(1 -1 0) <bes'' c e> |
          <f, f'> <a' c f> <c,, c'> <a'' c f> |
          <f, f'> <a' c f> <a, a'> <a' c f> |
          <g, g'> \displaceHeads #'(1 -1 0) <bes' c e> <c,, c'> \displaceHeads #'(1 -1 0) <bes'' c e> |
          <e,, e'> \displaceHeads #'(1 -1 0) <bes'' c e> <c,, c'> \displaceHeads #'(1 -1 0) <bes'' c e> |
          <a, a'> <a' c f> <f, f'> <a' c f> |
          <a, a'> <a' c f> <f, f'> <a' c f> |
          <g, g'> \displaceHeads #'(1 -1 0) <bes' c e> <c,, c'> \displaceHeads #'(1 -1 0) <bes'' c e> |
          <e,, e'> <bes'' c e> <c,, c'> \displaceHeads #'(1 -1 0) <bes'' c e> | % the first <bes c e> doesn’t have \displaceHeads, it’s set differently than the other ones in the original score
          <f, f'> <a' c f> <c,, c'> <a'' c f> |
          <f, f'> <a' c f> <a, a'> <a' c f> |
          \smallClefViolin
          <d fis a c> q <g bes> q |
          <a, cis e g> q <d f!> <d f> |
          <bes d f bes> \displaceHeads #'(0 0 1 -1) <b d f gis> <c f a> q |
          \smallClefBass
        }
        \alternative {
          { <c,, c'>8 <cis cis'> <d d'> <e e'> <f f'>4 r | }
          { <c c'>8 <cis cis'> <d d'> <e e'> <f f'>4 r | \bar ".|:-||" }
        }
        \key bes \major
        % Part D
        \repeat volta 2 {
          bes <f' bes d> bes, q |
          c <f a es'> f, q |
          c' <f a es'> f, q |
          bes <f' bes d> d q |
          b <g' b d f> g, q |
          c <g' c es> es q |
          a, <f' a c es> f, q |
          bes <f' bes d> d q |
          bes <f' bes d> bes, q |
          c <f a es'> f, q |
          c' <f a es'> f, q |
          bes <f' bes d> d q |
          es <g bes es> e <g bes cis> |
          f <bes d> d, <f bes d> |
          c \displaceHeads #'(1 -1 0) <bes' c e> f, <f' a c es> |
        }
        \alternative {
          { bes, <f' bes d> f, q | }
          { <bes bes'> <f f'> <bes, bes'> <d d'> | }
        }
        % Part E
        \repeat volta 2 {
          <g g'> <bes bes'> <a a'> r |
          r <g g'> <fis fis'> <d d'> |
          <g g'>2 <a a'> |
          <d, d'>4 q r <c c'> |
          <f f'> <a a'> <g g'> r |
          r <f f'> <e e'> <c c'> |
          <f f'>2 <c c'> |
          <f f'>4 q r es! |
          \once \override TextScript.X-offset = #-3.5 e8( es d des c des d es) |
          e( es d des) c4 r |
          \smallClefViolin \acciaccatura a'''8 \stemUp bes2 \acciaccatura a8 bes2 |
          \acciaccatura a8 bes4 \acciaccatura a8 bes4 \stemNeutral r \smallClefBass c,,, |
          a8( as g ges f ges g as) |
          a( as g ges) f4 r |
          \smallClefViolin \acciaccatura d''''8 es4-. \acciaccatura d8 es4-. \acciaccatura d8 es4-. \acciaccatura d8 es4-. |
          \acciaccatura d8 es4-. r \smallClefBass << \once \override DynamicText.X-offset = #-5 \once \override DynamicLineSpanner.Y-offset = #0 \once \override DynamicText.font-size = #-1 \once \override TextScript.X-offset = #-5 \once \stemDown <f,,,, f'>2\ff_\markup { \concat { \musicglyph #"pedal.Ped" \musicglyph #"pedal.." } } \\ \once \override DynamicText.X-offset = #-5 \once \override DynamicLineSpanner.Y-offset = #0 \once \override DynamicText.font-size = #-1 \once \override Script.padding = #-0.25 \once \override Script.X-offset = #1.15 \displaceHeads #'(0 0 1 -1) \once \stemUp <a' c es f>2^\fermata^\ff >> |
          bes4 <f' bes> bes,4 <f' bes> |
          c <f a> f, <f' a> |
          c <f a> f, <f' a> |
          bes, <f' bes d> d <f bes d> |
          b, <g' b d f> g, <g' b d f> |
          c, <g' c es> es <g c es> |
          a, <f' a es'> f, <f' a es'> |
          bes, <f' bes d> d <f bes d> |
          bes,4 <f' bes> bes,4 <f' bes> |
          c <f a> f, <f' a> |
          c <f a> f, <f' a> |
          bes, <f' bes d> d <f bes d> |
          es <g bes es> e <g bes cis> |
          f <bes d> d, <f bes d> |
          c \displaceHeads #'(1 -1 0) <bes' c e> f, <f' a es'> |
        }
        \alternative {
          { <bes, bes'> <f f'> <bes, bes'> <d d'> | }
          { <bes bes'>2 r4 \bar "|." }
        }
      }
    }
  >>
}

Licensing

[edit]
Public domain

This work is in the public domain in its country of origin and other countries and areas where the copyright term is the author's life plus 70 years or fewer.


This work is in the public domain in the United States because it was published (or registered with the U.S. Copyright Office) before January 1, 1929.

File history

Click on a date/time to view the file as it appeared at that time.

Date/TimeThumbnailDimensionsUserComment
current18:53, 23 March 2018Thumbnail for version as of 18:53, 23 March 20181,239 × 1,752, 4 pages (124 KB)Galaktos (talk | contribs)remove page numbers
21:49, 10 March 2018No thumbnail0 × 0 (124 KB)Galaktos (talk | contribs)User created page with UploadWizard

There are no pages that use this file.

File usage on other wikis

The following other wikis use this file:

Metadata