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

Répondre à