A blog about music engraving and LilyPond notation software.

“Creating anything you can imagine with Finale”

In his recent post Janek Warchoł expressed an uneasy feeling about the exaggerated statements in a post on the Finale Blog. In a comment on the lilypond-user mailing list Karl Hammar made a few striking remarks, pointing out that the real issue with that Finale post isn’t the attitude but its content. Today I will show you how to use LilyPond to easily recreate what was apparently quite laborous to do using Finale.

First of all let me stress that I do not intend in any way to question the value of the featured “Elements of Rhythm” books by David Aldridge. I have the strong impression they are carefully realized and very valuable publications. But apparently the author, whose enthusiasm drove that whole project, was led to believe that he worked with the best, if not the only tools capable of managing the complexity of his tasks. On his own blog he states that “when it came time to do every thing myself in real print, I owe my life’s work to Finale Music.“

To a major extent the book consists of the systematic exploration of rhythmic combinations and patterns. It is exactly this systematic approach that makes the use of free, text based software vastly more efficient than using expensive WYSIWYG programs. Therefore it is somewhat irritating to read about the “mind-blowing” capabilities of Finale, because as a regular LilyPond user I have come to expect such things – and more – as normal. Maybe a welcome opportunity to consider again that they aren’t normal, but mind-blowing…

The 0/1 tables were created in InDesign, the layout program where all the Finale files were eventually imported and placed as TIFF files.

Is this really the sad reality? You have to export your Finale scores to a bitmap file format – which means decreasing their quality – and open them in a page layout program where they have to be manually aligned? That’s hard to believe. I would create these examples either as a whole page in LilyPond or as neatly cropped pdf files (with the -dpreview option) and include them in a LaTeX file where they can be aligned automatically. This even allows later modifications of the layout without requiring countless manual readjustments.

The single staff music measures were created to present the patterns generated in the combination tables. Each vertical measure line had to be aligned manually to create a symmetrical appearance on the page. The multi-staff music measures in Vol. II were created to present identical patterns written in different metric contexts (e.g., 4/2, 4/4, 4/8, 4/16, 4/32).

