lilypond-user
[Top][All Lists]
Advanced

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

Re: Organising files/variables/ in lilypond


From: Eef Weenink
Subject: Re: Organising files/variables/ in lilypond
Date: Sat, 8 Apr 2023 04:36:40 +0000

Thank you, Valentin, 

Specially for the examples, I will study, experiment with them and see how I 
can learn how to solve my issues this way. 
Regards, Eef 

> Op 7 apr. 2023, om 23:34 heeft Valentin Petzel <valentin@petzel.at> het 
> volgende geschreven:
> 
> Hello Eef,
> 
> if I understand you correctly you essentially want to put the content of a 
> Lilypond file into a variable and evaluate that. This is not possible with 
> Lilypond as such, but instead you can avoid Lilypond syntax and directly use 
> the scheme hooks.
> 
> Instead of doing
> 
> all = ...
> 
> you can have a scheme function do
> 
> (set! all ...)
> 
> (but for this to work you need to have the binding "all" existing before by 
> doing #(define all #f) (or any other value).
> 
> Instead of simply creating a \score ... and let the parser delegate this to 
> the correct hook you can pass scores directly via scheme by doing
> 
> (add-score #{ \score { ... } #})
> 
> Generally there are many ways to do things, and we’d need to know more about 
> your specific situation to be able to elaborate a good solution.
> 
> Recently I did a mass for which I created a small framework which allows me 
> to 
> first register parts and such by doing
> 
> \registerPart partname
> \partSetTitle partname "Title"
> 
> \partSetStaff partname staffname { music }
> ...
> 
> and then when needed do
> 
> \partPrint name layoutfunction
> 
> to create a specific score or
> 
> \printParts layoutfunction
> 
> to print all scores.
> 
> layoutfunction is then a function taking partname and creating the desired 
> score.
> 
> I’d then have a folder "layouts" specifying layout functions, a folder 
> "styles" specifying stylesheets, and a folder of files registering scores, 
> and 
> one or multiple masters reading these files and printing scores with one or 
> multiple layout functions.
> 
> I’ve included the core library and an example layout function. Maybe this 
> approach could be useful for you (I’ve also sent this to the list not too 
> long 
> ago).
> 
> Cheers,
> Valentin
> 
> Am Freitag, 7. April 2023, 16:11:43 CEST schrieb Eef Weenink:
>> I have this project: I make arrangements of figured bass pieces.
>> (Generalbass Wolf). In total 100 pieces. Uptill now I organised it this
>> way:
>> - 1 file with all pieces in it (I did about 10, 90 to go).
>> The file starts with an include of a startup.ily, with some settings for the
>> whole book then the first piece.
>> I include a file (arrangeit.ily) to change the music into several voices,
>> etcetera using arranger.ly<http://arranger.ly>. I add some lines to change
>> 1-2 voices a bit using also arranger.ly<http://arranger.ly> then I include
>> a file (Generalbassmakescore.ily with the settings to create the score.
>> Second piece (with the same variablenames!)
>> and repeat the includes like mentioned above.
>> etcetera.
>> 
>> It works, looks well. At the end I have 1 file with alle the pieces and 3-4
>> files to do small jobs, It is not fast.
>> 
>> But somehow I have the idea this could be easier/better. But how?
>> - One idea would be to put all pieces in separate files and include this in
>> one file with all jobs: arranging, extra changes, create voice/score. But
>> then I will have 101 files
>> 
>> Most easy would be to create a file with procedures I need, include the file
>> and call the procedures when needed. . But how? Lilypond does not have
>> procedures (as far I know?). Using functions gives lots of errors.
>> I tried it with variables, but no luck either.
>> 
>> I try to put these lines in a variable/function/procedures (as an example):
>> What to do, to make lilypond use the lines between {} simply as a
>> replacement of the variable?
>> 
>> arrangeit = {
>> %----- verwerking-------
>> all = #'(pright pleft  soprano alto tenor bass viola contrabas soprano)
>> #(init all)
>> 
>> #(begin
>>   ;;pianopartij
>>  (rm 'pright '(1-4)   (rel 1 'melody) )
>>  (rm 'pleft '(1-4)   (rel  'bassline) )
>> 
>> ;; koorpartijen
>> ;; sopraan
>>  (rm 'soprano '(1-4) (note 1 (rel   'melody) ))
>> ;;alt
>>  (rm 'alto '(1-4)   (note 2  (rel  1 'melody)) )
>> ;; tenor
>>  (rm 'tenor '(1-4) (note 3 (rel 1 'melody) ))
>> ;; bass
>>  (rm 'bass '(1-4)  (rel  'bassline) )
>> ;;ciontrabass
>>  (rm 'contrabas ' (1-4)  (rel  'bassline) )
>> )
>> }
>> 
>> Eef
> 
> <full-score.ily><partManager.ily>


reply via email to

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