Kieren MacMillan:
...
> If I had the following two things, I could probably convert a
> half-dozen of my colleagues (who already marvel at the output
> I get) to using Lilypond for lead sheets:
>
> 1. a \makeLeadSheet function that Did The Right Thingâ¢
> (modulo 80/20 rule, of course!); and
> 2. a stylesheet system that allowed me to [potentially] quickly
> generate each colleague their own housestyle.ily stylesheet.
...
> > . just the lilypond installation
> > . just lilypond and/or scheme code
>
> Correct.
>
> Now, I recognize that such a framework might require modification
> to the non-Lilypond-non-Scheme part of the codebase (e.g., the C++
> core), but the END USER should never see any of that â and optimally
> shouldnât need to know any Scheme.
...
My guess this is mainly for new lilypond users and users mostly
used to Microsofts and/or Apples operating systems environment.
Is this only for vocal music or should non-vocal instrument also
be included ?
Somehow they have to be able to edit lilypond files and run
lilypond, I cannot help with that.
Also I cannot help with defining the requirements, just the
implementation.
///
I see the following ways to proceed:
A. code up something that meets your requirements in scheme.
B. as an interim solution, perhaps when trying out what interface
to use, accept the use of external programs.
C. create a set of file pairs for the most common situations.
///
For A, the files in lilyponds ly directory:
ly/base-tkit.ly
ly/lyrics-tkit.ly
ly/piano-tkit.ly
ly/staff-tkit.ly
ly/vocal-tkit.ly
ly/voice-tkit.ly
seems to give some hints how to make this, but theese are focused on
defining the number of voices beforehand by a competent user (which is
no better than using a template) instead of creating the setup on the
fly which I think would be preferable. Tough, they might be useful in
doing your "\makeLeadSheet".
///
For B, you can hide command line stuff by calling guile from lilypond
and let guile call the external program, like:
$ cat zz.ly
\version "2.25.1"
#(system* "echo" "foo" "bar")
$ lilypond zz.ly
GNU LilyPond 2.25.1 (running Guile 2.2)
Processing `zz.ly'
Parsing...foo bar
Success: compilation successfully completed
$
And yes, that would be a very slow version of echo. But you could use
this to run a program to generate suitable templets setting up the
work directory or to run make or run any program on your system.
///
For C, provide a set of .ily files for the layout, skeleton .ly files
to be edited by the user and pdfs for preview.
There could e.g. be a gui to select a suitable pair, which when
selected copied are to a new working directory.
So for a lead sheet that would be:
song.ly:
\version "2.25.1"
\header {
title = ""
composer = ""
poet = ""
arranger = ""
}
\paper {
#(set-paper-size "a4")
%#(set-paper-size "letter")
}
#(set-global-staff-size 16)
chdSong = \chordmode {
% edit below to change chords
c1 c1 c1
}
musSong = {
% edit below to change the melody
\key c \major
\time 4/4
c'1 |
c'1 |
c'1 |
}
lyrSong = \lyricmode {
% edit below to change the lyrics
song lyr -- ics
}
\include "lead_sheet_layout.ily"
lead_sheet_layout.ily:
\version "2.25.1"
\score {
<<
\new ChordNames \chdSong
\new Staff \musSong
\new Lyrics \lyrSong
>>
}
And the user edits the song.ly file and run lilypond to check the
result. In this case the user should not change the layout.ily file.
Regards,
/Karl Hammar