On Fri, 08 Nov 2013 01:30:02 -0800, Hans Aberg <haber...@telia.com> wrote:

On 8 Nov 2013, at 01:47, Keith OHara <k-ohara5...@oco.net> wrote:

On Thu, 07 Nov 2013 13:26:04 -0800, Hans Aberg <haber...@telia.com> wrote:

On 7 Nov 2013, at 21:47, Keith OHara <k-ohara5...@oco.net> wrote:

Hans, I am late, but can I persuade you to try this with sharp and flat
representing 4 tone-steps rather than 5 ?

It is not possible to do that with current LilyPond;
Graham Breed retuned the fifth in his regular.ly, so ....

Well, neither LilyPond nor Graham will object if we adjust the naming convention
(as attached and at http://k-ohara.oco.net/Lilypond/).

With 53 steps, there is an interval very close to how a violinist would play D 
F# in traditional notation.  If you choose the sharp to represent 4/53 of an 
octave, then 53-step notation also shows this interval as D F#.

Then the glyph to show the fifth B F#' would get an arrow indicating that it is 
larger by a comma; the M-m=5 alteration would use the symbol sharp.uparrow.  I 
find this convention uses fewer arrows to represent real music.

In JI C major, the D minor triad is out of tune. If trying to pivot sequence of 
triads C F Dm G C the pitch will slip with a syntonic comma. So the pitch must 
be adapted somehow.


We are led to a different frequency for the D depending on whether we go 
through F (two fifths down and major third up) or through G (two fifths up).  
Using 53 steps per octave lets us see that, with a nice scaffold of 
equally-spaced named pitches that might ease understanding.
\version "2.16.1"
  % The pitches for the scale are specified in terms of equal-tempered
  %  whole tones.
  % Transposition, key signatures, transposition, and
  %  MIDI output will use these pitches.

scalepitches = #(list->vector
                  (map (lambda (steps) (* 6/53 steps))
                       '(0 9 18 22 31 40 49)))
#(ly:set-default-scale (ly:make-scale scalepitches))

% Arrow denotes one step in 53-EDO
% Nearly a syntonic comma 80/81 (Pythagorean -> just-major third)
ARROW = #(* 1 6/53)
% Flat denotes four steps in 53-EDO
% Nearly a major limma 128/135 (Pythagorean -> just-minor third)
FLAT = #(* -4 6/53)

SHARP          =#(* FLAT -1)
"SEMI-SHARP"   =#(* SHARP 1/2)
"SEMI-FLAT"    =#(* FLAT 1/2)
"SESQUI-SHARP" =#(* SHARP 3/2)
"SESQUI-FLAT"  =#(* FLAT 3/2)
"DOUBLE-SHARP" =#(* SHARP 2)
"DOUBLE-FLAT"  =#(* FLAT 2)

"SHARP-RAISE"   =#(+ SHARP ARROW)
"SHARP-LOWER"   =#(- SHARP ARROW)
"RAISE" =#(+ NATURAL ARROW)
"LOWER" =#(- NATURAL ARROW)
"FLAT-RAISE"    =#(+ FLAT ARROW)
"FLAT-LOWER"    =#(- FLAT ARROW)
"DBL-FL-RAISE" =#(+ DOUBLE-FLAT ARROW)
"DBL-SH-LOWER" =#(- DOUBLE-SHARP ARROW)

arrowedPitchNames = #`(
    (a     . ,(ly:make-pitch -1 5 NATURAL))
    (aeh   . ,(ly:make-pitch -1 5 SEMI-FLAT))
    (aes   . ,(ly:make-pitch -1 5 FLAT))
    (aeseh . ,(ly:make-pitch -1 5 SESQUI-FLAT))
    (aeses . ,(ly:make-pitch -1 5 DOUBLE-FLAT))
    (aesn  . ,(ly:make-pitch -1 5 FLAT-LOWER))
    (aeso  . ,(ly:make-pitch -1 5 FLAT-RAISE))
    (aih   . ,(ly:make-pitch -1 5 SEMI-SHARP))
    (ais   . ,(ly:make-pitch -1 5 SHARP))
    (aisih . ,(ly:make-pitch -1 5 SESQUI-SHARP))
    (aisis . ,(ly:make-pitch -1 5 DOUBLE-SHARP))
    (aisn  . ,(ly:make-pitch -1 5 SHARP-LOWER))
    (aiso  . ,(ly:make-pitch -1 5 SHARP-RAISE))
    (an    . ,(ly:make-pitch -1 5 LOWER))
    (ao    . ,(ly:make-pitch -1 5 RAISE))
    (as    . ,(ly:make-pitch -1 5 FLAT))
    (ases  . ,(ly:make-pitch -1 5 DOUBLE-FLAT))
    (asn   . ,(ly:make-pitch -1 5 FLAT-LOWER))
    (aso   . ,(ly:make-pitch -1 5 FLAT-RAISE))
    (b     . ,(ly:make-pitch -1 6 NATURAL))
    (beh   . ,(ly:make-pitch -1 6 SEMI-FLAT))
    (bes   . ,(ly:make-pitch -1 6 FLAT))
    (beseh . ,(ly:make-pitch -1 6 SESQUI-FLAT))
    (beses . ,(ly:make-pitch -1 6 DOUBLE-FLAT))
    (besn  . ,(ly:make-pitch -1 6 FLAT-LOWER))
    (beso  . ,(ly:make-pitch -1 6 FLAT-RAISE))
    (bih   . ,(ly:make-pitch -1 6 SEMI-SHARP))
    (bis   . ,(ly:make-pitch -1 6 SHARP))
    (bisih . ,(ly:make-pitch -1 6 SESQUI-SHARP))
    (bisis . ,(ly:make-pitch -1 6 DOUBLE-SHARP))
    (bisn  . ,(ly:make-pitch -1 6 SHARP-LOWER))
    (biso  . ,(ly:make-pitch -1 6 SHARP-RAISE))
    (bn    . ,(ly:make-pitch -1 6 LOWER))
    (bo    . ,(ly:make-pitch -1 6 RAISE))
    (c     . ,(ly:make-pitch -1 0 NATURAL))
    (ceh   . ,(ly:make-pitch -1 0 SEMI-FLAT))
    (ces   . ,(ly:make-pitch -1 0 FLAT))
    (ceseh . ,(ly:make-pitch -1 0 SESQUI-FLAT))
    (ceses . ,(ly:make-pitch -1 0 DOUBLE-FLAT))
    (cesso . ,(ly:make-pitch -1 0 DBL-FL-RAISE))
    (cesn  . ,(ly:make-pitch -1 0 FLAT-LOWER))
    (ceso  . ,(ly:make-pitch -1 0 FLAT-RAISE))
    (cih   . ,(ly:make-pitch -1 0 SEMI-SHARP))
    (cis   . ,(ly:make-pitch -1 0 SHARP))
    (cisih . ,(ly:make-pitch -1 0 SESQUI-SHARP))
    (cisis . ,(ly:make-pitch -1 0 DOUBLE-SHARP))
    (cissn . ,(ly:make-pitch -1 0 DBL-SH-LOWER))
    (cisn  . ,(ly:make-pitch -1 0 SHARP-LOWER))
    (ciso  . ,(ly:make-pitch -1 0 SHARP-RAISE))
    (cn    . ,(ly:make-pitch -1 0 LOWER))
    (co    . ,(ly:make-pitch -1 0 RAISE))
    (d     . ,(ly:make-pitch -1 1 NATURAL))
    (deh   . ,(ly:make-pitch -1 1 SEMI-FLAT))
    (des   . ,(ly:make-pitch -1 1 FLAT))
    (deseh . ,(ly:make-pitch -1 1 SESQUI-FLAT))
    (deses . ,(ly:make-pitch -1 1 DOUBLE-FLAT))
    (desso . ,(ly:make-pitch -1 1 DBL-FL-RAISE))
    (desn  . ,(ly:make-pitch -1 1 FLAT-LOWER))
    (deso  . ,(ly:make-pitch -1 1 FLAT-RAISE))
    (dih   . ,(ly:make-pitch -1 1 SEMI-SHARP))
    (dis   . ,(ly:make-pitch -1 1 SHARP))
    (disih . ,(ly:make-pitch -1 1 SESQUI-SHARP))
    (disis . ,(ly:make-pitch -1 1 DOUBLE-SHARP))
    (dissn . ,(ly:make-pitch -1 1 DBL-SH-LOWER))
    (disn  . ,(ly:make-pitch -1 1 SHARP-LOWER))
    (diso  . ,(ly:make-pitch -1 1 SHARP-RAISE))
    (dn    . ,(ly:make-pitch -1 1 LOWER))
    (do    . ,(ly:make-pitch -1 1 RAISE))
    (e     . ,(ly:make-pitch -1 2 NATURAL))
    (eeh   . ,(ly:make-pitch -1 2 SEMI-FLAT))
    (ees   . ,(ly:make-pitch -1 2 FLAT))
    (eeseh . ,(ly:make-pitch -1 2 SESQUI-FLAT))
    (eeses . ,(ly:make-pitch -1 2 DOUBLE-FLAT))
    (eesso . ,(ly:make-pitch -1 2 DBL-FL-RAISE))
    (eesn  . ,(ly:make-pitch -1 2 FLAT-LOWER))
    (eeso  . ,(ly:make-pitch -1 2 FLAT-RAISE))
    (eih   . ,(ly:make-pitch -1 2 SEMI-SHARP))
    (eis   . ,(ly:make-pitch -1 2 SHARP))
    (eisih . ,(ly:make-pitch -1 2 SESQUI-SHARP))
    (eisis . ,(ly:make-pitch -1 2 DOUBLE-SHARP))
    (eissn . ,(ly:make-pitch -1 2 DBL-SH-LOWER))
    (eisn  . ,(ly:make-pitch -1 2 SHARP-LOWER))
    (eiso  . ,(ly:make-pitch -1 2 SHARP-RAISE))
    (en    . ,(ly:make-pitch -1 2 LOWER))
    (eo    . ,(ly:make-pitch -1 2 RAISE))
    (es    . ,(ly:make-pitch -1 2 FLAT))
    (eses  . ,(ly:make-pitch -1 2 DOUBLE-FLAT))
    (esn   . ,(ly:make-pitch -1 2 FLAT-LOWER))
    (eso   . ,(ly:make-pitch -1 2 FLAT-RAISE))
    (f     . ,(ly:make-pitch -1 3 NATURAL))
    (feh   . ,(ly:make-pitch -1 3 SEMI-FLAT))
    (fes   . ,(ly:make-pitch -1 3 FLAT))
    (feseh . ,(ly:make-pitch -1 3 SESQUI-FLAT))
    (feses . ,(ly:make-pitch -1 3 DOUBLE-FLAT))
    (fesn  . ,(ly:make-pitch -1 3 FLAT-LOWER))
    (feso  . ,(ly:make-pitch -1 3 FLAT-RAISE))
    (fih   . ,(ly:make-pitch -1 3 SEMI-SHARP))
    (fis   . ,(ly:make-pitch -1 3 SHARP))
    (fisih . ,(ly:make-pitch -1 3 SESQUI-SHARP))
    (fisis . ,(ly:make-pitch -1 3 DOUBLE-SHARP))
    (fissn . ,(ly:make-pitch -1 3 DBL-SH-LOWER))
    (fisn  . ,(ly:make-pitch -1 3 SHARP-LOWER))
    (fiso  . ,(ly:make-pitch -1 3 SHARP-RAISE))
    (fn    . ,(ly:make-pitch -1 3 LOWER))
    (fo    . ,(ly:make-pitch -1 3 RAISE))
    (g     . ,(ly:make-pitch -1 4 NATURAL))
    (geh   . ,(ly:make-pitch -1 4 SEMI-FLAT))
    (ges   . ,(ly:make-pitch -1 4 FLAT))
    (geseh . ,(ly:make-pitch -1 4 SESQUI-FLAT))
    (geses . ,(ly:make-pitch -1 4 DOUBLE-FLAT))
    (gesso . ,(ly:make-pitch -1 4 DBL-FL-RAISE))
    (gesn  . ,(ly:make-pitch -1 4 FLAT-LOWER))
    (geso  . ,(ly:make-pitch -1 4 FLAT-RAISE))
    (gih   . ,(ly:make-pitch -1 4 SEMI-SHARP))
    (gis   . ,(ly:make-pitch -1 4 SHARP))
    (gisih . ,(ly:make-pitch -1 4 SESQUI-SHARP))
    (gisis . ,(ly:make-pitch -1 4 DOUBLE-SHARP))
    (gisn  . ,(ly:make-pitch -1 4 SHARP-LOWER))
    (giso  . ,(ly:make-pitch -1 4 SHARP-RAISE))
    (gn    . ,(ly:make-pitch -1 4 LOWER))
    (go    . ,(ly:make-pitch -1 4 RAISE))
  )
pitchnames = \arrowedPitchNames
#(ly:parser-set-note-names parser pitchnames)

  % The symbols for each alteration
arrowGlyphs = #`(
    (  0           . "accidentals.natural")
    (,FLAT         . "accidentals.flat")
    (,FLAT-LOWER   . "accidentals.flat.arrowdown")
    (,FLAT-RAISE   . "accidentals.flat.arrowup")
    (,SHARP        . "accidentals.sharp")
    (,SHARP-LOWER  . "accidentals.sharp.arrowdown")
    (,SHARP-RAISE  . "accidentals.sharp.arrowup")
    (,DOUBLE-FLAT  . "accidentals.flatflat")
    (,DOUBLE-SHARP . "accidentals.doublesharp")
    (,LOWER        . "accidentals.natural.arrowdown")
    (,RAISE        . "accidentals.natural.arrowup")
    (,SEMI-FLAT    . "accidentals.mirroredflat")
    (,SEMI-SHARP   . "accidentals.sharp.slashslash.stem")
    (,SESQUI-FLAT  . "accidentals.mirroredflat.flat")
    (,SESQUI-SHARP . "accidentals.sharp.slashslash.stemstemstem")
    (,DBL-FL-RAISE . "accidentals.flatflat.slash")
    (,DBL-SH-LOWER . "accidentals.sharp.slashslashslash.stemstem")
  )

