WEBVTT
00:00.240 --> 00:00:02.320
Hello, everyone, my name is Spencer,
00:00:02.320 --> 00:00:03.600
and today I'm going to tell you all
00:00:03.600 --> 00:00:05.296
a little bit about how to typeset
00:00:05.296 --> 00:00:06.640
Gregorian chant sheet music
00:00:06.640 --> 00:00:10.000
using Emacs and a tool called Gregorio.
00:10.000 --> 00:00:12.160
Now I expect many, if not all, of you
00:00:12.160 --> 00:00:14.000
are unfamiliar with Gregorio,
00:00:14.000 --> 00:00:14.719
so we'll start off
00:00:14.719 --> 00:00:16.240
with a brief overview of the tool
00:16.240 --> 00:18.080
and the appropriate syntax.
00:18.080 --> 00:19.760
Next, I'll show you how I've automated
00:19.760 --> 00:00:20.720
some of the workflow
00:00:20.720 --> 00:00:22.480
using some Emacs Lisp functions
00:00:22.480 --> 00:00:23.920
which I've slowly been turning into
00:00:23.920 --> 00:00:26.080
a package called `gregorian-mode`.
00:26.080 --> 00:00:26.720
This will include
00:00:26.720 --> 00:00:28.320
some live typesetting examples
00:00:28.320 --> 00:00:29.359
to give you a better idea
00:00:29.359 --> 00:00:31.279
of how this all works.
00:31.279 --> 00:00:32.079
Finally, I'll share
00:00:32.079 --> 00:00:33.120
some information with you
00:00:33.120 --> 00:00:34.480
about how you can contribute
00:34.480 --> 00:00:35.680
to the package if you'd like,
00:00:35.680 --> 00:00:38.000
and how you can learn more about
00:38.000 --> 00:39.600
both Gregorio and `gregorian-mode`.
00:39.600 --> 00:00:41.120
And of course, all of the examples
00:00:41.120 --> 00:00:42.320
from this presentation today
00:00:42.320 --> 00:00:44.079
have been available online
00:00:44.079 --> 00:00:44.879
so you can review them
00:00:44.879 --> 00:00:46.800
all at your own pace.
00:46.800 --> 00:49.440
Gregorio is a tool that takes
00:49.440 --> 00:51.500
a `gabc` text file and compiles it
00:51.500 --> 00:52.879
into a LaTeX document.
00:52.879 --> 00:00:54.719
Gregorio is included by default
00:00:54.719 --> 00:00:56.559
with many LaTeX distributions,
00:00:56.559 --> 00:00:58.079
so you may already have it installed
00:00:58.079 --> 00:01:01.120
on your machine if you are a user of LaTeX.
01:01.120 --> 01:02.879
You can see here on the left an example
01:02.879 --> 00:01:04.960
of some input `gabc` text,
00:01:04.960 --> 00:01:05.600
and on the right,
00:01:05.600 --> 00:01:08.080
what the compiled score will look like.
01:08.080 --> 01:10.080
Looking at the `gabc`, we can see that
01:10.080 --> 01:12.640
it starts with the clef in parentheses,
01:12.640 --> 00:01:13.600
and then following this
00:01:13.600 --> 00:01:15.119
are the syllables of the lyrics
00:01:15.119 --> 00:01:18.080
and the corresponding notes in parentheses.
01:18.080 --> 01:21.119
For example, you can see that "EX,"
01:21.119 --> 00:01:22.240
the first syllable,
00:01:22.240 --> 00:01:24.080
corresponds to a `d` note
00:01:24.080 --> 00:01:25.920
in parentheses there,
00:01:25.920 --> 00:01:27.119
and if you look at the right,
00:01:27.119 --> 00:01:28.560
you can easily verify that
00:01:28.560 --> 00:01:30.320
in the output.
01:30.320 --> 00:01:31.040
Now the last thing
00:01:31.040 --> 00:01:31.680
that I want to note here
01:31.680 --> 01:34.079
is that `gabc` files are all plain text,
01:34.079 --> 01:36.320
meaning they can easily be shared
01:36.320 --> 01:38.000
and can easily be tracked using
01:38.000 --> 01:40.400
your favorite version-control software.
01:40.400 --> 01:41.920
Since these are plain text,
01:41.920 --> 01:43.520
it's really pretty easy to integrate
01:43.520 --> 01:46.079
them into your existing workflows.
01:46.079 --> 00:01:48.079
The `gabc` format also supports
00:01:48.079 --> 00:01:49.439
many optional header fields
00:01:49.439 --> 00:01:50.560
for adding more information
00:01:50.560 --> 00:01:51.920
about your score.
01:51.920 --> 01:53.520
You can see all the supported fields
01:53.520 --> 00:01:54.799
listed below, along with
00:01:54.799 --> 00:01:56.479
some placeholder text.
01:56.479 --> 00:01:57.360
These fields are placed
00:01:57.360 --> 00:01:58.399
at the top of a file
00:01:58.399 --> 00:02:01.000
and are separated from the actual score
02:01.000 --> 00:02:01.439
by the two percent symbols
00:02:01.439 --> 00:02:03.000
seen at the bottom.
02:03.000 --> 02:04.399
After these symbols, you would have the
02:04.399 --> 00:02:05.600
lines of your score,
00:02:05.600 --> 00:02:07.080
similar to what you saw
00:02:07.080 --> 00:02:08.560
on the previous slide.
02:08.560 --> 00:02:09.599
As I said earlier,
00:02:09.599 --> 00:02:10.560
I've automated some of
02:10.560 --> 02:12.959
the score build steps using Emacs Lisp,
02:12.959 --> 00:02:14.000
and have started turning them
00:02:14.000 --> 00:02:16.480
into a package called `gregorian-mode`.
02:16.480 --> 00:02:18.160
This is my first Emacs package,
00:02:18.160 --> 00:02:20.400
so the code is rather messy at the moment,
00:02:20.400 --> 00:02:22.160
and for the most part is just a wrapper
02:22.160 --> 02:24.319
around the Gregorio build process.
02:24.319 --> 00:02:25.536
However, I have made some
00:02:25.536 --> 00:02:26.720
quality-of-life improvements
00:02:26.720 --> 00:02:27.920
to the score writing,
00:02:27.920 --> 00:02:30.239
and have some more planned for the future.
02:30.239 --> 00:02:31.360
You'll get to see some of that
00:02:31.360 --> 00:02:32.480
in some live examples
00:02:32.480 --> 00:02:34.319
in just a little bit.
02:34.319 --> 02:36.000
This package is not currently on MELPA
02:36.000 --> 00:02:37.760
at the time of recording,
00:02:37.760 --> 00:02:38.640
so if you want it,
00:02:38.640 --> 00:02:40.000
you will have to clone it manually
00:02:40.000 --> 00:02:41.920
from GitHub, but it is planned
02:41.920 --> 02:44.080
to be on MELPA in the near future.
02:44.080 --> 00:02:44.959
It just needs to go through
00:02:44.959 --> 00:02:46.400
a little more rigorous cleanup
00:02:46.400 --> 00:02:48.640
and testing.
02:48.640 --> 02:50.400
Now that we've covered the basics,
02:50.400 --> 02:52.560
let's take a look at an actual example.
02:52.560 --> 02:54.319
In this example, I'm assuming that
02:54.319 --> 02:56.480
my `gregorian-mode` package is installed.
02:56.480 --> 02:57.920
However, there is nothing in these steps
02:57.920 --> 00:02:59.200
that cannot be done manually
00:02:59.200 --> 00:03:01.120
by just following the official
03:01.120 --> 03:02.480
Gregorio documentation.
03:02.480 --> 03:04.000
So if you don't want to use a package,
03:04.000 --> 03:05.840
you can do all of this pretty easily
03:05.840 --> 03:07.280
on your own just by following
03:07.280 --> 03:10.000
their documentation.
03:10.000 --> 00:03:11.680
So first we'll open up Emacs,
00:03:11.680 --> 00:03:12.480
and in my case,
00:03:12.480 --> 00:03:14.560
I'm using the GUI version.
03:14.560 --> 03:16.640
So now that Emacs is open, we can call
03:16.640 --> 03:21.440
the function `gregorian-create-new-gabc`,
03:21.440 --> 03:23.680
and this will prompt us for a file name.
03:23.680 --> 03:25.599
So we need to pick out a name
03:25.599 --> 03:26.799
for our new score.
03:26.799 --> 00:03:28.239
So I think I'm going to go ahead
00:03:28.239 --> 00:03:33.280
and name ours `emacsconf2021`.
03:33.280 --> 03:34.959
So you can see here that we now have
03:34.959 --> 00:03:36.879
a new `gabc` file with all of the
00:03:36.879 --> 00:03:38.720
optional header fields added,
00:03:38.720 --> 00:03:40.400
and we can keep whichever of these
00:03:40.400 --> 00:03:41.120
that we would like,
03:41.120 --> 03:43.200
and we can modify them as needed.
03:43.200 --> 03:45.360
So for right now, all I'm going to change
03:45.360 --> 03:47.360
is this commentary; I'm going to update
03:47.360 --> 00:03:52.560
this source of words to `emacsconf`,
03:52.560 --> 00:03:53.760
and then at the bottom here,
00:03:53.760 --> 00:03:55.040
this is where we'd go ahead
00:03:55.040 --> 00:03:56.959
and add our score.
03:56.959 --> 03:58.799
So I don't have time today to typeset
03:58.799 --> 04:01.040
an entire score, and I think that would
04:01.040 --> 00:04:02.239
probably be rather boring
00:04:02.239 --> 00:04:03.760
for most of you to watch,
00:04:03.760 --> 00:04:05.680
so I'll just demonstrate very briefly
00:04:05.680 --> 00:04:08.500
with a few syllables and notes here.
04:15.840 --> 04:17.680
Okay, so now that we have our first few
04:17.680 --> 04:19.840
syllables and notes down, let's take a
04:19.840 --> 04:21.759
look at what our score actually looks
04:21.759 --> 04:23.520
like so far.
04:23.520 --> 04:25.040
So in order to do this, we're going to
04:25.040 --> 04:29.600
call the function `gregorian-build`,
04:29.600 --> 00:04:31.199
and what this function does is
00:04:31.199 --> 00:04:32.320
it takes this score
00:04:32.320 --> 00:04:33.680
and creates a LaTeX file for it
04:33.680 --> 04:36.080
and then goes ahead and compiles it
04:36.080 --> 04:38.160
into a PDF file that we can actually
04:38.160 --> 04:39.840
take a look at.
04:39.840 --> 04:42.479
And this does take a few seconds to run...
04:42.479 --> 04:44.320
and there it goes...
04:44.320 --> 04:47.040
so we can see here we have a new buffer
04:47.040 --> 04:48.560
with all of the output
04:48.560 --> 04:50.320
from that build process,
04:50.320 --> 00:04:51.840
but what we really care about
00:04:51.840 --> 00:04:54.000
is that PDF.
04:56.080 --> 04:58.479
So opening that up, you can see
04:58.479 --> 05:00.560
we have a very short score.
05:00.560 --> 05:02.320
So far we haven't done a whole lot,
05:02.320 --> 05:03.919
but if you go ahead and compare the
05:03.919 --> 05:05.000
score on the right
05:05.000 --> 05:06.479
with the file on the left,
05:06.479 --> 05:08.080
you can really pretty clearly see that
05:08.080 --> 05:10.080
those are, in fact, the lyrics
05:10.080 --> 05:11.199
that we wrote.
05:11.199 --> 05:13.280
You can see at the top right there,
05:13.280 --> 05:14.300
the source has, in fact,
05:14.300 --> 05:16.000
changed to `emacsconf`
05:16.000 --> 00:05:18.240
so at this point, we could go ahead
00:05:18.240 --> 00:05:20.000
and just keep adding more lines,
00:05:20.000 --> 00:05:22.240
more notes, and so on,
05:22.240 --> 05:24.080
and we would end up with
05:24.080 --> 05:25.919
a completed score.
05:25.919 --> 00:05:27.919
Now this process is great and all,
00:05:27.919 --> 00:05:29.120
but as you can imagine,
00:05:29.120 --> 00:05:30.880
more complex `gabc` files
05:30.880 --> 05:32.720
can quickly become pretty difficult
05:32.720 --> 05:34.479
to read with the notes and the syllables
05:34.479 --> 05:36.080
all bunched together.
05:36.080 --> 05:37.840
So to get around this, I've been playing
05:37.840 --> 05:39.840
around with an alternative format
05:39.840 --> 05:41.000
called a `greg` file.
05:41.000 --> 05:42.160
I have an example of that
05:42.160 --> 05:43.919
for you right here.
05:43.919 --> 05:45.919
So here we can see there are
05:45.919 --> 05:48.000
two files side-by-side:
05:48.000 --> 05:50.000
on the left, we have a `gabc` file,
05:50.000 --> 00:05:51.022
and then on the right,
00:05:51.022 --> 00:05:52.000
we have a `greg` file,
05:52.000 --> 05:53.360
both of them for the same score.
05:53.360 --> 05:55.600
Now in my opinion, the `gabc` on the left
05:55.600 --> 00:05:57.199
is really rather difficult to read
00:05:57.199 --> 00:05:58.319
at a glance.
00:05:58.319 --> 00:05:59.280
You can see there
00:05:59.280 --> 00:06:00.880
the notes and the syllables
00:06:00.880 --> 00:06:02.160
are really all grouped together
00:06:02.160 --> 00:06:03.919
pretty tightly.
06:03.919 --> 00:06:05.520
Looking at the `greg` on the right,
00:06:05.520 --> 00:06:06.560
you can see that all of the
00:06:06.560 --> 00:06:08.479
header information is the same,
00:06:08.479 --> 00:06:09.680
but the score itself
00:06:09.680 --> 00:06:11.840
is split across several lines.
06:11.840 --> 00:06:13.039
The idea here is that
00:06:13.039 --> 00:06:15.039
the notes and the corresponding syllables
00:06:15.039 --> 00:06:16.560
will be on separate lines,
00:06:16.560 --> 00:06:17.600
one after the other,
06:17.600 --> 06:20.639
to help improve readability.
06:20.639 --> 00:06:21.906
Now the `greg` file format
00:06:21.906 --> 00:06:23.800
is still a work-in-progress.
06:23.800 --> 06:24.960
It's really not
06:24.960 --> 06:27.520
set in stone at all,
06:27.520 --> 06:29.840
but already I think this is a pretty
06:29.840 --> 06:32.560
substantial quality-of-life improvement,
06:32.560 --> 06:34.720
and already `gregorian-mode` can, in fact,
06:34.720 --> 00:06:36.720
build scores from `greg` files
00:06:36.720 --> 00:06:38.300
as long as they follow the conventions
06:38.300 --> 06:40.400
that you see in this file here,
06:40.400 --> 00:06:42.560
and I'm planning to have that
00:06:42.560 --> 00:06:44.240
quite a bit more well-defined
00:06:44.240 --> 00:06:45.360
moving forward.
06:45.360 --> 06:47.360
Like I said, this is really still
06:47.360 --> 06:49.520
a work-in-progress.
06:49.520 --> 00:06:51.039
Finally, I want to end today
00:06:51.039 --> 00:06:52.319
by sharing some resources
00:06:52.319 --> 00:06:53.840
where you can learn more.
06:53.840 --> 00:06:55.039
First, you can learn more about
00:06:55.039 --> 00:06:56.319
the Gregorio project
00:06:56.319 --> 00:06:57.500
on their official website,
06:57.500 --> 06:58.960
and I have the link for that
06:58.960 --> 07:00.720
on this slide here,
07:00.720 --> 07:02.319
and this site has several detailed examples
07:02.319 --> 07:04.080
and a lot of additional information
07:04.080 --> 00:07:05.840
about the project
00:07:05.840 --> 00:07:07.500
and about chant notation in general.
07:07.500 --> 07:09.500
It goes into much more depth
07:09.500 --> 00:07:12.000
than what we covered in this presentation,
00:07:12.000 --> 00:07:13.199
and overall, it's really
00:07:13.199 --> 00:07:14.960
a fantastic resource
07:14.960 --> 07:16.560
for learning more about how to use
07:16.560 --> 07:19.360
the Gregorio software and more about
07:19.360 --> 07:21.840
the specifics of chant notation.
07:21.840 --> 00:07:23.680
Second, if you're interested in using
00:07:23.680 --> 00:07:25.840
or contributing to `gregorian-mode`,
00:07:25.840 --> 00:07:28.240
you can check out the project on GitHub
07:28.240 --> 07:30.400
with the link here on this slide.
07:30.400 --> 07:31.919
And if you're interested in helping out
07:31.919 --> 07:34.080
in any way, feel free to open an issue,
07:34.080 --> 07:36.560
and we can discuss further.
07:36.560 --> 00:07:38.160
And finally, all of the examples
00:07:38.160 --> 00:07:40.400
from today are also available on GitHub,
07:40.400 --> 07:42.479
and that's the last link on this slide,
07:42.479 --> 07:44.160
and you can feel free to experiment
07:44.160 --> 07:45.919
with these and really just use them
07:45.919 --> 07:48.560
in any way that you'd like.
07:48.560 --> 07:50.319
Now that's all that I had for today,
07:50.319 --> 00:07:51.360
but I do want to take a moment
00:07:51.360 --> 00:07:52.000
to thank you all
07:52.000 --> 07:54.160
for checking out my presentation,
07:54.160 --> 07:55.680
and I want to thank the organizers
07:55.680 --> 00:07:56.400
for giving me some time
00:07:56.400 --> 00:07:57.759
to speak with you all.
07:57.759 --> 00:07:59.120
I hope that this was at least
00:07:59.120 --> 00:08:01.120
a little bit interesting to some of you,
00:08:01.120 --> 00:08:02.319
and I hope that you all enjoy
00:08:02.319 --> 00:08:02.800
the rest of the conference.
08:02.800 --> 00:08:06.520
Thank you for your time today.
00:08:06.520 --> 00:08:07.520
[captions by Hannah Miller]