Re: Improved Schenker diagram
>> I've invested some time to revise the Schenker diagram, which >> deteriorated over time. > > Related: For the last couple of years, I’ve been [slowly] putting > together a SchenkerLily framework, which makes so much of this a lot > easier to code. I’m hoping to release it to OpenLilyLib soon. Sounds interesting – this could be a topic for our conference in January. Werner ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: Improved Schenker diagram
On Mon, Sep 16, 2019 at 9:39 AM wrote: > > Hi Werner, > > > I've invested some time to revise the Schenker diagram, which > > deteriorated over time. > > Thanks for doing that! > > Related: For the last couple of years, I’ve been [slowly] putting together a > SchenkerLily framework, which makes so much of this a lot easier to code. I’m > hoping to release it to OpenLilyLib soon. > > Best, > Kieren. A few months ago, I also worked on setting up some notation to describe Schenker diagrams, and did some coding as well. I don't have it with me -- I'm at work right now -- but later I'll post what I came up with. --- Christopher Heckman ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: Improved Schenker diagram
> 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). :-) Werner ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: Improved Schenker diagram
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" 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" > > \header{ > 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. > \override NoteHead.duration-log = #1 > > % 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 > \hide NoteHead > \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 > \once \hide NoteHead > 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 > \hide NoteHead > > % 1 > s2 > % 5 > s8 d'4 > \change Staff = "LH" > b4 > } > \\ > { > \setup > \omit Stem > \hide NoteHead > > % 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. > \override NoteHead.duration-log = #1 > > % 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 > \once \hide NoteHead > d8^( d,) > } > \\ > { >
Re: Improved Schenker diagram
Hi Werner, > I've invested some time to revise the Schenker diagram, which > deteriorated over time. Thanks for doing that! Related: For the last couple of years, I’ve been [slowly] putting together a SchenkerLily framework, which makes so much of this a lot easier to code. I’m hoping to release it to OpenLilyLib soon. Best, Kieren. Kieren MacMillan, composer (he/him/his) ‣ website: www.kierenmacmillan.info ‣ email: i...@kierenmacmillan.info ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Improved Schenker diagram
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" \header{ 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. \override NoteHead.duration-log = #1 % 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 \hide NoteHead \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 \once \hide NoteHead 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 \hide NoteHead % 1 s2 % 5 s8 d'4 \change Staff = "LH" b4 } \\ { \setup \omit Stem \hide NoteHead % 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. \override NoteHead.duration-log = #1 % 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