[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.00,0:00:20.52,Default,,0000,0000,0000,,{\i1}36C3 preroll music{\i0} Dialogue: 0,0:00:20.52,0:00:24.18,Default,,0000,0000,0000,,Herald: Welcome back to the WikipakaWG, Dialogue: 0,0:00:24.18,0:00:33.00,Default,,0000,0000,0000,,live from Congress, wir haben Lucas da,\NLucas is back, Lucas was just here 15 Dialogue: 0,0:00:33.00,0:00:40.04,Default,,0000,0000,0000,,minutes ago, and now he's going to talk\Nabout LilyPond. LilyPond is like LaTeX but Dialogue: 0,0:00:40.04,0:00:45.23,Default,,0000,0000,0000,,for music notes and I hope you will have\Nfun! Dialogue: 0,0:00:45.23,0:00:52.39,Default,,0000,0000,0000,,Lucas: Yeah. Thank you. Yeah, so I just\Nwant to talk a bit about LilyPond, which Dialogue: 0,0:00:52.39,0:00:57.57,Default,,0000,0000,0000,,is a really cool program, in my opinion,\Nto turn basically plain text input, such Dialogue: 0,0:00:57.57,0:01:02.10,Default,,0000,0000,0000,,as the code you can see up here, into\Nbeautifully typeset musical scores, such Dialogue: 0,0:01:02.10,0:01:07.30,Default,,0000,0000,0000,,as down here, and that's actually the\Nresult of this code up here, so you can Dialogue: 0,0:01:07.30,0:01:12.32,Default,,0000,0000,0000,,try to find what belongs to what or\Nsomething. And, yeah, it’s free software Dialogue: 0,0:01:12.32,0:01:16.38,Default,,0000,0000,0000,,obviously, it takes plain text as input,\Nwhich means you can put the code in a git Dialogue: 0,0:01:16.38,0:01:21.14,Default,,0000,0000,0000,,repository and add comments and stuff,\Nit's all very nice, the output is PDF, or Dialogue: 0,0:01:21.14,0:01:25.94,Default,,0000,0000,0000,,MIDI if you want to listen back to it, or\Nyou can even integrate it into LaTeX or Dialogue: 0,0:01:25.94,0:01:30.94,Default,,0000,0000,0000,,Texinfo documents, such as these slides,\Nwhich are created with LaTeX beamer and Dialogue: 0,0:01:30.94,0:01:36.33,Default,,0000,0000,0000,,LilyPond in them, which is really funny\Ncombination and it works perfectly well. Dialogue: 0,0:01:36.33,0:01:41.08,Default,,0000,0000,0000,,So let's just start with some of the\Nsyntax elements in a LilyPond file, and Dialogue: 0,0:01:41.08,0:01:45.66,Default,,0000,0000,0000,,it's pretty straightforward to make a note\Nwith a certain note name, you write that Dialogue: 0,0:01:45.66,0:01:49.45,Default,,0000,0000,0000,,note name, so this is (I think) the\NAmerican note names, I'm not sure if the Dialogue: 0,0:01:49.45,0:01:55.17,Default,,0000,0000,0000,,English ones use different ones, but\NABCDEFGA are the note names, and you write Dialogue: 0,0:01:55.17,0:02:00.05,Default,,0000,0000,0000,,the letter and you get a note in return,\Nand the relative mode here means that each Dialogue: 0,0:02:00.05,0:02:04.32,Default,,0000,0000,0000,,note is going to be as close as possible\Nto the previous one, for example this A Dialogue: 0,0:02:04.32,0:02:09.39,Default,,0000,0000,0000,,here at the beginning and the one at the\Nend, that's the same input, but you can Dialogue: 0,0:02:09.39,0:02:13.68,Default,,0000,0000,0000,,see they resulted in different notes, so\Nthis is one octave higher than the Dialogue: 0,0:02:13.68,0:02:18.75,Default,,0000,0000,0000,,original one, because that's the note\Nthat's closest to the preceding note, and Dialogue: 0,0:02:18.75,0:02:23.25,Default,,0000,0000,0000,,to control the duration of a note, you put\Na number after it, for example this is a Dialogue: 0,0:02:23.25,0:02:27.31,Default,,0000,0000,0000,,quarter note, so you put a number four\Nafter it, this is a sixteenth note, so you Dialogue: 0,0:02:27.31,0:02:31.39,Default,,0000,0000,0000,,put a sixteen after it, and if it's a\Ndotted note, such like this one, you put a Dialogue: 0,0:02:31.39,0:02:35.86,Default,,0000,0000,0000,,literal dot after it. So there's a fair\Nbit of ASCII art in there, which is kind Dialogue: 0,0:02:35.86,0:02:40.00,Default,,0000,0000,0000,,of cute, and if it's more complicated,\Nlike the triplets here at the end, you Dialogue: 0,0:02:40.00,0:02:45.53,Default,,0000,0000,0000,,write something like this \tuplet, so\Nthat's kind of inspired by LaTeX syntax, Dialogue: 0,0:02:45.53,0:02:52.92,Default,,0000,0000,0000,,this backslashes and braces business, so\Nthis started out, actually, as a – I Dialogue: 0,0:02:52.92,0:02:56.90,Default,,0000,0000,0000,,assume horrible – hack to make actually\NLaTeX produce these scores, and then Dialogue: 0,0:02:56.90,0:03:00.64,Default,,0000,0000,0000,,eventually they realized that's not going\Nto work, we should actually write this as Dialogue: 0,0:03:00.64,0:03:05.51,Default,,0000,0000,0000,,a dedicated program in C or C++ (I don't\Nremember which one), but the syntax kind Dialogue: 0,0:03:05.51,0:03:09.61,Default,,0000,0000,0000,,of stayed similar, at least, in\Nremembrance of that. And let's go back to Dialogue: 0,0:03:09.61,0:03:16.98,Default,,0000,0000,0000,,a bit more syntax, as I said, in relative\Nmode the notes try to stay close together, Dialogue: 0,0:03:16.98,0:03:21.12,Default,,0000,0000,0000,,for example if I would just write C after\Nthis G, it would be the upper C up here, Dialogue: 0,0:03:21.12,0:03:25.04,Default,,0000,0000,0000,,because that's closer than the lower C\Ndown here, and to get the lower C, which Dialogue: 0,0:03:25.04,0:03:28.49,Default,,0000,0000,0000,,is correct in this melody (if you can\Nidentify it that's an Easter Egg for you), Dialogue: 0,0:03:28.49,0:03:32.86,Default,,0000,0000,0000,,I put a comma after it, and to then jump\Nback to the upper G instead of the lower Dialogue: 0,0:03:32.86,0:03:36.72,Default,,0000,0000,0000,,one, I put an apostrophe after it, which\Ndepending on the font – in this one it Dialogue: 0,0:03:36.72,0:03:40.34,Default,,0000,0000,0000,,works really well, it's kind of the same\Ncharacter, just at the bottom and at the Dialogue: 0,0:03:40.34,0:03:44.41,Default,,0000,0000,0000,,top the line. In German the apostrophe is\Nalso sometimes called the Hochkomma, the Dialogue: 0,0:03:44.41,0:03:49.54,Default,,0000,0000,0000,,upper comma, so it kind of makes sense\Nthat you have these two characters to jump Dialogue: 0,0:03:49.54,0:03:53.26,Default,,0000,0000,0000,,up and down between octaves, and then you\Nstart to get a feel eventually when you Dialogue: 0,0:03:53.26,0:03:56.77,Default,,0000,0000,0000,,need them and when you don't need them.\NBut otherwise you can just compile your Dialogue: 0,0:03:56.77,0:03:59.88,Default,,0000,0000,0000,,LilyPond code as often as you want and see\Nif it's right or not, because it doesn't Dialogue: 0,0:03:59.88,0:04:06.37,Default,,0000,0000,0000,,take that long. And if you need to modify\Nthe notes further, so if you have flat or Dialogue: 0,0:04:06.37,0:04:12.61,Default,,0000,0000,0000,,sharp notes, you can teach LilyPond to\Nunderstand “G sharp”, for example, but no Dialogue: 0,0:04:12.61,0:04:15.54,Default,,0000,0000,0000,,one will understand your score, because\Nthe standard notation in LilyPond is to Dialogue: 0,0:04:15.54,0:04:20.24,Default,,0000,0000,0000,,add either an -is or an -es to the end of\Nthe note, which is exactly what these Dialogue: 0,0:04:20.24,0:04:24.54,Default,,0000,0000,0000,,notes are called in German, which is very\Nconvenient if you're German, like me – the Dialogue: 0,0:04:24.54,0:04:28.82,Default,,0000,0000,0000,,manual says it's Dutch notation or\Nsomething – so fis means the F sharp, but Dialogue: 0,0:04:28.82,0:04:32.59,Default,,0000,0000,0000,,what's important is, this doesn't\Nliterally mean: put an F and then put a Dialogue: 0,0:04:32.59,0:04:36.68,Default,,0000,0000,0000,,sharp right in front of it, it means,\Nlogically, in the music, there's an F Dialogue: 0,0:04:36.68,0:04:41.49,Default,,0000,0000,0000,,sharp, but then LilyPond can look, for\Nexample here it just puts an F, because Dialogue: 0,0:04:41.49,0:04:47.46,Default,,0000,0000,0000,,the F sharp is already part of the key\Nsignature, this whole snippet is in B Dialogue: 0,0:04:47.46,0:04:53.62,Default,,0000,0000,0000,,minor, so it has to have… no, it's in E\Nminor, sorry, so it has to have F sharp Dialogue: 0,0:04:53.62,0:04:57.52,Default,,0000,0000,0000,,already and we don't need to put one here.\NOn the other hand, here we have an F, and Dialogue: 0,0:04:57.52,0:05:02.38,Default,,0000,0000,0000,,in the syntax, in the input that's just an\NF, but then LilyPond knows, because the Dialogue: 0,0:05:02.38,0:05:07.14,Default,,0000,0000,0000,,key signature has an F sharp, it actually\Nneeds to put a natural sign here to cancel Dialogue: 0,0:05:07.14,0:05:12.24,Default,,0000,0000,0000,,that out. So what you put in is kind of\Nthe logical, real music, so to speak, and Dialogue: 0,0:05:12.24,0:05:16.24,Default,,0000,0000,0000,,then it's LilyPond’s job to figure out,\Nwhere do I need to put these accidentals, Dialogue: 0,0:05:16.24,0:05:21.10,Default,,0000,0000,0000,,where do I need to put these natural\Nsigns, and this depends even on which Dialogue: 0,0:05:21.10,0:05:25.04,Default,,0000,0000,0000,,century’s style you're trying to emulate\Nand which instrument, like sometimes these Dialogue: 0,0:05:25.04,0:05:29.63,Default,,0000,0000,0000,,things are in parentheses and sometimes\Nthey're not, but in general all of this is Dialogue: 0,0:05:29.63,0:05:34.01,Default,,0000,0000,0000,,LilyPond’s job, you put in just the music\Nand LilyPond makes a beautiful score for Dialogue: 0,0:05:34.01,0:05:37.70,Default,,0000,0000,0000,,you, that's the job, at least. If that\Ndoesn't work out, you can tweak the Dialogue: 0,0:05:37.70,0:05:41.96,Default,,0000,0000,0000,,output, and here I have some… a bit\Nsillier tweaks, for example I wanted a Dialogue: 0,0:05:41.96,0:05:47.29,Default,,0000,0000,0000,,larger note head, for some reason, and the\Nnote head is a character in a special font Dialogue: 0,0:05:47.29,0:05:51.95,Default,,0000,0000,0000,,which LilyPond ships and embeds in this\NPDF file, and if I say, I would like to Dialogue: 0,0:05:51.95,0:05:56.97,Default,,0000,0000,0000,,add 4 to the font size, then I get a\Nlarger note head, at least for this one Dialogue: 0,0:05:56.97,0:06:00.76,Default,,0000,0000,0000,,note. Or I can say I would like the color\Nof all the note heads to be in dark red Dialogue: 0,0:06:00.76,0:06:06.53,Default,,0000,0000,0000,,now, or this tie, which would normally be\Ndownwards, like this one, it should now go Dialogue: 0,0:06:06.53,0:06:11.66,Default,,0000,0000,0000,,upwards, because I've overridden it here,\Nand I can even say – so this tie is Dialogue: 0,0:06:11.66,0:06:15.86,Default,,0000,0000,0000,,actually a cubic Bezier curve, so it's\Ngoing to have four control points, and I Dialogue: 0,0:06:15.86,0:06:20.95,Default,,0000,0000,0000,,would like to add these four pairs of\Noffsets to the four control points, to Dialogue: 0,0:06:20.95,0:06:26.86,Default,,0000,0000,0000,,make this kind of looping shape – that's\Nobviously very silly, but sometimes this Dialogue: 0,0:06:26.86,0:06:33.61,Default,,0000,0000,0000,,can be useful, like if you have a score\Nwhere you have a long… articulation bow Dialogue: 0,0:06:33.61,0:06:36.61,Default,,0000,0000,0000,,(I'm not sure what it's called in English,\Nactually), but this kind of thing over a Dialogue: 0,0:06:36.61,0:06:42.23,Default,,0000,0000,0000,,long period of notes, where it makes like\Na Z shape or an S shape, and LilyPond Dialogue: 0,0:06:42.23,0:06:45.94,Default,,0000,0000,0000,,can't figure that out by itself, then you\Ncan tell it, I would like the curve to Dialogue: 0,0:06:45.94,0:06:51.54,Default,,0000,0000,0000,,look exactly like this, and kind of tweak\Nthe output as much as you want. And you Dialogue: 0,0:06:51.54,0:06:55.60,Default,,0000,0000,0000,,can actually go even further than this –\Ndoes anyone in the audience recognize this Dialogue: 0,0:06:55.60,0:07:01.39,Default,,0000,0000,0000,,kind of syntax here? This kind of –\N(audience member: Lisp!) Yes! Lisp, it is Dialogue: 0,0:07:01.39,0:07:04.100,Default,,0000,0000,0000,,a dialect of Lisp called Scheme, so you\Ncan embed whole Scheme programs in your Dialogue: 0,0:07:04.100,0:07:09.37,Default,,0000,0000,0000,,score, so here I've said the color of each\Nstem should be controlled by this lambda, Dialogue: 0,0:07:09.37,0:07:13.03,Default,,0000,0000,0000,,this anonymous function, which takes a\Ngraphical object, in this case that's Dialogue: 0,0:07:13.03,0:07:17.92,Default,,0000,0000,0000,,going to be the stem, and compare the\Ndirection of that to “up”, if it's “up”, Dialogue: 0,0:07:17.92,0:07:22.74,Default,,0000,0000,0000,,then return red, otherwise return blue, so\Nnow I have a score where all the stems are Dialogue: 0,0:07:22.74,0:07:27.44,Default,,0000,0000,0000,,blue if they point down and red if they\Npoint up, which is completely pointless, Dialogue: 0,0:07:27.44,0:07:34.44,Default,,0000,0000,0000,,but it's very funny. And you can go much\Nfurther than this, like, this is some Dialogue: 0,0:07:34.44,0:07:37.70,Default,,0000,0000,0000,,monstrosity I wrote because I wanted to\Nhave this score, where you can see, in the Dialogue: 0,0:07:37.70,0:07:44.17,Default,,0000,0000,0000,,right hand, here, you have the same notes\Ntwice, once in the baseline and then one Dialogue: 0,0:07:44.17,0:07:48.36,Default,,0000,0000,0000,,octave higher, and it's just always one\Noctave higher, and for some reason I could Dialogue: 0,0:07:48.36,0:07:53.23,Default,,0000,0000,0000,,not be bothered to actually add the second\Nnote to each of the eight chords here, Dialogue: 0,0:07:53.23,0:07:57.56,Default,,0000,0000,0000,,which would have taken, like, two minutes\Nat most, and instead I spent, like, one Dialogue: 0,0:07:57.56,0:08:03.06,Default,,0000,0000,0000,,and a half hours putting together this\Ncode, which takes an arbitrary melody and Dialogue: 0,0:08:03.06,0:08:09.65,Default,,0000,0000,0000,,goes through it and for each note creates\Na copied note which is somewhere here, Dialogue: 0,0:08:09.65,0:08:14.78,Default,,0000,0000,0000,,yeah, it creates a copy of the note, then\Nsets the pitch to something else and Dialogue: 0,0:08:14.78,0:08:18.67,Default,,0000,0000,0000,,copies some of the articulations but not\Nothers, so this has a second tie here but Dialogue: 0,0:08:18.67,0:08:22.45,Default,,0000,0000,0000,,it should not have a second fermata sign,\Nand in the end you have this function and Dialogue: 0,0:08:22.45,0:08:28.74,Default,,0000,0000,0000,,you can even put it on StackOverflow or\Nsomething, and that kind of represents Dialogue: 0,0:08:28.74,0:08:33.03,Default,,0000,0000,0000,,what I really like about LilyPond, that it\Nrepresents this whole spectrum between Dialogue: 0,0:08:33.03,0:08:37.66,Default,,0000,0000,0000,,just simple music transcription and full-\Nblown programming, so if I get home at the Dialogue: 0,0:08:37.66,0:08:41.35,Default,,0000,0000,0000,,end of the day, and I'm really tired and\Ndon't have much mental capacity, I can Dialogue: 0,0:08:41.35,0:08:45.49,Default,,0000,0000,0000,,just take some public domain score and\Ntranscribe it and just say, this is a D, Dialogue: 0,0:08:45.49,0:08:49.74,Default,,0000,0000,0000,,this is an F sharp, this is a quarter\Nnote, and so on, and it doesn't take much Dialogue: 0,0:08:49.74,0:08:53.91,Default,,0000,0000,0000,,work, but if I want, if I feel up to it or\Nif I want to have some fun, then I can Dialogue: 0,0:08:53.91,0:08:57.79,Default,,0000,0000,0000,,also do the whole programming thing and\Nwrite monsters like this and completely Dialogue: 0,0:08:57.79,0:09:02.28,Default,,0000,0000,0000,,bend the score to my will, make it look\Nexactly how I want to, and that's what I Dialogue: 0,0:09:02.28,0:09:07.28,Default,,0000,0000,0000,,find really neat about LilyPond, and if\Nyou want to find out more about that, Dialogue: 0,0:09:07.28,0:09:10.72,Default,,0000,0000,0000,,there are two manuals here, they're really\Nwell written, I basically read them front Dialogue: 0,0:09:10.72,0:09:14.52,Default,,0000,0000,0000,,to back a while ago, and they have lots of\Nexamples as well. The LilyPond snippet Dialogue: 0,0:09:14.52,0:09:19.26,Default,,0000,0000,0000,,repository is even cooler, it's just a\Nhuge collection of tiny snippets of Dialogue: 0,0:09:19.26,0:09:23.18,Default,,0000,0000,0000,,LilyPond code, and all of them are CC0, so\Nyou can use them however you want without Dialogue: 0,0:09:23.18,0:09:26.61,Default,,0000,0000,0000,,worrying about attribution or anything,\Nand you can even try it out in your Dialogue: 0,0:09:26.61,0:09:30.54,Default,,0000,0000,0000,,browser, on lilybin.com, without\Ninstalling anything, and if you're Dialogue: 0,0:09:30.54,0:09:33.89,Default,,0000,0000,0000,,wondering, “wait, doesn't that mean I'm\Nrunning arbitrary code on someone else's Dialogue: 0,0:09:33.89,0:09:39.81,Default,,0000,0000,0000,,computer?” – it's not my computer,… I\Ndon't know, knock yourself out, I guess, Dialogue: 0,0:09:39.81,0:09:44.28,Default,,0000,0000,0000,,but that's all I have already, I'm out of\Ntime, but thank you for indulging me! Dialogue: 0,0:09:44.28,0:09:46.12,Default,,0000,0000,0000,,{\i1}applause{\i0} Dialogue: 0,0:09:46.12,0:09:59.48,Default,,0000,0000,0000,,{\i1}postroll music{\i0} Dialogue: 0,0:09:59.48,0:10:13.00,Default,,0000,0000,0000,,Subtitles created by c3subtitles.de\Nin the year 2020. Join, and help us!