Greetings,
I have succeeded in getting gregorio to compile under Mac OSX. I
checked out the source from svn last week (April 12), and with the odd
tweak or two, have gotten it to compile without any major issues. I am
still struggling with installation of the fonts. For reasons I do not
understand yet, they compile OK, they install OK, and I can run aleph
OK. However, then I try to view the dvi, it says that there is a font
error, the gregorio font is not defined. I not familiar with the dvi
fonts, so it is likely I have not gotten everything in the right
location just yet.
But that is not the part I wish to mention. Since I have used OpusTex
in the past, the easiest way for me to use gregorio at the moment is
to output OpusTex. After some experimentation with gregorio, and
looking at the source code, I believe there is a bug in opustex-
write.c. In opustex-write.c, we see:
lines 40-42:
write_score (FILE * f, gregorio_score * score)
{
char first_syllable = 0;
Now first_syllable flag that this is the first syllable of the score,
and thus the first letter goes in a special place.
line 92 has:
first_syllable = SKIP_FIRST_LETTER;
and then libgregorio_opustex_write_syllable is called
line 99:
libgregorio_opustex_write_syllable (f, current_syllable,
first_syllable);
eventually libgregorio_opustex_write_text is called, and in this
routine we see:
line 553:
if (first_syllable)
{
first_syllable = 0;
}
Thus after the first syllable is written, the flag is set off.
Unfortunately, libgregorio_opustex_write_text is defined as:
libgregorio_opustex_write_text (FILE * f, gregorio_character * text,
char first_syllable)
And the calling routine is defined as:
libgregorio_opustex_write_syllable (FILE * f, gregorio_syllable *
syllable,
char first_syllable)
This means that first_syllable is passed by value, not address, thus
line 553, which sets the flag to off is ineffective. The value is set
to off in the lowest routine, but new value is not passed back through
the calling routines. Thus first_syllable is continuously passed into
the write routines as "true". The effect is for gregorio to drop all
the first letters/consonants in the opustex file.
For example:
Pó(eh/hi)pu(h)lus(h) from the example gabc file produces:
\musicinitial{}{P}
\sgn {}{\'o }{} Nc cd\egn
\sgn {}{u}{} c\egn
\sgn {}{u}{s} c\egn
\spatium
the "p" in the "pu" syllable is missing, as is the "l" from the "lus".
The corrected form is:
\musicinitial{}{P}
\sgn {P}{\'o }{} Nc cd\egn
\sgn {p}{u}{} c\egn
\sgn {l}{u}{s} c\egn
\spatium
As a temporary fix in my copy, I have added a line to reset
first_syllable.
lines 97:103
while (current_syllable)
{
libgregorio_opustex_write_syllable (f, current_syllable,
first_syllable);
first_syllable = 0; //mwm
current_syllable = current_syllable->next_syllable;
}
The better approach would be to make the calling argument
first_syllable an address and pass by address. That way it will be
reset by the lower level routine.
==================================================================
Michael Martin
[EMAIL PROTECTED]
Thesaurus Precum Latinarum
http://www.preces-latinae.org/index.htm
==================================================================
_______________________________________________
Gregorio-devel mailing list
[email protected]
https://mail.gna.org/listinfo/gregorio-devel