summaryrefslogtreecommitdiffstats
path: root/2020/subtitles/emacsconf-2020--04-music-in-plain-text--jonathan-gregory.vtt
diff options
context:
space:
mode:
Diffstat (limited to '2020/subtitles/emacsconf-2020--04-music-in-plain-text--jonathan-gregory.vtt')
-rw-r--r--2020/subtitles/emacsconf-2020--04-music-in-plain-text--jonathan-gregory.vtt559
1 files changed, 559 insertions, 0 deletions
diff --git a/2020/subtitles/emacsconf-2020--04-music-in-plain-text--jonathan-gregory.vtt b/2020/subtitles/emacsconf-2020--04-music-in-plain-text--jonathan-gregory.vtt
new file mode 100644
index 00000000..b2722c99
--- /dev/null
+++ b/2020/subtitles/emacsconf-2020--04-music-in-plain-text--jonathan-gregory.vtt
@@ -0,0 +1,559 @@
+WEBVTT
+
+00:00:02.000 --> 00:00:04.799
+Hello, everyone, and welcome to the EmacsConf.
+
+00:00:04.799 --> 00:00:06.631
+I am Jonathan. In this talk,
+
+00:00:06.631 --> 00:00:10.880
+I'm going to demonstrate ways of
+producing sheet music in Emacs
+
+00:00:10.880 --> 00:00:14.636
+using Lilypond, and maybe also
+convince you
+
+00:00:14.636 --> 00:00:18.640
+to use Emacs for writing your scores.
+
+00:00:18.640 --> 00:00:20.698
+I'll start with an overview
+of the syntax
+
+00:00:20.698 --> 00:00:22.240
+for those who are new to using
+
+00:00:22.240 --> 00:00:24.400
+text-based notation
+
+00:00:24.400 --> 00:00:26.615
+as a shallow dive into the deep pond
+
+00:00:26.615 --> 00:00:28.800
+of lilies and Lilypond,
+
+00:00:28.800 --> 00:00:30.171
+and move on to showcase
+
+00:00:30.171 --> 00:00:34.723
+some of its functionalities
+using Org Mode and lilypond-mode.
+
+00:00:34.723 --> 00:00:37.173
+One disclaimer, however:
+
+00:00:37.173 --> 00:00:40.480
+I am not a Lilypond developer.
+
+00:00:40.480 --> 00:00:42.841
+So what is Lilypond?
+
+00:00:42.841 --> 00:00:46.800
+Lilypond is a file format and music
+engraving system
+
+00:00:46.800 --> 00:00:50.000
+for producing high-quality sheet music.
+
+00:00:50.000 --> 00:00:52.442
+It translates textual representations
+
+00:00:52.442 --> 00:00:55.120
+of music to graphical objects.
+
+00:00:55.120 --> 00:00:57.520
+It's similar to LaTeX in that
+
+00:00:57.520 --> 00:00:59.329
+its input format describes
+
+00:00:59.329 --> 00:01:01.600
+the visual layouts of the score,
+
+00:01:01.600 --> 00:01:05.119
+using commands to define musical
+expressions.
+
+00:01:05.119 --> 00:01:07.760
+Commands begin with a backslash.
+
+00:01:07.760 --> 00:01:10.791
+For example, the formatter command,
+as shown on the left,
+
+00:01:10.791 --> 00:01:13.920
+yields its graphical equivalents
+on the right,
+
+00:01:13.920 --> 00:01:16.345
+the fermata symbol over the low B
+
+00:01:16.345 --> 00:01:19.119
+and so on and so forth.
+
+00:01:19.119 --> 00:01:21.600
+It's also fully extensible, like Emacs,
+
+00:01:21.600 --> 00:01:23.119
+allowing users to extend
+
+00:01:23.119 --> 00:01:25.600
+and override Lilypond's functionalities
+
+00:01:25.600 --> 00:01:28.452
+using the Scheme scripting language.
+
+00:01:28.452 --> 00:01:32.422
+It can be used for early and
+contemporary music tablature,
+
+00:01:32.422 --> 00:01:35.200
+vocal music lead sheets, and so on.
+
+00:01:35.200 --> 00:01:38.000
+Above all, it works with Emacs.
+
+00:01:38.000 --> 00:01:41.040
+In fact, Lilypond ships with
+Emacs Lisp libraries,
+
+00:01:41.040 --> 00:01:47.360
+including a major mode for editing
+Lilypond files.
+
+00:01:47.360 --> 00:01:50.560
+So the input files are similar to source
+files.
+
+00:01:50.560 --> 00:01:54.079
+They contain expressions formed with
+curly braces,
+
+00:01:54.079 --> 00:01:56.549
+comments that start with
+the percent sign,
+
+00:01:56.549 --> 00:02:00.240
+and the code is indented.
+
+00:02:00.240 --> 00:02:02.903
+Notes are entered using lowercase
+letters,
+
+00:02:02.903 --> 00:02:05.600
+and rests with the letter r.
+
+00:02:05.600 --> 00:02:08.800
+In this case, the lowercase r or r4
+
+00:02:08.800 --> 00:02:11.039
+is the equivalence of a crotchet or
+
+00:02:11.039 --> 00:02:14.000
+quarter note rest.
+
+00:02:14.000 --> 00:02:15.938
+Durations are entered using numbers
+
+00:02:15.938 --> 00:02:18.480
+and dots after the note name.
+
+00:02:18.480 --> 00:02:20.196
+If you do not specify one,
+
+00:02:20.196 --> 00:02:22.640
+the previous duration is used.
+
+00:02:22.640 --> 00:02:27.360
+You can also tie notes together using
+the tilde symbol (~).
+
+00:02:27.360 --> 00:02:30.000
+In fact, you can input chords, lyrics,
+
+00:02:30.000 --> 00:02:32.080
+embellishments, and a lot more.
+
+00:02:32.080 --> 00:02:36.160
+I encourage you to read the manual for
+more information.
+
+00:02:36.160 --> 00:02:39.680
+Now let's switch to a terminal window.
+
+00:02:39.680 --> 00:02:41.247
+With Lilypond installed,
+
+00:02:41.247 --> 00:02:50.560
+let's create a test file with the
+extension .ly and open it in Emacs.
+
+00:02:50.560 --> 00:02:53.048
+At the top of the file is
+the version statement,
+
+00:02:53.048 --> 00:02:54.395
+which tells Lilypond
+
+00:02:54.395 --> 00:02:57.440
+which version to use when
+compiling the file.
+
+00:02:57.440 --> 00:03:00.959
+Here I'm using version 2.20.0.
+
+00:03:00.959 --> 00:03:04.159
+I've added the clef and time signature.
+
+00:03:04.159 --> 00:03:09.280
+Let's add some notes.
+
+00:03:09.280 --> 00:03:12.098
+I'm going to close this now
+
+00:03:12.098 --> 00:03:13.765
+and compile the file
+
+00:03:13.765 --> 00:03:19.760
+by running lilypond followed
+by the file name.
+
+00:03:19.760 --> 00:03:27.360
+So now let's view the output.
+
+00:03:27.360 --> 00:03:29.760
+Okay. So here's a more complex example
+
+00:03:29.760 --> 00:03:32.239
+for randomizing note sequences.
+
+00:03:32.239 --> 00:03:33.410
+The idea is to create
+
+00:03:33.410 --> 00:03:37.760
+new reading materials each time the code
+blocks are evaluated.
+
+00:03:37.760 --> 00:03:40.640
+As usual, we begin with a header.
+
+00:03:40.640 --> 00:03:43.541
+I've added the title and composer.
+
+00:03:43.541 --> 00:03:47.920
+Then we add the note sequences to use in
+the composition.
+
+00:03:47.920 --> 00:03:51.200
+In this case, sn is a note name just like
+
+00:03:51.200 --> 00:03:54.959
+a b c d and so on, and stands for snare drum,
+
+00:03:54.959 --> 00:03:58.879
+the percussion instruments.
+
+00:03:58.879 --> 00:04:00.720
+Now here's a function that's going to
+
+00:04:00.720 --> 00:04:04.080
+shuffle the notes in the table.
+
+00:04:04.080 --> 00:04:06.560
+Finally, we expand the notes inside
+
+00:04:06.560 --> 00:04:08.799
+the Lilypond source block.
+
+00:04:08.799 --> 00:04:10.684
+So whatever the function returns
+
+00:04:10.684 --> 00:04:13.680
+is expanded inside the drums block.
+
+00:04:13.680 --> 00:04:20.079
+Now let's press C-c C-c to view the
+results.
+
+00:04:20.079 --> 00:04:26.840
+Okay. And if I run this again, it should
+create a new composition.
+
+00:04:26.840 --> 00:04:31.360
+Great. You can also audition a piece
+using the midi command,
+
+00:04:31.360 --> 00:04:34.320
+which creates a midi file of the score.
+
+00:04:34.320 --> 00:04:36.560
+Note also that the ob library--
+
+00:04:36.560 --> 00:04:39.040
+sorry, the ob-lilypond library comes
+
+00:04:39.040 --> 00:04:40.400
+with two modes.
+
+00:04:40.400 --> 00:04:43.440
+The one I'm using now is called
+arrange mode
+
+00:04:43.440 --> 00:04:47.120
+and is useful for assembling
+complete scores.
+
+00:04:47.120 --> 00:04:49.015
+The basic mode, on the other hand,
+
+00:04:49.015 --> 00:04:51.199
+allows you to mix text and music
+
+00:04:51.199 --> 00:04:53.360
+by embedding Lilypond snippets and
+
+00:04:53.360 --> 00:05:00.240
+export them using typical Org Mode
+commands.
+
+00:05:00.240 --> 00:05:02.661
+Now to demonstrate the basic mode in
+action.
+
+00:05:02.661 --> 00:05:04.320
+I'm going to export this document
+
+00:05:04.320 --> 00:05:05.120
+to a PDF file.
+
+00:05:05.120 --> 00:05:10.077
+In this case, the :file header argument
+is required,
+
+00:05:10.077 --> 00:05:11.919
+so you have to provide one
+
+00:05:11.919 --> 00:05:15.600
+and include the file name.
+
+00:05:15.600 --> 00:05:22.160
+Again, you can run the code and view the
+results.
+
+00:05:22.160 --> 00:05:33.680
+Here it is. So now let's export this to
+a PDF file.
+
+00:05:33.680 --> 00:05:39.680
+And here it is, what it generates.
+
+00:05:39.680 --> 00:05:41.716
+Now I'm going to show you
+the workflow I used
+
+00:05:41.716 --> 00:05:44.000
+to produce music books in Emacs,
+
+00:05:44.000 --> 00:05:46.160
+combining Lilypond and LaTeX for a
+
+00:05:46.160 --> 00:05:48.000
+perfect marriage.
+
+00:05:48.000 --> 00:05:49.858
+I begin by sketching the first draft
+
+00:05:49.858 --> 00:05:53.039
+of the manuscript using
+pencil and paper.
+
+00:05:53.039 --> 00:05:55.039
+Then I move to Emacs to input the notes
+
+00:05:55.039 --> 00:05:57.440
+in a git repository.
+
+00:05:57.440 --> 00:05:59.486
+This is a typical source file.
+
+00:05:59.486 --> 00:06:01.360
+It begins with a stylesheet
+
+00:06:01.360 --> 00:06:03.690
+where I set variables and layout settings,
+
+00:06:03.690 --> 00:06:04.875
+although in general,
+
+00:06:04.875 --> 00:06:07.039
+there's no need for tweaking the layout
+
+00:06:07.039 --> 00:06:11.199
+unless you have specific requirements to
+do so.
+
+00:06:11.199 --> 00:06:15.520
+The easiest way to compile the file
+from Emacs is by pressing C-c C-l,
+
+00:06:15.520 --> 00:06:19.280
+so let's do this now,
+
+00:06:19.280 --> 00:06:21.199
+and the compilation buffer will tell you
+
+00:06:21.199 --> 00:06:23.759
+if there were any errors in the file.
+
+00:06:23.759 --> 00:06:25.439
+Now to automate the process of
+
+00:06:25.439 --> 00:06:28.560
+compiling several files and
+building the PDF,
+
+00:06:28.560 --> 00:06:31.280
+I use GNU Make, so all I have to do is
+
+00:06:31.280 --> 00:06:36.000
+open the shell and run the make command.
+Don't worry,
+
+00:06:36.000 --> 00:06:37.840
+I'll provide a link to the source code
+
+00:06:37.840 --> 00:06:41.600
+on the last slide.
+
+00:06:41.600 --> 00:06:43.494
+As I moved forward with the project,
+
+00:06:43.494 --> 00:06:46.000
+I found at least two things missing.
+
+00:06:46.000 --> 00:06:48.720
+One, I had no access to a metronome,
+
+00:06:48.720 --> 00:06:50.479
+at least not from the editor,
+
+00:06:50.479 --> 00:06:52.437
+so I built one for casual use
+
+00:06:52.437 --> 00:06:55.919
+and made it available in the MELPA
+repository.
+
+00:06:55.919 --> 00:06:59.039
+I also missed bar numbers in the
+source file.
+
+00:06:59.039 --> 00:07:00.880
+This is useful when going back and forth
+
+00:07:00.880 --> 00:07:04.479
+between input and output files without
+getting lost.
+
+00:07:04.479 --> 00:07:07.290
+So I wrote a command for toggling bar
+numbers,
+
+00:07:07.290 --> 00:07:10.000
+which I hope you can see on the left.
+
+00:07:10.000 --> 00:07:12.080
+Also, some expressions are difficult or
+
+00:07:12.080 --> 00:07:14.160
+slow to write on the keyboard--
+
+00:07:14.160 --> 00:07:16.490
+accents and tuplets, for example--
+
+00:07:16.490 --> 00:07:20.160
+so I use template expansion extensively
+for this purpose,
+
+00:07:20.160 --> 00:07:23.440
+mainly yasnippet.
+
+00:07:23.440 --> 00:07:24.797
+So what do I think?
+
+00:07:24.797 --> 00:07:28.080
+Well, I think Lilypond can be a sharp
+paradigm shift
+
+00:07:28.080 --> 00:07:30.817
+for people used to GUI alternatives,
+
+00:07:30.817 --> 00:07:32.720
+but the results are impressive.
+
+00:07:32.720 --> 00:07:34.639
+You don't have to dive too deeply to
+
+00:07:34.639 --> 00:07:36.960
+start using Lilypond.
+
+00:07:36.960 --> 00:07:39.635
+Likewise, the ability to extend the
+software,
+I think,
+
+00:07:39.635 --> 00:07:42.400
+is especially appealing for music
+professionals,
+
+00:07:42.400 --> 00:07:46.560
+enthusiasts, composers, and the academic
+community:
+
+00:07:46.560 --> 00:07:48.400
+for example, allowing users to create
+
+00:07:48.400 --> 00:07:50.187
+alternative notation systems
+
+00:07:50.187 --> 00:07:53.120
+required in non-Western music traditions
+
+00:07:53.120 --> 00:07:56.160
+and other non-conventional requirements.
+
+00:07:56.160 --> 00:07:58.400
+Also, Lilypond and Emacs both have
+
+00:07:58.400 --> 00:08:00.720
+extensive and well-written manuals
+
+00:08:00.720 --> 00:08:04.639
+and active communities of users.
+
+00:08:04.639 --> 00:08:05.971
+But if you're still not sure
+
+00:08:05.971 --> 00:08:10.475
+where to start and when to wedge your
+feet in the deep but warm pond
+
+00:08:10.475 --> 00:08:13.680
+of lilies, Lilypond, and Lilypond users,
+
+00:08:13.680 --> 00:08:16.960
+I invite you to contribute to my
+Lilypond projects,
+
+00:08:16.960 --> 00:08:20.720
+which you can do so from the links on
+the screen.
+
+00:08:20.720 --> 00:08:23.271
+So, thank you all. I look forward to
+your comments,
+
+00:08:23.271 --> 00:08:27.840
+and I hope you enjoy the rest of the
+conference.