major = #`(
    (0  . ,NATURAL)
    (1  . ,NATURAL)
    (2  . ,LOWER)
    (3  . ,NATURAL)
    (4  . ,NATURAL)
    (5  . ,LOWER)
    (6  . ,LOWER)
)
minor = #`(
    (0 . ,NATURAL)
    (1 . ,NATURAL)
    (2 . ,FLAT)
    (3 . ,NATURAL)
    (4 . ,NATURAL)
    (5 . ,FLAT)
    (6 . ,FLAT)
)
sixth = #`(
    (0 . ,NATURAL)
    (1 . ,NATURAL)
    (2 . ,FLAT)
    (3 . ,NATURAL)
    (4 . ,NATURAL)
    (5 . ,LOWER)
    (6 . ,LOWER)
)

  % keyAlterationOrder needs to know our pitches to typeset key signatures.
  % Each object that draws accidentals needs to know our glyphs.
\layout {
  \context {
    \Score
  keyAlterationOrder = #`(
    (6 . ,FLAT) (6 . ,FLAT-LOWER) (6 . ,FLAT-RAISE) 
    (2 . ,FLAT) (2 . ,FLAT-LOWER) (2 . ,FLAT-RAISE) 
    (5 . ,FLAT) (5 . ,FLAT-LOWER) (5 . ,FLAT-RAISE) 
    (1 . ,FLAT) (1 . ,FLAT-LOWER) (1 . ,FLAT-RAISE)
    (4 . ,FLAT) (4 . ,FLAT-LOWER) (4 . ,FLAT-RAISE) 
    (0 . ,FLAT) (0 . ,FLAT-LOWER) (0 . ,FLAT-RAISE) 
    (3 . ,FLAT) (3 . ,FLAT-LOWER) (3 . ,FLAT-RAISE)
    (3 . ,SHARP) (3 . ,SHARP-LOWER) (3 . ,SHARP-RAISE) 
    (0 . ,SHARP) (0 . ,SHARP-LOWER) (0 . ,SHARP-RAISE) 
    (4 . ,SHARP) (4 . ,SHARP-LOWER) (4 . ,SHARP-RAISE)
    (1 . ,SHARP) (1 . ,SHARP-LOWER) (1 . ,SHARP-RAISE)
    (5 . ,SHARP) (5 . ,SHARP-LOWER) (5 . ,SHARP-RAISE)
    (2 . ,SHARP) (2 . ,SHARP-LOWER) (2 . ,SHARP-RAISE)
    (6 . ,SHARP) (6 . ,SHARP-LOWER) (6 . ,SHARP-RAISE)
    (6 . ,LOWER) (2 . ,LOWER) (5 . ,LOWER) (1 . ,LOWER) (4 . ,LOWER) (0 . ,LOWER) (3 . ,LOWER)
    (3 . ,RAISE) (0 . ,RAISE) (4 . ,RAISE) (1 . ,RAISE) (5 . ,RAISE) (2 . ,RAISE) (6 . ,RAISE)
    )
    \override KeySignature #'glyph-name-alist = \arrowGlyphs
    \override KeySignature #'padding-pairs = #'(
    (("accidentals.natural.arrowdown" . "accidentals.natural.arrowdown") . 0.5)
    (("accidentals.natural.arrowdown" . "accidentals.sharp.arrowdown") . 0.2)
    (("accidentals.natural.arrowdown" . "accidentals.flat.arrowdown") . 0.7)
    (("accidentals.natural.arrowup" . "accidentals.natural.arrowup") . 0.5)
    (("accidentals.natural.arrowup" . "accidentals.sharp.arrowup") . 0.2)
    (("accidentals.natural.arrowup" . "accidentals.flat.arrowup") . 0.7)
    (("accidentals.flat.arrowup" . "accidentals.flat.arrowup") . 0.3)
    (("accidentals.sharp" . "accidentals.natural.arrowdown") . 0.5))
    \override Accidental #'glyph-name-alist = \arrowGlyphs
    \override AccidentalCautionary #'glyph-name-alist = \arrowGlyphs
    \override TrillPitchAccidental #'glyph-name-alist = \arrowGlyphs
    \override AmbitusAccidental #'glyph-name-alist = \arrowGlyphs
  }
}
\midi {
  \context {
    \Staff
    \remove "Staff_performer"
  }
  \context {
    \Voice
    %midiInstrument = "pad 4 (choir)"
    %midiInstrument = "string ensemble 1"
    %midiInstrument = "lead 1 (square)"
    %midiInstrument = "ocarina"
    midiInstrument = "drawbar organ"
    \consists "Staff_performer"
  }
  \context {
    \Score
    tempoWholesPerMinute = #(ly:make-moment 30 4)
  }
}

