0:00:02.000,0:00:04.799
hello everyone and welcome to the amax
0:00:04.240,0:00:07.200
golf
0:00:04.799,0:00:09.599
I am jonathan and in this talk I'm going
0:00:07.200,0:00:10.880
to demonstrate ways of producing sheet
0:00:09.599,0:00:14.320
music in Emacs
0:00:10.880,0:00:18.400
using lily pond and maybe also convince
0:00:14.320,0:00:18.400
you to use Emacs for writing your scores
0:00:18.640,0:00:22.240
so I'll start with an overview of the
0:00:20.400,0:00:24.400
syntax for those who are new to using
0:00:22.240,0:00:26.800
text based notation
0:00:24.400,0:00:28.800
as a shallow dive into the deep bond of
0:00:26.800,0:00:30.800
lilies and lily pawns
0:00:28.800,0:00:32.960
and move on to showcase some of its
0:00:30.800,0:00:36.320
functionalities using orb mode
0:00:32.960,0:00:40.480
and lily point mode one disclaimer
0:00:36.320,0:00:44.079
however I am not a lillipon developer
0:00:40.480,0:00:46.800
so what is lillipond lillipond is
0:00:44.079,0:00:50.000
a file format and music engraving system
0:00:46.800,0:00:52.640
for producing high quality sheet music
0:00:50.000,0:00:55.120
it translates texture representations of
0:00:52.640,0:00:57.760
music to graphical objects
0:00:55.120,0:01:00.000
so it's similar to latex in that its
0:00:57.760,0:01:01.600
input format describes the visual
0:01:00.000,0:01:03.520
layouts of the score
0:01:01.600,0:01:05.119
using commands to define musical
0:01:03.520,0:01:07.760
expressions
0:01:05.119,0:01:08.640
commands begin with a backslash for
0:01:07.760,0:01:10.479
example
0:01:08.640,0:01:13.040
the formatter command as shown on the
0:01:10.479,0:01:13.920
left yields its graphical equivalents on
0:01:13.040,0:01:16.640
the right
0:01:13.920,0:01:19.119
the fermata symbol over the load b and
0:01:16.640,0:01:21.600
so on and so forth
0:01:19.119,0:01:23.119
it's also fully extensible like Emacs
0:01:21.600,0:01:25.600
allowing users to extend
0:01:23.119,0:01:26.640
and override lilipon's functionalities
0:01:25.600,0:01:29.840
using the scheme
0:01:26.640,0:01:31.600
scripting language it can be used for
0:01:29.840,0:01:34.479
early in contemporary music
0:01:31.600,0:01:35.200
tablature vocal music lead sheets and so
0:01:34.479,0:01:38.000
on
0:01:35.200,0:01:38.479
and above all it works with Emacs in
0:01:38.000,0:01:41.040
fact
0:01:38.479,0:01:43.119
lily pond ships with imax lisp libraries
0:01:41.040,0:01:45.920
including a major mode for editing lily
0:01:43.119,0:01:45.920
pawn files
0:01:47.360,0:01:50.560
so the input files are similar to source
0:01:50.000,0:01:52.560
files
0:01:50.560,0:01:54.079
they contain expressions formed with
0:01:52.560,0:01:55.840
curly braces
0:01:54.079,0:02:00.159
comments that start with the percent
0:01:55.840,0:02:00.159
sign and the code is indented
0:02:00.240,0:02:05.600
nodes are entered using lowercase
0:02:02.159,0:02:08.800
letters and rests with the letter r
0:02:05.600,0:02:11.039
in this case the lowercase r or r4
0:02:08.800,0:02:14.000
is the equivalence of a crotchet or
0:02:11.039,0:02:16.160
quarter note rest
0:02:14.000,0:02:18.480
durations are entered using numbers and
0:02:16.160,0:02:20.959
dots after the note name
0:02:18.480,0:02:22.640
and if you do not specify 1 the previous
0:02:20.959,0:02:24.560
duration is used
0:02:22.640,0:02:27.360
you can also tie notes together using
0:02:24.560,0:02:30.000
the tilde symbol
0:02:27.360,0:02:32.080
in fact you can input chords lyrics
0:02:30.000,0:02:33.920
embellishments and a lot more
0:02:32.080,0:02:36.160
so I encourage you to read the menu for
0:02:33.920,0:02:39.680
more information
0:02:36.160,0:02:42.000
now let's switch to a terminal window
0:02:39.680,0:02:43.840
so with lillipond installed let's create
0:02:42.000,0:02:50.560
a test file with the extension
0:02:43.840,0:02:52.400
ly and open it in Emacs
0:02:50.560,0:02:54.800
at the top of the file is the version
0:02:52.400,0:02:57.440
statement which tells lillipond which
0:02:54.800,0:03:00.959
version to use when compiling the file
0:02:57.440,0:03:03.680
here I'm using version 2.20.0
0:03:00.959,0:03:04.159
I've added the clef and time signature
0:03:03.680,0:03:07.440
so
0:03:04.159,0:03:07.440
let's add some notes
0:03:09.280,0:03:14.560
okay I'm going to close this now and
0:03:12.400,0:03:19.760
compile the file by running
0:03:14.560,0:03:25.040
lily pawns followed by the file name
0:03:19.760,0:03:25.040
okay so now let's view the outputs
0:03:27.360,0:03:32.239
okay so here's a more complex example
0:03:29.760,0:03:34.080
for randomizing node sequences
0:03:32.239,0:03:36.239
the idea is to create new reading
0:03:34.080,0:03:37.760
materials each time the code blocks are
0:03:36.239,0:03:40.640
evaluated
0:03:37.760,0:03:41.840
so as usual we begin with a header I've
0:03:40.640,0:03:45.200
added the title
0:03:41.840,0:03:47.920
and composer then we add the node
0:03:45.200,0:03:50.879
sequences to use in the composition
0:03:47.920,0:03:51.200
in this case s n is a note name just
0:03:50.879,0:03:54.400
like
0:03:51.200,0:03:54.959
a b c d and so on and stands for snare
0:03:54.400,0:03:58.239
drum
0:03:54.959,0:03:58.239
the percussion instruments
0:03:58.879,0:04:04.080
now here's a function that's going to
0:04:00.720,0:04:06.560
shuffle the notes in the table
0:04:04.080,0:04:08.799
and finally we expand the notes inside
0:04:06.560,0:04:10.799
the lillypawn source block
0:04:08.799,0:04:13.680
so whatever the function returns is
0:04:10.799,0:04:16.479
expanded inside the drums block
0:04:13.680,0:04:19.120
now let's press ctrl c ctrl c to view
0:04:16.479,0:04:19.120
the results
0:04:20.079,0:04:26.800
okay and if I run this again it should
0:04:23.280,0:04:26.800
create a new composition
0:04:26.840,0:04:31.360
great you can also audition a piece
0:04:29.680,0:04:34.320
using the midi command
0:04:31.360,0:04:36.560
which creates a midi file of the score
0:04:34.320,0:04:39.040
note also that the ob library
0:04:36.560,0:04:40.400
sorry the ob lillypoint library comes
0:04:39.040,0:04:42.560
with two modes
0:04:40.400,0:04:43.440
the one I'm using now is called arrange
0:04:42.560,0:04:45.440
mode
0:04:43.440,0:04:47.120
and is useful for assembling complete
0:04:45.440,0:04:49.360
scores
0:04:47.120,0:04:51.199
the basic mode on the other hand allows
0:04:49.360,0:04:53.360
you to mix text and music
0:04:51.199,0:04:55.440
by embedding lily pawn snippets and
0:04:53.360,0:04:57.840
export them using typical org mode
0:04:55.440,0:04:57.840
commands
0:05:00.240,0:05:04.320
now to demonstrate the basic mode in
0:05:02.320,0:05:05.120
action I'm going to export this document
0:05:04.320,0:05:08.240
to a pdf
0:05:05.120,0:05:10.639
file in this case the
0:05:08.240,0:05:11.919
filehead argument is required so you
0:05:10.639,0:05:15.280
have to provide one
0:05:11.919,0:05:15.280
and include the file name
0:05:15.600,0:05:20.479
again you can run the code and view the
0:05:17.919,0:05:20.479
results
0:05:22.160,0:05:30.080
here it is so now let's
0:05:25.840,0:05:30.080
export this to pdf file
0:05:33.680,0:05:41.440
and here it is what it generates
0:05:39.680,0:05:44.000
now I'm going to show you the workflow I
0:05:41.440,0:05:46.160
used to produce music books in Emacs
0:05:44.000,0:05:48.000
combining lily pond and latex for a
0:05:46.160,0:05:50.160
perfect marriage
0:05:48.000,0:05:53.039
I begin by sketching first draft of the
0:05:50.160,0:05:55.039
manuscript using pencil and paper
0:05:53.039,0:05:57.440
then I move to Emacs to input the notes
0:05:55.039,0:06:00.080
in a git repository
0:05:57.440,0:06:01.360
this is a typical source file it begins
0:06:00.080,0:06:03.199
with a stylesheet
0:06:01.360,0:06:05.440
where I set variables and layout
0:06:03.199,0:06:07.039
settings although in general there's no
0:06:05.440,0:06:09.280
need for tweaking the layout
0:06:07.039,0:06:11.199
unless you have specific requirements to
0:06:09.280,0:06:13.360
do so
0:06:11.199,0:06:15.520
the easiest way to compile the file from
0:06:13.360,0:06:19.280
max is by pressing ctrl c
0:06:15.520,0:06:21.199
ctrl l so let's do this now
0:06:19.280,0:06:23.759
and the compilation buffer will tell you
0:06:21.199,0:06:26.000
if there were any errors in the file
0:06:23.759,0:06:28.560
now to automate the process of compiling
0:06:26.000,0:06:31.280
several files and building the pdf
0:06:28.560,0:06:32.560
I use gnu make so all I have to do is
0:06:31.280,0:06:36.000
open the shell
0:06:32.560,0:06:37.840
and run the make command and don't worry
0:06:36.000,0:06:40.720
I'll provide a link to the source code
0:06:37.840,0:06:40.720
on the last slide
0:06:41.600,0:06:46.000
as I moved forward with the project I
0:06:43.600,0:06:48.720
found at least two things missing
0:06:46.000,0:06:50.479
one I had no access to a metronome at
0:06:48.720,0:06:52.960
least not from the editor
0:06:50.479,0:06:55.919
so I built one for casual use and made
0:06:52.960,0:06:58.000
it available in the melpa repository
0:06:55.919,0:06:59.039
I also missed bar numbers in the source
0:06:58.000,0:07:00.880
file this
0:06:59.039,0:07:03.199
is useful when going back and forth
0:07:00.880,0:07:04.479
between input and output files without
0:07:03.199,0:07:06.720
getting lost
0:07:04.479,0:07:08.479
so I wrote a command for toggling bar
0:07:06.720,0:07:10.000
numbers which I hope you can see on the
0:07:08.479,0:07:12.080
left
0:07:10.000,0:07:14.160
also some expressions are difficult or
0:07:12.080,0:07:17.039
slow to write on the keyboard
0:07:14.160,0:07:19.199
accents and tuplets for example so I use
0:07:17.039,0:07:20.160
template expansion extensively for this
0:07:19.199,0:07:23.280
purpose
0:07:20.160,0:07:23.280
mainly yes snippets
0:07:23.440,0:07:28.080
so what do I think well I think
0:07:25.680,0:07:31.039
lillypond can be a sharp paradigm shift
0:07:28.080,0:07:32.720
but people used to gui alternatives but
0:07:31.039,0:07:34.639
the results are impressive
0:07:32.720,0:07:36.960
and you don't have to dive too deeply to
0:07:34.639,0:07:38.880
start using lillypod
0:07:36.960,0:07:40.720
likewise the ability to extend the
0:07:38.880,0:07:42.400
software I think is especially appealing
0:07:40.720,0:07:45.199
for music professionals
0:07:42.400,0:07:46.560
enthusiasts composers and the academic
0:07:45.199,0:07:48.400
community
0:07:46.560,0:07:50.800
for example allowing users to create
0:07:48.400,0:07:53.120
alternative notation systems required in
0:07:50.800,0:07:56.160
non-western music traditions
0:07:53.120,0:07:58.400
and other non-conventional requirements
0:07:56.160,0:08:00.720
also lillypod and Emacs both have
0:07:58.400,0:08:04.639
extensive and well-written manuals
0:08:00.720,0:08:06.400
and active communities of users
0:08:04.639,0:08:08.800
but if you're still not sure where to
0:08:06.400,0:08:09.599
start and when to wedge your feet in the
0:08:08.800,0:08:12.160
deep
0:08:09.599,0:08:13.680
but warm pond of lilies lily pawns and
0:08:12.160,0:08:15.680
lily pond users
0:08:13.680,0:08:16.960
I invite you to contribute to my lilly
0:08:15.680,0:08:18.800
pond projects
0:08:16.960,0:08:20.720
which you can do so from the links on
0:08:18.800,0:08:22.800
the screen
0:08:20.720,0:08:24.639
so thank you all I look forward to your
0:08:22.800,0:08:27.840
comments and I hope you enjoy the rest
0:08:24.639,0:08:27.840
of the conference