diff options
author | Sacha Chua <sacha@sachachua.com> | 2020-12-20 00:26:59 -0500 |
---|---|---|
committer | Sacha Chua <sacha@sachachua.com> | 2020-12-20 00:26:59 -0500 |
commit | bfb6755059e69e1f48eb08f9e791fce132fdf59f (patch) | |
tree | a7253549126036dc9f8a67a87435f8bec1755e86 /2020/info | |
parent | b287660968279dfcebbcfedfbc29f842742c93bf (diff) | |
download | emacsconf-wiki-bfb6755059e69e1f48eb08f9e791fce132fdf59f.tar.xz emacsconf-wiki-bfb6755059e69e1f48eb08f9e791fce132fdf59f.zip |
Add transcript for 04
Diffstat (limited to '2020/info')
-rw-r--r-- | 2020/info/04.md | 118 |
1 files changed, 117 insertions, 1 deletions
diff --git a/2020/info/04.md b/2020/info/04.md index b0cffc2d..67affc3d 100644 --- a/2020/info/04.md +++ b/2020/info/04.md @@ -2,7 +2,8 @@ Jonathan Gregory [[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--04-music-in-plain-text--jonathan-gregory.webm" subtitles="/2020/subtitles/emacsconf-2020--04-music-in-plain-text--jonathan-gregory.vtt"]] -[Download compressed .webm video (13.8M)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--04-music-in-plain-text--jonathan-gregory--vp9-q56-video-original-audio.webm) +[Download compressed .webm video (13.8M)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--04-music-in-plain-text--jonathan-gregory--vp9-q56-video-original-audio.webm) +[Transcript](#transcript) LilyPond is an extensible program for producing high-quality sheet music engraved with traditional layout rules. Similar to LaTeX and @@ -61,3 +62,118 @@ No. - The contrast between background and foreground is a little too weak. - Uses LilyPond-mode, flycheck. - <https://orgmode.org/worg/org-contrib/babel/languages/ob-doc-lilypond.html> + + +<!-- transcript: 2020/subtitles/emacsconf-2020--04-music-in-plain-text--jonathan-gregory.vtt --> +<a name="transcript"></a> + +Hello, everyone, and welcome to the EmacsConf. I am Jonathan. In this +talk, I'm going to demonstrate ways of producing sheet music in Emacs +using Lilypond, and maybe also convince you to use Emacs for writing +your scores. I'll start with an overview of the syntax for those who +are new to using text-based notation as a shallow dive into the deep +pond of lilies and Lilypond, and move on to showcase some of its +functionalities using Org Mode and lilypond-mode. One disclaimer, +however: I am not a Lilypond developer. + +So what is Lilypond? Lilypond is a file format and music engraving +system for producing high-quality sheet music. It translates textual +representations of music to graphical objects. It's similar to LaTeX +in that its input format describes the visual layouts of the score, +using commands to define musical expressions. Commands begin with a +backslash. For example, the formatter command, as shown on the left, +yields its graphical equivalents on the right, the fermata symbol over +the low B and so on and so forth. It's also fully extensible, like +Emacs, allowing users to extend and override Lilypond's +functionalities using the Scheme scripting language. It can be used +for early and contemporary music tablature, vocal music lead sheets, +and so on. Above all, it works with Emacs. In fact, Lilypond ships +with Emacs Lisp libraries, including a major mode for editing Lilypond +files. + +So the input files are similar to source files. They contain +expressions formed with curly braces, comments that start with the +percent sign, and the code is indented. Notes are entered using +lowercase letters, and rests with the letter r. In this case, the +lowercase r or r4 is the equivalence of a crotchet or quarter note +rest. Durations are entered using numbers and dots after the note +name. If you do not specify one, the previous duration is used. You +can also tie notes together using the tilde symbol (~). In fact, you +can input chords, lyrics, embellishments, and a lot more. I encourage +you to read the manual for more information. Now let's switch to a +terminal window. With Lilypond installed, let's create a test file +with the extension .ly and open it in Emacs. + +At the top of the file is the version statement, which tells Lilypond +which version to use when compiling the file. Here I'm using version +2.20.0. I've added the clef and time signature. Let's add some notes. +I'm going to close this now and compile the file by running lilypond +followed by the file name. So now let's view the output. Okay. + +So here's a more complex example for randomizing note sequences. The +idea is to create new reading materials each time the code blocks are +evaluated. As usual, we begin with a header. I've added the title and +composer. Then we add the note sequences to use in the composition. In +this case, sn is a note name just like a b c d and so on, and stands +for snare drum, the percussion instruments. Now here's a function +that's going to shuffle the notes in the table. Finally, we expand the +notes inside the Lilypond source block. So whatever the function +returns is expanded inside the drums block. Now let's press C-c C-c to +view the results. Okay. And if I run this again, it should create a +new composition. Great. You can also audition a piece using the midi +command, which creates a midi file of the score. + +Note also that the ob library-- sorry, the ob-lilypond library comes +with two modes. The one I'm using now is called arrange mode and is +useful for assembling complete scores. The basic mode on the other +hand allows you to mix text and music by embedding Lilypond snippets +and export them using typical Org Mode commands. + +Now to demonstrate the basic mode in action. I'm going to export this +document to a PDF file. In this case, the :file header argument is +required, so you have to provide one and include the file name. Again, +you can run the code and view the results. Here it is. So now let's +export this to a PDF file. And here it is, what it generates. + +Now I'm going to show you the workflow I used to produce music books +in Emacs, combining Lilypond and LaTeX for a perfect marriage. I begin +by sketching the first draft of the manuscript using pencil and paper. +Then I move to Emacs to input the notes in a git repository. This is a +typical source file. It begins with a stylesheet where I set variables +and layout settings, although in general, there's no need for tweaking +the layout unless you have specific requirements to do so. The easiest +way to compile the file from Emacs is by pressing C-c C-l, so let's do +this now, and the compilation buffer will tell you if there were any +errors in the file. Now to automate the process of compiling several +files and building the PDF, I use GNU Make, so all I have to do is +open the shell and run the make command. Don't worry, I'll provide a +link to the source code on the last slide. + +As I moved forward with the project, I found at least two things +missing. One, I had no access to a metronome, at least not from the +editor, so I built one for casual use and made it available in the +MELPA repository. I also missed bar numbers in the source file. This +is useful when going back and forth between input and output files +without getting lost. So I wrote a command for toggling bar numbers, +which I hope you can see on the left. Also, some expressions are +difficult or slow to write on the keyboard-- accents and tuplets, for +example--so I use template expansion extensively for this purpose, +mainly yasnippet. + +So what do I think? Well, I think Lilypond can be a +sharp paradigm shift for people used to GUI alternatives, but the +results are impressive. You don't have to dive too deeply to start +using Lilypond. Likewise, the ability to extend the software, I think, +is especially appealing for music professionals, enthusiasts, +composers, and the academic community: for example, allowing users to +create alternative notation systems required in non-Western music +traditions and other non-conventional requirements. Also, Lilypond and +Emacs both have extensive and well-written manuals and active +communities of users. But if you're still not sure where to start and +when to wedge your feet in the deep but warm pond of lilies, Lilypond, +and Lilypond users, I invite you to contribute to my Lilypond +projects, which you can do so from the links on the screen. So, thank +you all. I look forward to your comments, and I hope you enjoy the +rest of the conference. + +<!-- /transcript --> |