lilypond-devel
[Top][All Lists]

## Re: Improved Schenker diagram

 From: Urs Liska Subject: Re: Improved Schenker diagram Date: Mon, 16 Sep 2019 17:49:56 +0000

Hi Werner,

thank you for that!

I can't comment on it because I don't know much about Schenker graphs. But I
could right away use it ;-)
https://github.com/frescobaldi/frescobaldi/pull/1173#issuecomment-531884243
(actually this was something I had been hoping for).

Best
Urs

16. September 2019 14:55, "Werner LEMBERG" <address@hidden> schrieb:

> I've invested some time to revise the Schenker diagram, which
> deteriorated over time.
>
> Here is the original version
>
> https://www.linuxjournal.com/article/8364
>
> Here is what we currently have (not the bad spacing and bad vertical
> alignment).
>
> http://lilypond.org/doc/v2.19/Documentation/ly-examples/bach-schenker.png
>
> And attached you can find my new version.
>
> Please comment so that I can add this to the git repository.
>
> Werner
>
> % -*-coding: utf-8 -*-
>
> \version "2.19.21"
>
> composer = "J.S. Bach"
> title = "Wenn wir in hÃ¶chsten NÃ¶ten sein (BWV 641)"
> subtitle = "Analysis from Gene Biringer's Schenker Text, Ex. 5-27"
> enteredby = "Kris Shaffer, Werner Lemberg"
> }
>
> setup = { \oneVoice
> \override NoteColumn.ignore-collision = ##t }
>
> % Some remarks.
> %
> % - Number i' in the comments below gives the i'th column in the graph.
> % Rhythmically, every column is (arbitrarily) represented as an eighth.
> % In total, the graph has 15 columns.
> %
> % - Using \stemUp' and \stemDown' influences the positioning of slurs even
> % if \omit Stem' disables printing of stems.
> %
> % - Since each layer of the Schenker graph uses \\' to create a new voice
> % it is not necessary to undo \omit' or \hide' commands. The same holds
> % for overridden properties.
> %
> % The price' for using \\' is to call the above-defined macro \setup'
> % at the beginning of each voice to undo horizontal voice shifts and to
> % make LilyPond ignore collisions.
> %
> % - Trailing (musical) skips in voices are omitted.
>
> rightHand = {
> \clef treble
> \key g \major
>
> <<
> {
> \setup
> % This produces half notes as note heads of eighths.
>
> % 1
> s2
> % 5
> b'8\tweak positions #'(8 . 8) ^[
> ^\markup { \override #'(baseline-skip . 0.8)
> \column { \with-color #red \small { ^ 3 } } }
> s4.
> % 9
> s4 a'8
> ^\markup { \override #'(baseline-skip . 0.8)
> \column { \with-color #red \small { ^ 2 } } }
> s8
> % 13
> s4 g'8]
> ^\markup { \override #'(baseline-skip . 0.8)
> \column { \with-color #red \small { ^ 1 } } }
> }
> \\
> {
> \setup
> \override Slur.color = #(x11-color "purple")
> \stemUp
> \omit Stem
> \slurDashed
>
> % 1
> s2
> % 5
> b'2\tweak height-limit #6 _(
> % 9
> b'4)
> a'4\tweak height-limit #3.25 _(
> % 13
> s8
> a'4)
> }
> \\
> {
> \setup
>
> % 1
> \stemUp
> g'8\tweak positions #'(4.5 . -3.25) -[ s4.
> % 5
> \stemDown
> b'8]
> \stemUp
> a'8\tweak positions #'(3 . -3) -[ s
> \stemDown
> c''8]
> }
> \\
> {
> \setup
> \override Slur.color = #(x11-color "violet")
>
> % 1
> \stemDown
> \omit Stem
> \omit Flag
> s8 fis'^(_\markup { \with-color #blue \tiny N } g')
> a'8^(^\markup { \with-color #blue \tiny P }
> % 5
> \hideNotes
> b'4)
> \unHideNotes
> \once \override TextScript.outside-staff-priority = ##f
> b'8^(^\markup { \with-color #blue \tiny P }
> \undo \omit Stem
> \undo \omit Flag
> \stemUp
> \override Stem.length = #10
> c''8)^(
> % 9
> \override Stem.length = #14
> b'4) s8
> \stemDown
> \omit Stem
> \omit Flag
> c''8^(
> % 13
> b'8_\markup { \with-color #blue \tiny P } a')
> }
> \\
> {
> \setup
> \override Slur.color = #(x11-color "violet")
>
> % 1
> \stemUp
> \omit Stem
> \omit Flag
> g'8_( fis' g'4)
> % 5
> s2
> % 9
> s2
> % 13
> b'8_( a')
> }
> \\
> {
> \setup
> \omit Stem
>
> % 1
> s2
> % 5
> s8 d'4
> \change Staff = "LH"
> b4
> }
> \\
> {
> \setup
> \omit Stem
>
> % 1
> s2
> % 5
> s2
> % 9
> s4
> d'4
> \change Staff = "LH"
> % 13
> b4
> }
>>>
>
> \bar "|."
> }
>
> leftHand = {
> \clef bass
> \key g \major
>
> <<
> {
> \setup
> % This produces half notes as note heads of eighths.
>
> % 1
> g8\tweak positions #'(-8 . -8) _[
> _\markup { \with-color #(x11-color 'LawnGreen) \bold I }
> s4.
> % 5
> s2
> % 9
> s2
> % 13
> d8_\markup { \with-color #(x11-color 'LawnGreen) \bold V }
> s8
> g,8]_\markup { \with-color #(x11-color 'LawnGreen) \bold I }
> }
> \\
> {
> \setup
> \override Slur.color = #(x11-color "violet")
> \stemUp
> \hide Stem
> \hide Flag
>
> % 1
> s8
> \once \override TextScript.outside-staff-priority = ##f
> \once \override TextScript.padding = #1
> a8_(^\markup { \with-color #blue \tiny P } b)
> \stemDown
> fis8^(^\markup { \with-color #blue \tiny P }
> % 5
> e8)
> c8\tweak height-limit #1.5 ^(
> d8)^\markup { \with-color #blue \tiny N }
> \stemUp
> fis,8_(
> % 9
> \undo \hide Stem
> \undo \hide Flag
> \override Stem.length = #10
> \stemDown
> g,4)
> c8_(
> \hide Stem
> \hide Flag
> a,8)
> % 13
> d8^( d,)
> }
> \\
> {
> \setup
> \override Slur.color = #(x11-color "violet")
>
> % 1
> \hide Stem
> \hide Flag
> g4\tweak height-limit #4 ^( b8) s8
> % 5
> s8
> \undo \hide Stem
> \override Beam.positions = #'(-4 . 1)
> \stemDown
> c8[ s
> \stemUp
> fis,8]
> % 9
> \override Beam.positions = #'(1 . -4)
> g,8[
> \stemDown
> b,8]
> \hide Stem
> c8^( s
> % 13
> d4)
> }
> \\
> {
> \setup
> \override Slur.color = #(x11-color "violet")
> \hide Stem
>
> % 1
> g2\tweak height-limit #3 _(
> % 5
> e4)
> }
> \\
> {
> \setup
> \override Slur.color = #(x11-color "purple")
> \hide Stem
> \slurDashed
>
> % 1
> g2\tweak height-limit #8 _(
> % 5
> s2
> % 9
> g,4)
> }
>>>
>
> \bar "|."
> }
>
> \score {
> \new PianoStaff
> <<
> \new Staff = "RH" \rightHand
> \new Staff = "LH" \leftHand
>>>
>
> \layout {
> \context {
> \Score
> timing = ##f
> \override StaffGrouper.staff-staff-spacing.basic-distance = #13 }
>
> \context {
> \Staff
> \remove "Time_signature_engraver" }
>
> \context {
> \PianoStaff
> followVoice = ##t }
>
> \context {
> \Voice
> % We use VoiceFollower' lines to indicate related columns
> % instead of related voices; we thus avoid vertical offsets.
> \override VoiceFollower.bound-details.right.padding = #0 }
> }
> }
>
> \paper {
> indent = 0.0
> ragged-right = ##f
> tagline = ##f
> paper-height = 95\mm
> }
>
> _______________________________________________
> lilypond-devel mailing list