Sorry, previous mail has faulty sender. Urs Liska: > Am 07.11.2014 21:29, schrieb k...@aspodata.se: > > Urs: > >> Am 07.11.2014 13:59, schrieb k...@aspodata.se: > > ... > >>> Also I wounder how to make the source available so you can make your > >>> own edition with your own preferences, and I've tried to separate > >>> content from presentataion. That work is incomplete. I looked at > >>> http://lilypondblog.org/ and Urs has some ideas wich I havn't been > >>> able to digest it yet. Anyone intereseted in theese kind of problems, > >>> and how to apply it to this music ? > >> If you tell me what kind of ideas you are referring to I may give some > >> hints. No chance joining the project, though, sorry. > > __The 1st problem is: Paper sizes and margins > > > > I use A4 or a little smaller format I call choirbook (size taken from > > a Bärenreiter choirbook) suitable to be printed on A3, folded, > > stapled and cut to size. And could possible envision making pocket > > scores to be included with recordings. In other parts of the world > > there is different paper preferences. > > > > Changing papersizes/margins directly influences ones decision about > > \break's and staff size. > > > > This could be accomplished if one could use lilypond like > > > > lilypond my_paper_block.ily --ly_code "#(set-global-staff-size 14)" \ > > my_page_breaks.ily my_prefs.ily the_music.ily satb_score.ly \ > > -o the_music.pdf > > > > i.e. a solution would be to make lilypond work on on the fly > > concatenation of files and code. But lilypond arguments does not work > > that way. One could make a "preprocessor" to handle that, but I'm > > woundering if that that there is a better way to do it. > > I'm not fully looking through it, but I see several approaches: > > a) > you can pass an include file through the command line. > That's probably how I would approach this: Write all possible style > information in a number of style files and use the include file you > provide through the command line to choose appropriate ones for the > intended target.
Don't seem to work: $ cat II.ly \version "2.19.0" %{ \header { title = "Kyrie" %subtitle = "" composer = "W.A. Mozart" } %} \include "score_glb.ily" \include "II.ily" \include "score_ps.ily" \include "score_midi.ily" $ commenting score_glb away in II.ly and running works: $ lilypond -o zz --ps -dinclude-settings=score_glb.ily II.ly commenting away II.ily too, don't: $ lilypond -o zz --ps -dinclude-settings=score_glb.ily -dinclude-settings=II.ily II.ly GNU LilyPond 2.19.13 Processing `II.ly' Parsing... II.ily:80:3: error: unknown escaped string: `\midi_sop' ... score_ps.ily:14:5: warning: cannot find Voice `Vbas' \lyricsto Vbas \Lbas Preprocessing graphical objects... Interpreting music... Finding the ideal number of pages... Fitting music on 1 page... Drawing systems... Layout output to `zz.ps'... fatal error: failed files: "II.ly" $ The problem seem that you can include-settings for one file only _or_ that you cannot use settings from the first one in the second - \midi_sop is defined in score_glb.ily and used in II.ily. > b) > If you can make your alternative versions controllable by tags you can > benefit from the new command line options with which you can pass a list > of tags to keep or to remove through the command line. > I'm not sure if that enhancement is already in the latest release or if > it will only be in the next one, though. I'll check that, would be useful. > c) > You can test for commandline options in the code ( with > #(ly:get-option)) and choose your layout according to the presence or > absence of certain options. You can use arbitrary options (e.g. > -dchoirbook-layout) and test for them. LilyPond will issue a warning > about the unknown option but it will work nevertheless. From reading the usage.pdf I got the impression it was only for the specified (on p.4-8) variables, but it seems to work, thought I get a warning: $ cat a.ly \version "2.19.0" #(define aa (ly:get-option 'sz)) #(define bb (ly:get-option 'backend)) #(display "\naa = <") #(display aa) #(display ">\nbb = <") #(display bb) #(display ">") $ lilypond -dsz=tt -dbackend=ps a.ly GNU LilyPond 2.19.13 warning: no such internal option: sz Processing `a.ly' Parsing... aa = <tt> bb = <ps> Success: compilation successfully completed $ /// And to set the staff-size it works (with a warning): $ cat a.ly \version "2.19.0" #(set-global-staff-size (ly:get-option 'sz)) \relative f { c'4 c c c } $ lilypond -dsz=12 a.ly GNU LilyPond 2.19.13 warning: no such internal option: sz ... Great, thanks, though the warning seems a little misplaced, perhaps one could append something to scheme-options-definitions defined in scm/lily.scm, but it is probably too late when my .ly is looked at. [...] > >> But regarding the separation of content from presentation this is > >> definitely something where you should look at Jan-Peter Voigt's edition > >> engraver. I haven't understood how to use it so far, but maybe Kieren > >> can give you some tips? > > Is this it: > > http://lilypondblog.org/2014/07/trees-music-and-lilypond/ > > Not really. THe editionEngraver is at least two or three posts in the > future ... > > > https://github.com/openlilylib/openlilylib.git > > https://github.com/openlilylib/openlilylib/tree/master/editorial-tools/edition-engraver Ok, found it. > > > > I kind of like the: > > > > \putMusic "massInC/kyrie/soprano/melody" \relative c'' { c2 d4 c } > > > > and when I program I usually use data structures. But I don't know > > how to do my own datastructures in lilypond except simple variables. > > And I wounder if you cannot do the above without to much writing > > and in plain scheme/lilypond (i.e. mostly following notaion.pdf and > > without going "too" deep into scheme, where the definition of deep > > waries with person). > > Well, if you should happen to understand all this one day, please come > back to me and help me understanding it too ;-) Currently, my understanding (which can be way off) of data structures in lisp (scheme, guile) is that there is only one of them - the "dotted pair". Such pairs can be connected to give you a lists. http://groups.csail.mit.edu/mac/ftpdir/scheme-reports/r5rs.ps seems to be the definition of scheme, it mentions some basic types (like numbers, and strings), pairs, lists, and vectors (well, it seems I was wrong about the "only" thing). Any other data structures you have to implement yourself. Searching what \putMusic means leads eventually to scheme-lib/lalily/storage.scm where define-class is used: (define-class <tree> () (children #:accessor children #:init-thunk make-hash-table) (key #:accessor key #:init-keyword #:key #:init-value 'node) (value #:accessor value #:setter set-value! #:init-value #f) ) which probably is the storage structure Jan-Peter Voigt is using. Now, define-class isn't mentioned in http://www.gnu.org/software/guile/docs/docs-1.8/guile-ref/Procedure-Index.html#Procedure-Index but is in http://www.gnu.org/software/guile/manual/guile.pdf (p.719) so this is a Guile 2 only thing ?? I think understanding storage.scm is the key to understand \putMusic. Regards, /Karl Hammar ----------------------------------------------------------------------- Aspö Data Lilla Aspö 148 S-742 94 Östhammar Sweden +46 173 140 57 _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user