+
+2002-08-29 Juergen Reuter <reuter@ipd.uka.de>
+
+ * input/test/ancient-font.ly, mf/parmesan-heads.mf,
+ scm/output-lib.scm, lily/note-head.cc: bugfix: make neume note
+ heads accessible
+
+
2002-08-29 Mats Bengtsson <mats.bengtsson@s3.kth.se>
* scm/music-functions.scm (unfold-repeats): Call new
@example
CONF=gcc-3.1 ./lexer-gcc-3.1.sh
- CPPFLAGS=$(pwd)/lily/out-gcc-3.1 CC=gcc-3.1 CXX=g++-3.1 \
+ CPPFLAGS=-I$(pwd)/lily/out-gcc-3.1 CC=gcc-3.1 CXX=g++-3.1 \
./configure --enable-config=gcc-3.1
CONF=gcc-3.1 ./lexer-gcc-3.1.sh
make conf=gcc-3.1
@end example
+This assumes that the GCC 3.1 binaries are called gcc-3.1 and g++-3.1.
Note that this is @strong{not} fixed in Debian/unstable for flex <=
2.5.4a-26.
\version "1.5.68"
\header {
title = "ancient font test"
- date = "2000"
+ date = "2002"
}
-
-
\include "paper26.ly"
-global = \notes {
+upperStaff = \context GregorianStaff = upperStaff <
+ \context GregorianVoice <
\property Score.timing = ##f
-% \property Score.forceAccidental = ##t
- \property Staff.TimeSignature \set #'font-family = #'ancient
-% \property Staff.TimeSignature \override #'style = #'mensural
-}
+% \property Score.forceAccidental = ##t %%%%%%%% FIXME: what happened to this property?
-upperVoice = \context Staff = upperVoice <
- \global
-
% this is broken until further notice -- see refman
% \property Staff.StaffSymbol \override #'line-count = #4
\context Staff \outputproperty #(make-type-checker 'staff-symbol-interface)
\property Staff.KeySignature \override #'style = #'vaticana
\property Staff.Accidental \set #'font-family = #'ancient
\property Staff.Accidental \override #'style = #'vaticana
- \property Staff.Custos \set #'font-family = #'ancient
- \property Staff.Custos \override #'style = #'vaticana
- \property Staff.Custos \override #'neutral-position = #4
- \property Staff.Custos \override #'neutral-direction = #-1
- \property Staff.Custos \override #'adjust-if-on-staffline = ##t
\property Voice.NoteHead \set #'font-family = #'ancient
\property Voice.NoteHead \override #'style = #'vaticana_punctum
- \property Voice.Porrectus \override #'style = #'vaticana
- \property Voice.Porrectus \override #'solid = ##t
- \property Voice.Porrectus \override #'add-stem = ##t
- \property Voice.Porrectus \override #'direction = #-1
- \property Voice.Porrectus \override #'thickness = #0.5
\key es \major
\clef "vaticana_fa2"
c!1 des! e! f! ges!
-% \property Staff.clefGlyph = #"clefs-vaticana_do"
-% \property Staff.clefPosition = #1
-% \property Staff.clefOctavation = #0
- \clef "vaticana_do2"
-
\property Voice.NoteHead \override #'style = #'vaticana_inclinatum
- a! b!
+ a! b! ces'
\property Staff.BarLine \override #'bar-size = #3.0 \bar "|"
+% \break % 1 (8*1)
+
\property Voice.NoteHead \override #'style = #'vaticana_virga
- ces' b! des'! \~ ges! \~ fes!
+ b! des'! ges! fes!
\breathe
\clef "vaticana_fa1"
\property Voice.NoteHead \override #'style = #'vaticana_quilisma
\property Voice.NoteHead \override #'style = #'vaticana_rvirga
c d
\property Staff.BarLine \override #'bar-size = #3.0 \bar "|"
+% \break %2 (8*1)
+
\property Voice.NoteHead \override #'style = #'vaticana_rvirga
es f
\property Voice.NoteHead \override #'style = #'vaticana_lpes
g f
\property Voice.NoteHead \override #'style = #'vaticana_plica
\property Staff.BarLine \override #'bar-size = #2.0 \bar "|"
+% \break % 3 (8*1)
+
es d
\property Voice.NoteHead \override #'style = #'vaticana_epiphonus
c d
\clef "medicaea_fa2"
ces! des!
\property Staff.BarLine \override #'bar-size = #3.0 \bar "|"
+% \break % 4 (8*1)
+
e! f! ges!
\clef "medicaea_do2"
- \property Voice.NoteHead \override #'style = #'medicaea_subbipunctum
+ \property Voice.NoteHead \override #'style = #'medicaea_inclinatum
a! b! ces'!
\property Voice.NoteHead \override #'style = #'medicaea_virga
b! a!
\property Staff.BarLine \override #'bar-size = #3.0 \bar "|"
+% \break % 5 (8*1)
+
ges! fes!
\clef "medicaea_fa1"
\property Voice.NoteHead \override #'style = #'medicaea_rvirga
\clef "hufnagel_fa2"
ces! des! es!
\property Staff.BarLine \override #'bar-size = #3.0 \bar "|"
+% \break % 6 (8*1)
+
fes! ges!
\clef "hufnagel_do2"
\property Voice.NoteHead \override #'style = #'hufnagel_lpes
\property Voice.NoteHead \override #'style = #'hufnagel_virga
bes! as!
\property Staff.BarLine \override #'bar-size = #3.0 \bar "|"
+% \break % 7 (8*1)
+
ges! fes!
\clef "hufnagel_do_fa"
\property Voice.NoteHead \override #'style = #'hufnagel_punctum
es! des! ces! des! es! fes!
\bar "||"
+% \break % 8 (8*1)
+
+ s32*1
+% \break % 12 (32*1)
}
+ >
>
-lowerVoice = \context Staff = lowerNotes <
- \global
+lowerStaff = \context MensuralStaff = lowerStaff <
+ \context MensuralVoice <
% this is broken until further notice -- see refman
% \property Staff.StaffSymbol \override #'line-count = #5
#'line-count = #5
\notes \transpose c' {
- \property Voice.autoBeaming = ##f
\property Staff.Clef \set #'font-family = #'ancient
- \property Staff.KeySignature \set #'font-family = #'ancient
- \property Staff.KeySignature \override #'style = #'mensural
- \property Staff.Accidental \set #'font-family = #'ancient
- \property Staff.Accidental \override #'style = #'mensural
- \property Staff.Custos \set #'font-family = #'ancient
- \property Staff.Custos \override #'style = #'mensural
- \property Staff.Custos \override #'neutral-position = #3
- \property Staff.Custos \override #'neutral-direction = #-1
- \property Staff.Custos \override #'adjust-if-on-staffline = ##t
+ \property Voice.autoBeaming = ##f
\property Voice.NoteHead \set #'font-family = #'ancient
\property Voice.NoteHead \override #'style = #'neo_mensural
\property Voice.Stem \set #'font-family = #'ancient % ancient flags
\property Voice.Rest \set #'font-family = #'music
\property Voice.Rest \override #'style = #'neo_mensural
- \property Voice.Porrectus \override #'style = #'mensural
- \property Voice.Porrectus \override #'solid = ##f
- \property Voice.Porrectus \override #'add-stem = ##t
- \property Voice.Porrectus \override #'thickness = #0.7
-% \property Voice.Porrectus \override #'auto-properties = ##t
-% \property Voice.Porrectus \override #'width = #3.0
\key a \major
- % IMPORTANT NOTE:
- %
- % The porrectus syntax is definitely subject to change. For
- % proper use, it may eventually change into something like this:
- %
- % \startLigature e \~ c \endLigature
- %
- % The reason is that there needs to be some enclosing instance
- % for correct handling of line breaking, alignment with
- % adjacent note heads, and placement of accidentals.
+% FIXME: lily crashes on some (invalid?) ligatures with:
+% ERROR: In procedure gh_scm2int:
+% ERROR: Wrong type argument in position 1: ()
- \clef "neo_mensural_c2"
- cis' e' \~ d' gis' \~ e'
+% FIXME: lily emits "Programming error: Infinity or NaN encountered"
+% on many ligatures such as BB.
+
+ cis'1 d'\breve gis'\breve e'\breve \[ e'\longa fis'\longa \]
\property Staff.forceClef = ##t
\clef "neo_mensural_c2"
+ cis1
+ \bar "|"
+% \break % 2 (16*1)
- fis' \~ b cis''
- b \~ a a \~ fis
+ \[ g\breve dis''\longa \]
+ b\breve \[ a\longa d\longa \]
\clef "petrucci_c2"
- cis \~ fis ces1 % \bar "|"
+% \break % 4 (16*1)
+ fis1 ces1
\clef "petrucci_c2"
r\longa
\property Staff.forceClef = ##t
\clef "mensural_c2"
- r\breve r1 r2
- \clef "mensural_g"
- r4 r8 r16 r16 \bar "|"
+ r\breve
+ \bar "|"
+% \break % 5 (8*1)
+ r2
+ \clef "mensural_g"
+ r4 r8 r16 r16
\property Voice.NoteHead \override #'style = #'mensural
\property Voice.Stem \override #'style = #'mensural
\property Voice.Stem \override #'thickness = #1.0
\property Voice.Rest \set #'font-family = #'ancient
\property Voice.Rest \override #'style = #'mensural
\clef "petrucci_f"
- c8 b, c16 b, c32 b, c64 b, c b,
- d8 e d16 e d32 e d64 e d e
+ c8 b, c16 b, c32 b, c64 b, c64 b,
+ d8 e d16 e d32 e d64 e d64 e
r\longa
\property Staff.forceClef = ##t
\clef "petrucci_f"
- r\breve r1 % \bar "|"
- \clef "mensural_f"
+ r\breve
+ \bar "|"
+% \break % 6 (8*1)
+ r\breve
+ \clef "mensural_f"
% FIXME: must set Voice.Stem style to #'neo_mensural to avoid
% segmentation fault on r8/r16/r32. (Strange: what has
% Voice.Stem style to do with mensural rests?)
\property Voice.Stem \override #'style = #'neo_mensural
r2 r4 r8 r16 r32 r32
\property Voice.Stem \override #'style = #'mensural
-
\property Staff.forceClef = ##t
\clef "mensural_f"
- e2 f g
+ e\breve f g a1
\clef "mensural_g"
+% \break % 7 (8*1)
- bes'! \~ as'! \~ cis''!
- bes'! \~ fis'! as'! \~ ges'!
+ \[ bes'!\longa a'!\longa c''!\longa \]
+ e'1 d' c' d' \bar "|"
+ \bar "|"
+% \break % 9 (16*1)
+
+ bes'!\longa fis'!1 as'!1 ges'!\longa % lig
\property Staff.forceClef = ##t
\clef "mensural_g"
- e' d' c'1 \bar "|"
+ e'2 d' c' \bar "|"
+% \break % 11 (16*1)
\property Staff.forceClef = ##t
\clef "petrucci_g"
- c'2 d' e' f' g'
+ c'2 d' e' f'
\clef "petrucci_g"
- as'! bes'! cis''!
+ g' as'! bes'! cis''!
bes'! as'! gis'! fis'!
\property Staff.forceClef = ##t
\clef "mensural_g"
es'! des'! cis'!1 \bar "||"
+% \break % 12 (8*1)
}
+ >
>
\score {
- \context ChoirStaff <
- \upperVoice
- \lowerVoice
+ \context Score <
+ \upperStaff
+ \lowerStaff
>
\paper {
-% \paperTwentysix
linewidth = 17.25\cm
textheight = 26.0\cm
stafflinethickness = \staffspace / 5.0
indent = 0.0
+ \translator {
+ \ScoreContext
+ \accepts MensuralStaff
+ \accepts GregorianStaff
+% timing = ##f %%%%%%%% FIXME: this has no effect
+ }
+ \translator {
+ \VoiceContext
+ \name MensuralVoice
+ \alias Voice
+ \remove Ligature_bracket_engraver
+ \consists Mensural_ligature_engraver
+ NoteHead \set #'font-family = #'ancient
+ NoteHead \set #'style = #'mensural
+ Stem \set #'font-family = #'ancient
+% Stem \set #'style = #'mensural %%%%%%%% FIXME: this core dumps
+ Stem \set #'thickness = #1.0
+ Rest \set #'font-family = #'music
+ Rest \set #'style = #'mensural
+ autoBeaming = ##f
+ }
+ \translator {
+ \VoiceContext
+ \name GregorianVoice
+ \alias Voice
+ \remove Ligature_bracket_engraver
+% \consists Gregorian_ligature_engraver %%%%%%%% TODO: not yet implemented
+ NoteHead \set #'font-family = #'ancient
+ NoteHead \set #'style = #'vaticana_punctum
+ autoBeaming = ##f
+ }
\translator {
\StaffContext
+ \name MensuralStaff
+ \alias Staff
+ \accepts MensuralVoice
\consists Custos_engraver
-% Custos \override #'style = #'mensural
- \remove Time_signature_engraver
-% StaffSymbol \override #'thickness = #2.0
-% StaffSymbol \override #'line-count = #4
+ TimeSignature \set #'font-family = #'ancient
+ TimeSignature \set #'style = #'mensural
+ KeySignature \set #'font-family = #'ancient
+ KeySignature \set #'style = #'mensural
+ Accidental \set #'font-family = #'ancient
+ Accidental \set #'style = #'mensural
+ Custos \set #'font-family = #'ancient
+ Custos \set #'style = #'mensural
+ Custos \set #'neutral-position = #3
+ Custos \set #'neutral-direction = #-1
+ Custos \set #'adjust-if-on-staffline = ##t
+ Clef \set #'font-family = #'ancient
+ clefGlyph = #"clefs-petrucci_c2"
+ clefPosition = #-2
+ clefOctavation = #0
}
\translator {
- \ScoreContext
-% \remove System_start_delimiter_engraver
-% systemStartDelimiter \override #'glyph = #'brace
+ \StaffContext
+ \name GregorianStaff
+ \alias Staff
+ \accepts GregorianVoice
+ \consists Custos_engraver
+ \remove Time_signature_engraver
+ StaffSymbol \set #'thickness = #2.0
+ StaffSymbol \set #'line-count = #4
+ KeySignature \set #'font-family = #'ancient
+ KeySignature \set #'style = #'vaticana
+ Accidental \set #'font-family = #'ancient
+ Accidental \set #'style = #'vaticana
+ Custos \set #'font-family = #'ancient
+ Custos \set #'style = #'vaticana
+ Custos \set #'neutral-position = #4
+ Custos \set #'neutral-direction = #-1
+ Custos \set #'adjust-if-on-staffline = ##t
+ Clef \set #'font-family = #'ancient
+ clefGlyph = #"clefs-vaticana_do"
+ clefPosition = #1
+ clefOctavation = #0
}
\translator {
- \ChoirStaffContext
- \remove System_start_delimiter_engraver
-% systemStartDelimiter \override #'glyph = #'empty
- }
+ \HaraKiriStaffContext
+ \accepts MensuralVoice
+ \accepts GregorianVoice
+ }
}
}
SCM scm_font_family = ly_cdr (scm_pair);
String font_char = "noteheads-" + ly_scm2string (scm_font_char);
String font_family = ly_scm2string (scm_font_family);
-
- me->set_grob_property("font-family", ly_symbol2scm (font_family.to_str0 ()));
- Molecule out =
- Font_interface::get_default_font (me)->find_by_name (font_char);
- if (out.empty_b())
- {
- warning (_f("Symbol not found, ", font_char.to_str0()));
+
+ me->set_grob_property("font-family", ly_symbol2scm (font_family.to_str0 ()));
+ Molecule out =
+ Font_interface::get_default_font (me)->find_by_name (font_char);
+ if (out.empty_b())
+ {
+ me->warning (_f ("Symbol `%s' not found in family `%s'",
+ font_char.to_str0 (), font_family.to_str0 ()));
}
-
int interspaces = Staff_symbol_referencer::line_count (me)-1;
int pos = (int)rint (Staff_symbol_referencer::get_position (me));
if (abs (pos) - interspaces > 1)
enddef;
% punctum
-punctum_char("Ed. Vat. punctum", "0vaticana_punctum", "vatpunctumhead",
+punctum_char("Ed. Vat. punctum", "vaticana_punctum", "vatpunctumhead",
false, false, false, false, false,
false, false, false, false, 1.0);
% punctum cavum (for OpusTeX compatibility)
-punctum_char("Ed. Vat. punctum cavum", "0vaticana_punctum_cavum",
+punctum_char("Ed. Vat. punctum cavum", "vaticana_punctum_cavum",
"vatpunctumcavumhead",
false, false, false, true, false,
false, false, false, false, 1.0);
% linea punctum (for OpusTeX compatibility)
-punctum_char("Ed. Vat. linea punctum", "0vaticana_linea_punctum",
+punctum_char("Ed. Vat. linea punctum", "vaticana_linea_punctum",
"vatlineapunctumhead",
false, false, true, false, false,
false, false, false, false, 1.0);
% linea punctum cavum (for OpusTeX compatibility)
-punctum_char("Ed. Vat. linea punctum cavum", "0vaticana_linea_punctum_cavum",
+punctum_char("Ed. Vat. linea punctum cavum", "vaticana_linea_punctum_cavum",
"vatlineapunctumcavumhead",
false, false, true, true, false,
false, false, false, false, 1.0);
% punctum inclinatum
-inclinatum_char("Ed. Vat. inclinatum", "0vaticana_inclinatum",
+inclinatum_char("Ed. Vat. inclinatum", "vaticana_inclinatum",
"vatinclinatumhead",
false, false, false);
% virga (i.e. right stemmed punctum)
-punctum_char("Ed. Vat. virga", "0vaticana_virga", "vatvirgahead",
+punctum_char("Ed. Vat. virga", "vaticana_virga", "vatvirgahead",
false, true, false, false, false,
false, false, false, false, 1.0);
% left stemmed punctum as used in clivis (flexa) ligature
-punctum_char("Ed. Vat. reverse virga", "0vaticana_rvirga", "vatrvirgahead",
+punctum_char("Ed. Vat. reverse virga", "vaticana_rvirga", "vatrvirgahead",
true, false, false, false, false,
false, false, false, false, 1.0);
% pes lower punctum
-punctum_char("Ed. Vat. pes lower punctum", "0vaticana_lpes", "vatlpeshead",
+punctum_char("Ed. Vat. pes lower punctum", "vaticana_lpes", "vatlpeshead",
false, false, false, false, true,
false, true, false, false, 1.0);
% pes upper punctum
-punctum_char("Ed. Vat. pes upper punctum", "0vaticana_upes", "vatupeshead",
+punctum_char("Ed. Vat. pes upper punctum", "vaticana_upes", "vatupeshead",
false, false, false, false, true,
false, false, false, false, 1.0);
% punctum to avoid collision with the lower punctum note of the pes when
% the upper punctum sits directly on top of the lower punctum.
%
-punctum_char("Ed. Vat. var pes upper punctum", "0vaticana_vupes",
+punctum_char("Ed. Vat. var pes upper punctum", "vaticana_vupes",
"vatvupeshead",
false, false, false, false, true,
false, false, false, true, 1.0);
% small punctum as used in epiphonus/cephalicus
-punctum_char("Ed. Vat. plica", "0vaticana_plica", "vatplicahead",
+punctum_char("Ed. Vat. plica", "vaticana_plica", "vatplicahead",
false, false, false, false, true,
false, false, false, false, 0.5);
% excentric punctum as used in epiphonus
-punctum_char("Ed. Vat. epiphonus", "0vaticana_epiphonus", "vatepiphonushead",
+punctum_char("Ed. Vat. epiphonus", "vaticana_epiphonus", "vatepiphonushead",
false, false, false, false, false,
false, true, true, false, 1.0);
% excentric punctum as used in cephalicus
-punctum_char("Ed. Vat. cephalicus", "0vaticana_cephalicus",
+punctum_char("Ed. Vat. cephalicus", "vaticana_cephalicus",
"vatcephalicushead",
false, false, false, false, false,
false, false, true, false, 1.0);
% quilisma
-fet_beginchar("Ed. Vat. quilisma", "0vaticana_quilisma", "vatquilismahead")
+fet_beginchar("Ed. Vat. quilisma", "vaticana_quilisma", "vatquilismahead")
save b_h,a_w;
a_b:=1.54; % b_h*a_b/a_w = wd/ht
b_h:=0.85;
fet_endchar;
% solesmes punctum inclinatum parvum
-inclinatum_char("Solesmes punctum inclinatum parvum", "0solesmes_incl_parvum",
+inclinatum_char("Solesmes punctum inclinatum parvum", "solesmes_incl_parvum",
"solinclparvumhead",
true, false, false);
% solesmes punctum auctum ascendens
-punctum_char("Solesmes punctum auctum ascendens", "0solesmes_auct_asc",
+punctum_char("Solesmes punctum auctum ascendens", "solesmes_auct_asc",
"solauctaschead",
false, false, false, false, false,
true, true, false, false, 1.0);
% solesmes punctum auctum descendens
-punctum_char("Solesmes punctum auctum descendens", "0solesmes_auct_desc",
+punctum_char("Solesmes punctum auctum descendens", "solesmes_auct_desc",
"solauctdeschead",
false, false, false, false, false,
true, false, false, false, 1.0);
% solesmes punctum inclinatum auctum
-inclinatum_char("Solesmes punctum incl. auctum", "0solesmes_incl_auctum",
+inclinatum_char("Solesmes punctum incl. auctum", "solesmes_incl_auctum",
"solpunctuminclinatumauctumhead",
false, false, true);
% solesmes stropha
-inclinatum_char("Solesmes stropha", "0solesmes_stropha",
+inclinatum_char("Solesmes stropha", "solesmes_stropha",
"solstrophahead",
false, true, false);
% solesmes stropha aucta
-inclinatum_char("Solesmes stropha aucta", "0solesmes_stropha_aucta",
+inclinatum_char("Solesmes stropha aucta", "solesmes_stropha_aucta",
"solstrophaauctahead",
false, true, true);
% solesmes oriscus
-fet_beginchar("Solesmes oriscus", "0solesmes_oriscus",
+fet_beginchar("Solesmes oriscus", "solesmes_oriscus",
"soloriscushead")
save b_h, a_w;
a_b := 1.54; % b_h*a_b/a_w = wd/ht
%
% inclinatum
-fet_beginchar("Ed. Med. inclinatum", "0medicaea_inclinatum",
+fet_beginchar("Ed. Med. inclinatum", "medicaea_inclinatum",
"medinclinatumhead")
save b_h, a_w;
a_b := 1.54; % b_h*a_b/a_w = wd/ht
enddef;
% punctum
-punctum_char("Ed. Med. punctum", "0medicaea_punctum", "medpunctumhead",
+punctum_char("Ed. Med. punctum", "medicaea_punctum", "medpunctumhead",
false, false);
% left up-stemmed punctum
-punctum_char("Ed. Med. reverse virga", "0medicaea_rvirga", "medrvirgahead",
+punctum_char("Ed. Med. reverse virga", "medicaea_rvirga", "medrvirgahead",
true, false);
% virga (i.e. left down-stemmed punctum)
-punctum_char("Ed. Med. virga", "0medicaea_virga", "medvirgahead",
+punctum_char("Ed. Med. virga", "medicaea_virga", "medvirgahead",
false, true);
%%%%%%%%
enddef;
% punctum
-punctum_char("Hufnagel punctum", "0hufnagel_punctum", "hufpunctumhead", false)
+punctum_char("Hufnagel punctum", "hufnagel_punctum", "hufpunctumhead", false)
% virga
-punctum_char("Hufnagel virga", "0hufnagel_virga", "hufvirgahead", true)
+punctum_char("Hufnagel virga", "hufnagel_virga", "hufvirgahead", true)
% pes lower punctum
-fet_beginchar("Hufnagel pes lower punctum", "0hufnagel_lpes", "huflpeshead")
+fet_beginchar("Hufnagel pes lower punctum", "hufnagel_lpes", "huflpeshead")
save b_h, a_w;
a_b := 1.54; % b_h*a_b/a_w = wd/ht
b_h := 0.85;
(define (shift-duration-log music shift dot)
"Recurse through music, adding SHIFT to duration-log and optionally
a dot to any note encountered. This scales the music up by a factor
- 2^shift."
+ 2^shift * (2 - (1/2)^dot)"
(let* ((es (ly-get-mus-property music 'elements))
(e (ly-get-mus-property music 'element))
(n (ly-music-name music))
(cons (string-append (number->string duration) "neo_mensural") "ancient")
(cons (number->string duration) "music")))
(else
- (cons (string-append (number->string (max 0 duration)) (symbol->string style))
- "music"))))
+ (if (string-match "vaticana*|hufnagel*|medicaea*" style)
+ (cons (symbol->string style) "ancient")
+ (cons (string-append (number->string (max 0 duration))
+ (symbol->string style))
+ "music")))))
(define (note-head-style->attachment-coordinates style duration)