File:Maple Leaf Rag.pdf
Original file (1,239 × 1,752 pixels, file size: 107 KB, MIME type: application/pdf, 3 pages)
Captions
Summary
[edit]DescriptionMaple Leaf Rag.pdf | |
Date | |
Source | Faithful transcription from Scott Joplin: Complete Piano Works, Fourth Edition, pages 26–28. 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
The musical notation in this image was rendered by LilyPond, a free-software engraving program. Here is a listing of the LilyPond source used to create this file. |
\version "2.18.2"
\header {
title = "Maple Leaf Rag"
composer = "Scott Joplin"
copyright = "1899 by John Stark & Son"
tagline = ##f
page-count = 3
}
% 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 initial letters of a string for the footer (e. g. "Foo Bar Baz" → "F. B. B.")
#(use-modules (ice-9 regex))
#(define-markup-command (initials-property layout props symbol) (symbol?)
(let ((property (chain-assoc-get symbol props)))
(interpret-markup layout props
(regexp-substitute/global #f "[[:lower:]]+" property 'pre "." 'post))))
% 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 their length in X-axis-direction
(stencils-x-lengths
(map
(lambda (x)
(let* ((grob-x-ext (ly:grob-extent x grob X)))
(if (interval-sane? grob-x-ext)
(interval-length grob-x-ext)
0)))
note-heads))
;; Stem
(stem (ly:grob-object grob 'stem))
(stem-thick (ly:grob-property stem 'thickness 1.3))
(stem-x-width (if (ly:grob? stem)
(let ((stem-x-ext (ly:grob-extent stem grob X)))
(if (interval-sane? stem-x-ext)
(interval-length stem-x-ext)
(/ stem-thick 10)))
;; Fall back
;; TODO is it ever used?
(/ 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 . 6.5)
\column {
\vspace #2
\override #'(baseline-skip . 9)
\column {
\fill-line {
\huge \larger \larger
\concat { \uppercase-property #'header:title "." }
}
\override #'(baseline-skip . 3.0)
\fill-line {
"" % no poet
"" % no instrument
\small \concat { "BY " { \uppercase-property #'header:composer } "." \hspace #5 }
}
}
\vspace #1
}
}
evenFooterMarkup = \markup {
\on-the-fly \not-first-page \tiny \italic \initials-property #'header:title
}
oddFooterMarkup = \markup {
\on-the-fly \first-page \small \fill-line { \italic \concat { "Copyright " \fromproperty #'header:copyright "." } }
\on-the-fly \not-first-page \tiny \italic \initials-property #'header:title
}
print-page-number = ##f
}
\layout {
\context {
\Score
\omit BarNumber
\override NonMusicalPaperColumn.line-break-permission = ##f
\override NonMusicalPaperColumn.page-break-permission = ##f
}
}
LH = { \change Staff = "LH" }
RH = { \change Staff = "RH" }
lh = \markup { \italic \tiny "l. h." }
rh = \markup { \italic \tiny "r. h." }
\score {
\new PianoStaff <<
\new Staff = "RH" {
\clef "violin"
\key as \major
\time 2/4
\tweak X-offset #5 \tweak padding #3 \tempo "Tempo di marcia."
\relative as' {
% Part A
\partial 8 r8 |
\repeat volta 2 {
\stemDown
r16 as <es es'> as c <es, es'>8 g16 |
<es es'> g bes <es, es'>~ q4 |
r16 as <es es'> as c <es, es'>8 g16 |
<es es'> g bes <es, es'>~ q8 r16 q | \break
r as ces <fes, fes'> r <es es'> r q |
r as ces <fes, fes'> r <es es'> r8 |
\stemNeutral
\LH \voiceOne \slurDown d,16\rest as(^\rh ces as') r as(^\rh ces as') |
\RH \oneVoice \slurNeutral r as( ces as') r as( ces as') | \break
<as, as'>8 q q q16 q~ |
q es' f c es <as, f'>8 <fes as>16~ |
<fes! as> bes < fes ces'> as bes <es, c'>8 as16 |
q as <es bes'>8 <es as> r16 <as, as'>~ | \break
q8 q q q16 q~ |
q es' f c es <as, f'>8 <fes as>16~ |
<fes! as> bes <fes ces'> as bes <es, c'>8 as16 |
}
\alternative {
{ q as <es bes'>8 <es as> r8 | }
{ <es c'>16 as <es bes'>8 <es as> r8 | \bar ".|:-||" \pageBreak }
}
% Part B
\repeat volta 2 {
r16 g' <es es'> g bes <d, d'>8 g16 |
<des! des'!> g bes <c, c'>~ q es <bes bes'> es |
r c <as as'> c es <f, f'>8 c'16 |
<as as'> c es <f, f'>~ q c' q8 |
r16 es <g, g'> bes des <f, f'>8 es'16 | \break
<g, g'> bes des <f, f'>~ q des' q8 |
r16 c <as as'> c es <f, f'>8 c'16 |
<as as'> c es <f, f'>~ q c' q8 |
r16 g' <es es'> g bes <d, d'>8 g16 |
<des! des'!> g bes <c, c'>~ q es <bes bes'> es |
r c <as as'> c es <f, f'>8 c'16 | \break
<as as'>8 q <g g'> <ges ges'> |
\stemUp r16 f a c f c a f |
r f bes des <f, f'>8 <f bes des> | \stemNeutral
<d f as c>[ r16 q] r <des bes'>8 es16 |
}
\alternative {
{ <c as'>8 <es es'> q q | }
{ r16 as c es <as, as'>8 r | \bar "||" \break }
}
% Part A'
\stemDown
r16 as <es es'> as c <es, es'>8 g16 |
<es es'> g bes <es, es'>~ q4 |
r16 as <es es'> as c <es, es'>8 g16 |
<es es'> g bes <es, es'>~ q8 r16 q |
r as ces <fes, fes'> r <es es'> r q | \break
r as ces <fes, fes'> r <es es'> r8 |
\stemNeutral
\LH \voiceOne d,16\rest as^\rh ces as' r as^\rh ces as' |
\RH \oneVoice r as ces as' r as ces as' |
<as, as'>8 q q q16 q~ |
q es' f c es <as, f'>8 <fes as>16~ | \break
<fes! as> bes < fes ces'> as bes <es, c'>8 as16 |
q as <es bes'>8 <es as> r16 <as, as'>~ |
q8 q q q16 q~ |
q es' f c es <as, f'>8 <fes as>16~ |
<fes! as> bes <fes ces'> as bes <es, c'>8 as16 |
q as <es bes'>8 <es as> <as as'> | \bar ".|:-||" \pageBreak
% Part C
\key des \major
\repeat volta 2 {
<as c es as>8. \displaceHeads #'(1 -1 0 0) <bes c es as>16~ \displaceHeads #'(1 -1 0 0) q <c es> bes8 |
<as c es as>8. \displaceHeads #'(1 -1 0 0) <bes c es as>16~ \displaceHeads #'(1 -1 0 0) q <c es> bes q |
as des bes des f as, des f |
bes, des f as,~ as f' bes, f' |
<as, c es as>8. \displaceHeads #'(1 -1 0 0) <bes c es as>16~ \displaceHeads #'(1 -1 0 0) q <c es> bes8 | \break
<as c es as>8. \displaceHeads #'(1 -1 0 0) <bes c es as>16~ \displaceHeads #'(1 -1 0 0) q <c es> bes q |
as des bes des f as, des f |
bes, des f as,~ as f' a, <es' f> |
<bes d f bes>8. \displaceHeads #'(1 -1 0 0) <c d f bes>16~ \displaceHeads #'(1 -1 0 0) q <d f> c8 |
<bes d f bes>8. \displaceHeads #'(1 -1 0 0) <c d f bes>16~ \displaceHeads #'(1 -1 0 0) q <d f> c q |
r es <bes bes'> es ges <c, c'>8 es16 | \break
<bes bes'> es ges <c, c'>~ q es <bes bes'>8 |
<des fes des'> q <c fes c'> <bes fes' bes> |
<as f'>16 des es <bes ges'>~ q bes <as f'>8 |
<g f'>16 des' es <ges, f'>~ q c <ges es'> <f des'>~
}
\alternative {
{ q <as as'>8 f'16 q f q f | }
{ <f, des'> des' f as <des, des'>8 r | \bar ".|:-||" \break }
}
% Part D
\key as \major % in the score, the key cancellation is part of the regular key, but in LilyPond it doesn’t seem to be possible to put the KeyCancellation after the KeySignature (and even then the spacing wouldn’t be quite right)
\repeat volta 2 {
<as as'> <as f'> <as as'> <as f'> |
<f' as> <f bes>16 <f c'>~ q bes as f |
es f8 <as, c>16~ q4 |
r16 es' <as, f'> c es <as, f'>8 c16 |
<g es'>8 f'16 <g, bes>~ q4 | \break
r16 des' <g, f'> bes des <g, f'>8 <as c>16~ |
q es' <as, f'> c es <as, f'>8 <as c>16~ |
q es' <as, f'> c es <as, f'>8 es'16 |
<as, as'>8 <as f'> <as as'> <as f'> |
<f' as> <f bes>16 <f c'>~ q bes as f |
as8 f es16 as8 <as, c>16~ | \break
q es' <as, f'> c es <as, f'>8 <f as>16~ |
q bes q8 <fes as> <fes bes>16 <es as>~ |
q bes' <es, c'> as bes <es, c'>8 <d as'>16~ |
<d! as'> bes' <d, c'> as' r <des, bes'>8 es16 |
}
\alternative {
{ \stemDown <c as'>8 <es es'> q q | }
{ <c as'> <g' des' es> <as c es as> \stemNeutral \bar "|." }
}
}
}
\new Dynamics {
\override DynamicText.font-size = #-1
% Part A
\partial 8 r8 |
r2\f |
r2*5 |
r2\p |
r2 |
r2\mf\< |
r32 r32\! r4.. |
r2*7 |
% Part B
s16\f s16^\markup { \small "stacc." } s4. |
s2*16
% Part A'
r2\f |
r2*5 |
r2\p |
r2 |
r2\mf\< |
r8 r8\! r4 |
r2*6 |
% Part C
s2*17 |
% Part D
s2*16 |
s4.
}
\new Staff = "LH" {
\clef "bass"
\key as \major
\relative es, {
% Part A
\partial 8 <es es'>8 |
\repeat volta 2 {
<as as'> <es' as c> q <a, a'> |
<bes bes'> <es g des'> q <es, es'> |
<as as'> <es' as c> q <a, a'> |
<bes bes'> <es g des'> q <es, es'> |
<fes fes'>4 <es es'>8 q |
<fes fes'>4 <es es'>8 r |
\voiceTwo as,^\lh r as'^\lh r |
\oneVoice as' r as' r |
\clef "violin"
\displaceHeads #'(0 0 1 -1) <d, f as b> \displaceHeads #'(0 0 1 -1) q \displaceHeads #'(0 0 1 -1)q \displaceHeads #'(0 0 1 -1) q |
<es as c> q q q |
<fes as ces> q <es as c> q |
q <es g des'> <as c> r |
\clef "bass"
<d,, f as b> q q q |
<es as c> q q q |
<fes as ces> q <es as c> q |
}
\alternative {
{ q <es g des'> <as c> <es, es'> | }
{ <es' as c> <es g des'> <as c> <a, a'> | }
}
% Part B
\repeat volta 2 {
<bes bes'> <es g des'> <es, es'> <es' g des'> |
<bes bes'> <es g des'> <es, es'> <g g'> |
<as as'> <es' as c> <es, es'> <es' as c> |
<as, as'> <es' as c> <as, as'> <a a'> |
<bes bes'> <es g des'> <es, es'> <es' g des'> |
<bes bes'> <es g des'> <bes bes'> <b b'> |
<c c'> <es as c> <es, es'> <es' as c> |
<as, as'> <es' as c> <as, as'> <a a'> |
<bes bes'> <es g des'> <es, es'> <es' g des'> |
<bes bes'> <es g des'> <es, es'> <g g'> |
<as as'> <es' as c> <es, es'> <es' as c> |
<as, as'> q \stemDown <g g'> <ges ges'> \stemNeutral |
<f f'> q <a a'> q |
<bes bes'> <f' bes des> q q |
<bes, f' bes> q <es, es'> <g g'> |
}
\alternative {
{ <as as'> <es' as c> q <a, a'> | }
{ <as as'> <as' c es> q <es, es'> | }
}
% Part A'
<as as'> <es' as c> q <a, a'> |
<bes bes'> <es g des'> q <es, es'> |
<as as'> <es' as c> q <a, a'> |
<bes bes'> <es g des'> q <es, es'> |
<fes fes'>4 <es es'>8 q |
<fes fes'>4 <es es'>8 r |
\voiceTwo as,^\lh r as'^\lh r |
\oneVoice as' r as' r |
\clef "violin"
\displaceHeads #'(0 0 1 -1) <d, f as b> \displaceHeads #'(0 0 1 -1) q \displaceHeads #'(0 0 1 -1)q \displaceHeads #'(0 0 1 -1) q |
<es as c> q q q |
<fes as ces> q <es as c> q |
q <es g des'> \once \stemUp <as c> r |
\clef "bass"
<d,, f as b> q q q |
<es as c> q q q |
<fes as ces> q <es as c> q |
q <es g des'> <as c> r |
% Part C
\key des \major
\repeat volta 2 {
<es, es'> <as' c ges'> <ges, ges'> <as' c ges'> |
<f, f'> <as' c ges'> <es, es'> <c c'> |
<des des'> <as'' des f> <as, as'> <as' des f> |
<f, f'> <as' des f> <des,, des'> <d d'> |
<es es'> <as' c ges'> <ges, ges'> <as' c ges'> |
<f, f'> <as' c ges'> <es, es'> <c c'> |
<des des'> <as'' des f> <as, as'> <as' des f> |
<f, f'> <as' des f> <des,, des'> <c c'> |
<bes bes'> <bes'' d as'> <d,, d'> <bes'' d as'> |
<f, f'> <bes' d as'> <bes, bes'> <bes' d as'> |
<es,, es'> <bes'' es ges> <ges, ges'> <bes' es ges> |
<es,, es'> <bes'' es ges> <ges, ges'> <bes' es ges> |
g16 bes8 des16 fes des bes g! |
<as, as'>8 <as' des f!> bes, <as' bes d> |
<es bes' des!> <es bes' des> <as c> q |
}
\alternative {
{ <des, des'> <as' des f> q <d,, d'> | }
{ <des' des'> <as as'> \once \stemDown <des, des'> <c' c'> | }
}
% Part D
\key as \major
\repeat volta 2 {
\stemDown
<des des'> <as' des f> q <c, c'> |
<des des'> <as' des f> <bes, bes'> <b b'> |
<c c'> <as' c es> q <es, es'> |
<as as'> <es' as c> <es, es'> <a a'> |
<bes bes'> <es g des'> <es, es'> <a a'> |
<bes bes'> <es g des'> <es, es'> <g g'> |
<as as'> <es' as c> <es, es'> <es' as c> |
<as, as'> <es' as c> <bes bes'> <c c'> |
<des des'> <as' des f> q <c, c'> |
<des des'> <as' des f> <bes, bes'> <b b'> |
<c c'> <as' c es> q <es, es'> |
<as as'> <es' as c> <es, es'> <es' as c> |
\stemNeutral
<des, des'> q <bes bes'> <d d'> |
<es es'> <es' as c> <es, es'> <e e'> |
<f f'> q <g g'> q |
}
\alternative {
{ <as as'> <es' as c> <bes bes'> <c c'> | }
{ \stemDown <as as'> <es es'> \stemNeutral <as, as'> }
}
}
}
>>
}
Licensing
[edit]Public domainPublic domainfalsefalse |
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. | |
This file has been identified as being free of known restrictions under copyright law, including all related and neighboring rights. |
https://creativecommons.org/publicdomain/mark/1.0/PDMCreative Commons Public Domain Mark 1.0falsefalse
File history
Click on a date/time to view the file as it appeared at that time.
Date/Time | Thumbnail | Dimensions | User | Comment | |
---|---|---|---|---|---|
current | 22:05, 23 March 2018 | 1,239 × 1,752, 3 pages (107 KB) | Galaktos (talk | contribs) | User created page with UploadWizard |
You cannot overwrite this file.
File usage on Commons
The following page uses this file:
File usage on other wikis
The following other wikis use this file:
- Usage on www.wikidata.org
Metadata
This file contains additional information such as Exif metadata which may have been added by the digital camera, scanner, or software program used to create or digitize it. If the file has been modified from its original state, some details such as the timestamp may not fully reflect those of the original file. The timestamp is only as accurate as the clock in the camera, and it may be completely wrong.
Short title |
|
---|---|
Author | Scott Joplin |
File change date and time | 00:02, 24 March 2018 |
Date and time of digitizing | 00:02, 24 March 2018 |
Software used | LilyPond 2.18.2 |
Conversion program | GPL Ghostscript 9.22 |
Encrypted | no |
Page size | 595.28 x 841.89 pts (A4) |
Version of PDF format | 1.4 |