\score {
  \new Staff {
    \time 3/4
    \accidentalStyle #'Score "modern"
    << \relative c'' {
    c4 co16 cih cisn cis ciso cisih cissn cisis 
    d4 do16 dih disn dis diso disih dissn disis 
    e4 \times 2/3 {eo8 eih eisn} eis8(\noBeam f)
    fo16 fih fisn fis fiso fisih fissn fisis g4
  }\\ \relative c' {
    r4 deses16 desso deseh desn des deso deh dn 
    d4 eeses16 eesso eeseh eesn ees eeso eeh en
    e8(\noBeam fes) \times 2/3 {feso8 feh fn} f4
    geses16 gesso geseh gesn ges geso geh gn
    g4
  }>>
  }
  \layout{}
  \midi{}
}

\score { \transpose b c' <<
  \new Staff \with {
    instrumentName = \markup\center-column {"Sopr." "Alto"}
  } \relative c'' {
    \key b\minor
    s1*0^\markup\huge"from St. Matthew Passion, J. S. Bach"
    % Was mein Gott will, das geschn allzeit
    << {
      \accidentalStyle #'Score "modern"
      \partial 4
      do4 | cis b e do8 ciso | ciso2 b
    } \\ {
      fiso4 | e8 fiso gis ais b4 b | b ais fiso2
    } >>
  }
  \new Staff \with {
    instrumentName = \markup\center-column {"Tenor" "Bass"}
  } \relative c' {
    \key b\minor
    << {
      \clef "treble_8"
      ao8 b | cis dis e4 b8 cis do4 | giso, ciso dis2
    } \\ {
      fiso,8 gis | a4 gis go fiso | eis fiso b,2
    } >>
  }
>>
\layout{}
\midi{}}

\score {\transpose c' a <<
  \new Staff << {
    \key c\major \clef "treble_8"
    fn'4 g' en'2
  } \\ {
    \clef "treble_8"
    g4 en' c'2
  } >>
  \new Staff << {
    \key c\major \clef bass
    bn4 bn4 g2 
  } \\ {
    \clef bass
    d4 g c2 
  } >>
>>
\layout{}
\midi{}}

\score { \transpose c c' {
  \key c\major  \time 2/4
  << { 
    c'8 d' en' f' g' an' bn' c''
  } \\ {
    c2 c2
  } >>
  \bar "||" <>^"comma pump"
  << {
    g4 an an beh cn'2 c' \bar "||"
    <>^"mistuning to avoid the pump"
    g4 an an bn c'2 c'
  } \\ {
    c4 c dn dn eeh2 en
    c4 c d d en2 en
  } \\ {
    en4 en f gn gn2 g
    en4 en f g g2 g
  } >>
}
\layout {}
\midi {}
}
_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to