lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Time bracket notation for very large scale compositions


From: Andrew Culver
Subject: Re: Time bracket notation for very large scale compositions
Date: Fri, 9 Apr 2021 19:36:55 +0000

Tom

Your comparison between a .ly - scheme - API’s and HTML/JS is very helpful. And it highlights the issue I raised about the future usability of any set of technologies. At my company iLiv our products run in browsers, currently we use a React-Relay-GrapQL-PostgreSQL stack on AWS. 10 years ago it was Coldfusion/Java - SQL on Windows servers we owned and kept in a data center (they now reside cold and dark in my basement). With a team of developers, iLiv can afford to rewrite code constantly, and to attract new hires, we have to use newer tools anyway. But the maintenance of that huge world of constantly shifting npm modules is daunting.

I don’t want to get into that situation with my music-making, it will take too much time away from the pleasurable activities.  Truth is, I don’t want to learn Python any more than get into the weeds of LilyPond. I have considered just positioning SVG shapes inside a bunch of HTML divs and leaving it at that.

Still, LilyPond attracts, so I am looking forward to hearing from those who love it and understand my situation. I hope that with a small set of well-chosen commands, techniques, tactics, and the odd little trick, I can create a highly selective build system that will give me all the notational capabilities I need for years to come.

Regards,

Andrew Culver


On Apr 9, 2021, at 15:02, Tom Brennan <tjb1982@gmail.com> wrote:

Hi Andrew

I'm a professional software engineer, and I recently asked myself most of the questions you're asking here when evaluating Lilypond, and ultimately, I decided that for my usecases, it made more sense to use Lilypond, because I would make a lot of use of the musical modeling/abstractions that do, as you intuited, result in highly indirect control of the formatting that's ultimately drawn.

Based on what you've written, my feeling is that you *could* choose to take your existing programs/scripts together with a reasonable font, and generate SVG and/or postscript files, et al., on your own. It's obviously a lot of effort to make that work, and takes a different skillset, but you could, eg, easily pipe output from a C program to the stdin of a python script (or any general purpose language that has good library support for the image/document format you're targeting). This will allow you to create a much more manuscript-like experience and thought process than Lilypond provides as its sort of "happy path," which I think of as more like a declarative markup language (.ly) with an optional scripting language (guile scheme) and APIs, a lot like what we have in a web browser with HTML/JS.

That said, everything you can imagine doing with a general purpose programming language is (probably) possible with Lilypond, but depending on how unconventional your scores will need to look, or how precisely you need the notation to be laid out, it might require more effort to learn how the Lilypond architecture, lifecycles, interfaces, etc., work, which is not trivial. But the community is great and your questions will be answered promptly and thoughtfully. It does take time to learn, though; there's no getting around that.

Tom


On Fri, Apr 9, 2021, 14:20 Shane Brandes <shane.brandes@gmail.com> wrote:
Greetings Andrew Culver,

You have posted a pretty broad swathe of questions to the LilyPond Community. I suspect people will likely give a few responses. My personal use case is limited in comparison to things you might be undertaking. The Thalberg piano concerto is the largest thing I ever have typeset with Lilypond, and it ate that for breakfast. I would not describe myself as a power user and therefore don't have answers to many of the questions. However, to this point I have never seen someone show up on the list and find out something can't be done. It might take the extensibility provided by the magic of Scheme, which is a programming language, used to extend lilyponds abilities. As far as future proofing, Lilypond has an automated code updating program, which does very well with making sure the old code is compliant with the current version's standards. The only time that might break is if something very kludgy was done. Personally, I have only broken something once, but that was because many years ago I was using something absolutely not in the way it was intended to achieve some end. In terms of fussiness of laying out objects in a correct way, Lilypond does these things out of the box in a way that other programs I have used just don't approach. So for a very great percentage of things tweaking items (manually moving) is not necessary. And there are ways for working around tweaking bits of code without having to compile a whole vast document. So in any event, it is likely LilyPond is an excellent candidate for your needs, unfortunately I can't give all the answers, and really am looking forward to whatever discussion your missive generates. It is always interesting to learn what this program is capable of.

kind regards,
Shane Brandes

On Fri, Apr 9, 2021 at 12:18 PM AHF <culver@anarchicharmony.org> wrote:
Hello LilyPeople,

I am looking into using LilyPond for future works. What I like about it is the text input, which makes it very easy to integrate with the collection of C programs and PostgreSQL functions I use to generate and manage music for large-scale pieces. (I’m on a Mac.)

I have been doing this since the late 1980’s, for John Cage's operas, installations, and films, and for my own large-scale orchestral works, such as “Ocean 1-133” for 150 musician soloists over 90 minutes — see the Merce Cunningham work “Ocean" if you are interested.

The parts for Ocean 1-133 (more than 3000 pages) were pulled from the database and formatted using C code into the P-field file format of the wonderful old Score program by Leland Smith. Like LilyPond, this format is expressed with simple text files. Given the abandonment of Score and the vibrancy of LilyPond, I want to know if I should be using LilyPond.

The example below is from one of Cage’s Number pieces, demonstrating Time Bracket notation. The important challenges for a notation program are:
- Each time bracket is centered on the page, and the system is only as long as necessary.
- No barlines.
- Notes within the time bracket are distributed evenly horizontally. There is no notion of tempo or meter.
- Whole note noteheads - or any notehead I want, free of any metric constraints.
- Ample vertical spacing between time bracket systems.
- Horizontally centered headers and footers (not shown).
- Sometimes one piece runs over several pages (a “piece” is a set of time brackets for one player).


Score had no problem doing this because fundamentally it was a CAD program augmented by musical knowledge. With the P-field format, you essentially cut out the musical knowledge layer. You got to put beautiful-looking music symbols wherever you wanted them. From what I can tell, the musical knowledge part of the equation is too deeply baked in to most notation programs, such that if you don’t need it, or want to invent new rules, you are stuck trying to trick the program into not doing what it “helpfully” insists on doing.

I need to be able to generate 100% of the .ly files from C, taking as a source the composition in the database (which was also generated, using chance operations, with C code). Because of the volume of pages, hand tweaking the parts is not an option.

So:
1. Is LilyPond up to the job? 
2. What commands are used to do the time bracket centering, meter-free notehead selection, bar-less notehead equidistant spacing, etc.?
3. Is LilyPond going to gracefully let me set music symbols where I want them, or will I be constantly having to fool it into compliance at every turn? A follow-up question: If I do have to work around LilyPond’s “knowledgeable” music formatting “conveniences”, will these work-arounds end up being “corrected” in future versions, thus breaking my existing code?

BTW, I am open to hiring a knowledgeable LilyPerson as a time-saving and inspirational resource. Reply to this email if you are interested.

Regards,

Andrew Culver



<John-Cage-time-brackets.png>


reply via email to

[Prev in Thread] Current Thread [Next in Thread]