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



Reply via email to