What a task: manually aligning hundreds of vertical lines :-(. I’d be highly interested in knowing what you’d have to do if someone decides to release the book with another page size, say as an e-book edition…

Let’s have a look at exercise 19 on this page from the book and re-create that with LilyPond. It is an instance of “identical patterns written in different metric contexts“, the versions being printed below each other and „aligned manually”. With LilyPond I can write this as one polymetric system, perfectly alining the staves – by default! (In fact, if you look closely you’ll notice that the first measures in the original example are actually slightly misaligned, due to the different width of the time signatures – not an issue with LilyPond version.)

To achieve that result I defined the pattern in a variable once and used it five times, simply applying \shiftDurations to perform the rhythmic transformations and \scaleDurations to align them again correctly afterwards.

Exercise 19, recreated with LilyPond (click to view full-size PDF)

You can inspect what I’ve done by downloading the heavily commented source file for that score (if you’d like to compile it yourself) or view it online. The code is straightforward and not exactly complicated. And (especially) it is totally robust. To show that off I created a second version of the example on A4 landscape paper with larger print size by inserting two lines in the source code:

#(set-default-paper-size"a4landscape")#(set-global-staff-size28)

which results in this PDF file, notably with perfect automatic alignment again!

\version"2.16.2"% Set the global layout parameters.% (For this example we don't actually need them)\paper{% Remove the default indentation of the first systemindent = 0}\header{% What title should the PDF file display
pdftitle = "David Aldrige: Elements of Rhythm, Vol. II, Ex. 19"}% Define a reusable variable for the pattern.% This could also be done more generic using a Scheme function,% but I want to keep it simple for this example.pattern = {% The manual Beams will yield warnings for the% half note and crotchet versions (of course)% but we can happily ignore them\mark19c2[ r r c] r r r
c2[ r r c r r c]
c2[ r r crc] rc2[ r r cr c c]
}numbers = {s2*7-\markup"7.73"s2*7-\markup"7.74"s2*7-\markup"7.75"s2*7-\markup"7.76"}% Define common ("global") elementsglobal = {% By default the stems would go down (-> mimick the model)\stemUp% Define the time signature\time7/2% Make the beams divided\setsubdivideBeams = ##t\setbaseMoment = #(ly:make-moment 1 16)}% Prepare the five versions of the patternI = {% _use_ the global elements\global% For the first version simply _use_ the pattern\pattern}II = {\global% Display a different time signature\setDrumStaff.timeSignatureFraction = 7/4% Change the half notes to crotchets\shiftDurations#1#0% make them use double space\scaleDurations2/1% use the modified pattern\pattern}III = {\global\setDrumStaff.timeSignatureFraction = 7/8\shiftDurations#2#0\scaleDurations4/1\pattern}IV = {\global\setDrumStaff.timeSignatureFraction = 7/16\shiftDurations#3#0\scaleDurations8/1\pattern}V = {\global\setDrumStaff.timeSignatureFraction = 7/32\scaleDurations16/1\shiftDurations#4#0\pattern}% Override some layout parameters\layout{% We can override for different contexts individually\context{\Score% remove connecting line at system start% (note that we don't have to do that explicitly% for the rest of the system because we define% the staves as individual staves later)\overrideSystemStartBar#'stencil = ##f% Let rehearsal marks be printed as numbers with a boxmarkFormatter = #format-mark-box-numbers}\context{\DrumStaff% It is simple to use any number of stafflines\overrideStaffSymbol#'line-count = #1}}% Define our score structure\score{% Several layers in parallel<<% Five DrumStaff instances with their corresponding patterns\newDrumStaff\drummode{\overrideBeam#'stencil = ##f\I}\newDrumStaff\drummode{\overrideBeam#'stencil = ##f\II}\newDrumStaff\drummode{\III}\newDrumStaff\drummode{\IV}\newDrumStaff\drummode{\V}% One additional context without staff for the numbers\newDynamics\numbers>>% This actually triggers creating a print layout\layout{}}

The most significant aspect of Vol. I’s construction was that Finale let me take an exhaustively detailed combination table in Vol. I, comprised of quarter rests and quarter notes, and translate it into 8th, 16th, and 32nd rest/note values. This made it possible to accomplish in a few hours what would have taken me WEEKS to re-write by hand.

You can probably guess by now that the very idea of re-writing patterns by hand must seem absurd to a LilyPond user. With LilyPond’s variable reuse and simple commands this can be done more elegantly, without introducing redundancy which can heavily fall back on my toes if I ever need to make a modification or correction.

The biggest challenge with Vol. II was manually aligning measures one on top of another and keeping track of the patterns’ order as I copied and pasted sequences from Vol. I’s single music staffs, four measures at a time. But just the fact that it could be done was mind-blowing…

Seeing an author who doesn’t have the right tools for such a systematic exercise collection makes me feel sorry: I definitely wouldn’t want to copy & paste (and then align) countless sequences manually, which requires extreme care not to mix things up… I don’t quite see why someone would call that “mind-blowing”.

This single exercise I produced with LilyPond was meant to be as simple as possible, and I think it would already make for a striking example. But if I were to produce that book I would invest some more thought to make the functionality more versatile and generate all exercises programmatically. I already had in mind to someday write a post about generating LilyPond sources programmatically but lacked a suitable example. Now I’ve got that “forward pass” and will write a script that generates the LilyPond input for the whole set of “Event Point Patterns” in a few dozen lines of Python code. Be sure not to miss that!

The result? Performing musicians and educators now have a complete list of the fundamental building block rhythm patterns that all the larger patterns originate from. Music researchers can also use this list for studies such as music cognition, coordination and speech patterns. I truly could not have finished this project without Finale. Its productivity horsepower is staggering.

Judging from the two pages offered for preview I think the first two sentences of this comment are very true – congratulations on completing this valuable edition! However, the last two sentences sound naive. When I first read Janek’s post I took it as he probably meant it, but Karl’s comment made me have a closer look – investigating the topic myself led me to think that Janek probably was too polite with Finale. I’m sure that this project would have been realized significantly easier and faster with LilyPond, LaTeX and Python.

Considering that

you don’t need to care about manual alignment at all

your layout is robust for future changes

you can generate repetitive, systematic material programmatically

modifications or corrections are automatically propagated throughout the book

I don’t really see a common ground for a serious comparison to Finale’s “staggering productivity horsepower“. And I didn’t even scratch the idea of using version control (in this sense, not by merely saving different versions of a file), which actually boosts productivity by an order of magnitude.

The source code I presented for recreating one example and the idea of writing external scripts may seem daunting for people with only a Finale/Sibelius background. But we are talking about professional work after all, not about stuff that should be accessible for newbies. I’m sure David Aldridge could only accomplish that edition with a considerable amount of Finale know-how too.

Considering the scope of this project I imagine that one could learn LilyPond, LaTeX and Python from scratch and still be better off with it.

i am sure there are plenty.
i for my Part am currently using that combination for a (university Level) critical edition and my thesis. for These projects I’ve started developing the lilyglyphs and musicexamples Latex packages (see openlilylib.org)

Wow, just wow. This isn’t so much a “victory” of Lilypond over Finale (though it is) but more a situation where I feel kind of bad for Aldridge for having spent so much more time using a tool that wasn’t as ideally suited to the task as Lilypond is. I mean setting aside personal feelings on which program is better, this kind of simple pattern manipulation is right up Lilypond’s alley. And the fact that he had to import tiff files into InDesign to make it work just breaks my heart! LaTeX would have made the process so much easier, and based on the samples I’ve now seen, would have looked a whole lot better.

Thanks.
Then you surely want to make sure not to miss the sequel. This was the ‘forward pass’, part two and three will be the execution 😉

But seriously, you make a good point one shouldn’t forget: These posts prove the superiority of LilyPond in this particular area and can’t be taken literally for a proof of its general superiority. Of course there are tasks that would be much better handled with other programs. For example if I had to provide just-in-time arrangements (and their revision) for studio work, or if a critical part of the task was to deliver punching audio files other tools are probably better suited.
But hey, on the Finale blog they have this series “Finale vs. Sibelius” where they present things they assume Finale can do better than its competitors, that’s a fair deal. The problem with this is just that the thing with the rhythm patterns was meant to be one of them ;-).

“You can probably guess by now that the very idea of re-writing patterns by hand must seem absurd to a LilyPond user.”

A quick comment on that — the quote from Aldridge says that he did NOT have to rewrite the patterns by hand in Finale: “… Finale let me take an exhaustively detailed combination table… and translate it…. This made it possible to accomplish in a few hours what would have taken me WEEKS to re-write by hand.”

There’s more than enough Finale fail here, no need to invent problems that didn’t actually happen. Accuracy counts: if it sounds like you’re stretching so hard to find fault that you even find faults that aren’t real, it hurts the credibility of the justified criticisms.

You’re not really right although your point is.
I didn’t invent a problem but probably failed to express my intention clearly enough. Of course Aldridge didn’t have to re-write the patterns by hand. The point is that he was so happy discovering that incredible feature. My point is that a LilyPond user wouldn’t even start to think of having to do such a thing because he has come to expect this kind of behaviour as standard.

I see nothing in Aldridge’s words to support the idea that he ever felt he would have to re-enter the notes by hand for the new durations, or that he “discovered” this “incredible” feature. It looks to me like he just used it. He doesn’t gush over the feature at all. He compares it against the labor of writing with paper and pencil (which is how I read “by hand”).

I think you’re putting words in his mouth.

He gives himself more than enough rope for the noose by saying “I truly could not have finished this project without Finale.” There’s really no need to read the other, relatively innocuous, statement in the harshest possible light. So Lilypond has \shiftDurations and \scaleDurations, and Finale has Utilities Menu > Change > Note Durations. Big whoop. That’s no great competitive edge for Lilypond. The edge is in the nonsense he had to do with manually aligning bars etc.

In theory, Lilypond is much better for procedurally generating educational materials than Finale or Sibelius. In practice, both Finale and Sibelius come with worksheet generators that procedurally generate graded theory worksheets with answer sheets. Someday, when I’ve learned a little Scheme and more Lilypond, I’d like to create a source for theory worksheets in Lilypond that can be used and modified by other music educators.

Yeah, I even found this post on the Finale Blog to be a little cringe-worthy. Nothing that he did is necessarily difficult to do in Finale (although the method he chose was far more complicated than necessary). I kept expecting the writer of the Finale Blog to end with something like, “[blah, blah, praise of this user’s efforts, congrats, etc…] but here’s an alternative way that might even be faster if you’d like to tackle a similar project.”

Oh, and you can export in so many other image formats with Finale (PDF, EPS, SVG, PNG, TIFF, JPEG, etc). Not sure why he chose TIFF.

I used Finale for two projects separated by a year’s time. Upon starting the second Finale project, I had forgotten nearly all the formatting knowledge I acquired the during the first project. I could not remember which pull-down menu contained what I needed (much to the dismay of my hand holding the mouse). Since then I have used only LilyPond. I have spent a considerable amount of time learning LilyPond. Whenever I solve a technical problem in LilyPond, the solution is saved in a .ly document, and I can access that solution in the future. The online documentation for LilyPond has been been extremely helpful. My understanding of LilyPond and Scheme syntax continues to grow as I use LilyPond, though I am still light-years away from the gurus of lilypond-user. My conclusion: learning Finale is learning how to use the Finale GUI, and learning LilyPond is learning, in the most basic sense of the word, composition.