lilypond-user
[Top][All Lists]
Advanced

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

Re: Determining what parameters exist for an item


From: Thomas Morley
Subject: Re: Determining what parameters exist for an item
Date: Sat, 23 Jan 2016 22:29:34 +0100

Hi Charles,

please keep the discussion on the list, apart from real private stuff.

2016-01-23 20:33 GMT+01:00 Charles O. Lawrence <address@hidden>:
> Thank you for your replies.
>
> This is an example of you giving me a code sample that will display the 
> properties, and I thank you for it, but to a newbie to lilypond such as I am, 
> I have no clue what or why is in the procedure.  A little elaboration would 
> be nice.  For example, what is the lambda?  I can guess what the 
> string-upcase, display and display-scheme-music are, but where did you find 
> out about their existence and how to call them?   Is there a document or book 
> that explains all this stuff, more than the reference material, which is more 
> than overwhelming?  I realize you are an advanced user.  [...] I never had 
> the need or opportunity to study Lisp or Scheme, or whatever lilypond input 
> syntax is.  Any guidance is greatly appreciated.
>
> Charles

LilyPond uses an input language, which you will need to learn. Best
start reading the "Learning Manual".
Scheme/guile is used as an extension-language in LilyPond. A good
starting point for getting deeper into it is the "Extending Manual".
And ofcourse the guile-manual itself, please note we use guile-1.8
Apart from the guile-manual, there are a lot of tutorials out there.

Details:
display, string-upcase and lambda are native guile
-> see guile-manual
Maybe look at this one, too:
http://lilypondblog.org/category/using-lilypond/advanced/scheme-tutorials/

display-scheme-music is defined in our source and is the
scheme-version of (LilyPond-syntax) `displayMusic', which is explained
in the docs.
I sort of abuse it quite often, because it internally uses
`pretty-print'. (In .ly file I would always need to include the
relevant module from guile for pretty-print, which is tedious).
pretty-print puts out nicely formatted lists.
guile and LilyPond provide a plethora of different displaying procedures ...

ly:grob-properties and ly:grob-basic-properties are defined in C++ for
use in guile.
--> see Internals Reference
Same for 'after-line-breaking, which is a dummy-property called at a
certain point during compilation. Nice to put in all sort of stuff or
for displaying this and that, as done here.

`all-grob-descriptions' is an alist defined in define-grobs.scm.
Although it's public you'll find no documentation about it. Reason:
you shouldn't mess around with internals unless you really know what
you're doing ;)

So far the details for the little coding, but I'm afraid my
explanations will more obfuscate then enlightning...

My recommendation would be:
- try to read and understand the codings provided here on the list.
- Read the manuals: LilyPond, guile, guile-tutorials, etc

I'm not a programmer, though as a LilyPond-starter I had found that
not all was as I wanted it to be. So I started to learn guile to say
her what to do how. I did a lot of exercises: defining
substitution-functions and markup-commands, etc
And ofcourse it's very good practise to read/understand code from
others and/or try helping other user.
The LSR is quite nice as well
http://lsr.di.unimi.it/LSR/


Hope it helps a bit,
  Harm



reply via email to

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