diff options
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.vtt | 559 |
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. |