Monday, July 4, 2011

You can engrave chant

For longer than a year, I've wanted to throw myself into learning Gregorio, the method for setting four-line staffs with chant notation that shows such incredible promise. The merit of it comes down to its stability (if your code is right, the output is perfect), its sharability (one can imagine a global data base of all Gregorian code), its incredibly intuitive structure (there is virtually no way not to follow how it works once you start).

To tell you the truth, I've dreaded learning this because I'm not such a quick study when it comes to software and code, despite the reality that I live, eat, and sleep in a world of coders nearly all the time. I'm too impatient for it, and I keep having to learn the same lessons over and over. Learning new stuff, which I have to do every few days in any case, truly does feel painful and I tend to find excuses not to do so. So I put off Gregorio until I could really focus.

Today was the day.

Gregorio lives in that mysterious world inhabited by hypergreeks called LaTeX or just Tex, so this is GregorioTeX. This is method of code writing to a compilier that spits out your end results on the other side. This is very different from a graphic interface program like most music typesetting software and like Word.

Until now, this is all I've used. I can type with Meinrad fonts if I just have to, but the program is oddly unstable. Moving from Mac to Windows is nearly impossible, and recent versions of Word have been unkind to systems that require vertical stability across several fonts. In any case, the fonts are no longer being updated or upgraded, so their current limits (some thing this font package just will not do) are permanent.There are a handful of people in the world who can really make Meinrad sing, people like Richard Rice (Parish Book of Chant) who can type as fast with these fonts as the best expert can type words.

But then what about the rest of us? It makes sense to move forward to new things. The Simple English Propers were set in Gregorio, and everyone has been amazed at the results. In fact, it seems that nearly everyone under a certain age is using this new method.

My first mistake with Gregorio was attempting to throw myself into the TeX world at the same time I tried to learn this program. After many downloads, tutorials, customizations, and hours of clumsy poking on things, I finally bailed out. This is a highly frustrating path for anyone who doesn't do this all the time.

Then I went straight for the wonderful interface built by Richard Chonak: Gregorio live demonstration. He has used his own server to run all the machinery behind the scenes. All you need to do is put in the code right inside the window, choose your export properties, and you are done.

Try it now with this Kyrie

name:Kyrie XVII;
(c4)KY(f)ri(gfg)e(h.) *() e(ixjvIH'GhvF'E)lé(ghg')i(g)son.(f.) bis(::)
Chri(ixj)ste(jv.hijv.) e(ixjvIH'GhvF'E)lé(ghg')i(g)son.(f.) bis(::)
Ký(f)ri(hj)e(ixjjkij.) e(ixjvIH'GhvF'E)lé(ghg')i(g)son.(f.) (::)
Ký(f)ri(hj)e(ixjjkij.) *(,) (ixf//hjjkij.) **(,) e(ixjvIH'GhvF'E)lé(ghg')i(g)son.(f.) (::)

All that is left is understand the logic of the code. Here is the essential guide. You can get more detailed on the next page. It comes down to this: the words are typed and the music is in parenthesis. The notes start with A and go to M.

From there you can create every manner of note shape and compound neume and everything else you can imagine. It is actually completely amazing and very easy once you get the hang of it.

The possibilities here really are incredible to consider. For Church musicians, this is just invaluable for making scores and printing pew resources. I'm imaging a future in which all this code is completely open source. In fact, people like Aristotle Esguerra have already posted the code for the Graduale Simplex. This way, if you need a perfect rendering of Gloria XV, it's there for the taking.

Here is a bit about the background of the project:

The Gregorio project was born in 2006 at TELECOM Bretagne, a graduate engineering school in France. It was at first a student project of six months duration, supervised by Mr Yannis Haralambous, developer of Omega. When the project was done, Élie Roux decided to continue the project and to develop it under GPL.

From the outset the goal of the project has been to create a graphical interface for the monks of the Abbey of Sainte Madeleine du Barroux so that they could use a gregorian font. This font, Gregoria, is a professional and commercially available OpenType font designed by Elena Albertoni, a typographer and graphic designer. Finally, due to licence issues, it was decided that the project will have its own font called gregorio.

At the end of the year 2006, a new developer, Olivier Berten, joined the project and created its OpusTeX component. By April 2007, Gregorio had reached a certain maturity and could start to be used, at least through its command line interface, as a preprocessor for OpusTeX. A project page was created on

This site was set online in April 2007 with a design by Patrick Roux and it has since been corrected and improved by Nicolas Aupetit. Jérémie Corbier has been developing the autotools support and the modularization of the code, also since April 2007.

The development of the graphical interface and the modification of the code structure to use autotools and dynamic libraries has been the subject of my third year project in TELECOM Bretagne. Sadly, the graphical interface is not yet usable.

During a three-month internship starting april 2008 at the Monastero di San Benedetto, in Norcia (Italy), gregorio made considerable progress, The GregorioTeX style is now almost finished, and as a consequence, we've made progress in code stabilization. Gregorio is now close to a release.

During the months of October and November 2008, the development is focusing on stabilization for a release. The port to cygwin is working, and the website has been updated and improved. Website development has picked up lately, thanks to Richard Chonak who joined the project as a translator.