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