]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/snippets/generating-whole-scores-also-book-parts-in-scheme-without-using-the-parser.ly
Issue 5105/1: Let \mark warnings show input location
[lilypond.git] / Documentation / snippets / generating-whole-scores-also-book-parts-in-scheme-without-using-the-parser.ly
index 1c216d3ed7c475ce0301f2c74a5d6b55f4d18a14..b710ea507da6631be11320f5cb325860a4dad067 100644 (file)
@@ -1,56 +1,19 @@
 %% DO NOT EDIT this file manually; it is automatically
-%% generated from LSR http://lsr.dsi.unimi.it
+%% generated from LSR http://lsr.di.unimi.it
 %% Make any changes in LSR itself, or in Documentation/snippets/new/ ,
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.14.2"
+\version "2.19.22"
 
 \header {
-  lsrtags = "automatic-notation, scheme-language, really-cool"
-
-%% Translation of GIT committish: 57f9346bb030f49336a858fcbf1519366fe56454
-  texidocfr = "
-Une partition LilyPond, de manière interne, n'est rien d'autre qu'une
-expression Scheme générée par l'analyseur syntaxique de lilypond.  Il
-est donc possible, à l'aide de Scheme, de générer automatiquement une
-partition sans fichier source.  Une expression musicale en Scheme sera
-transformée en partition par un appel à
-@code{(scorify-music music parser)}.  Ceci aura pour effet de générer
-un objet @code{score} auquel sera appliqué un bloc @code{layout}
-comportant la fonction
-
-@example
-(let* ((layout (ly:output-def-clone $defaultlayout)))
-   ; modification de la mise en forme, puis assignation :
-   (ly:score-add-output-def! score layout)
-  )
-@end example
-
-Il suffit alors de transmettre ce @code{score} à lilypond pour qu'il le
-grave.  Les trois fonctions -- @code{(add-score parser score)},
-@code{(add-text parser text)} et @code{(add-music parser music)} --
-définies dans le code ci-dessous permettent de transmettre à lilypond,
-aux fins de les graver, une partition complète, un @emph{markup} ou
-simplement de la musique.
-
-Cet exemple permet aussi de graver les pièces contenues dans un bloc
-@code{\\book@{@dots{}@}} ainsi que des partitions de niveau supérieur.
-Chaque partition destinée à être gravée est alors ajoutée à la liste des
-partitions de niveau supérieur ; le @code{toplevel-book-handler} --
-fonction Scheme appelée pour traiter un @emph{book} dès que le bloc
-@code{\\book@{@dots{}@}} est clôturé -- s'adapte pour prendre en charge
-tous les @code{score} jusque là collectés dans l'ouvrage.
-
-"
-  doctitlefr = "Génération en Scheme de partitions complètes (y compris des parties d'ouvrage) sans utiliser l'analyseur"
+  lsrtags = "automatic-notation, really-cool, scheme-language"
 
   texidoc = "
 A lilypond score internally is just a Scheme expression, generated by
 the lilypond parser. Using scheme, one can also automatically generate
 a score without an input file. If you have the music expression in
-scheme, a score can be generated by simply calling (scorify-music music
-parser) on your music. This will generate a score object, for which you
+scheme, a score can be generated by simply calling (scorify-music music) on your music. This will generate a score object, for which you
 can then set a custom layout block with (let* ((layout
 (ly:output-def-clone $defaultlayout)))
    ; modify the layout here, then assign it:
@@ -59,8 +22,8 @@ can then set a custom layout block with (let* ((layout
 
 
 Finally, all you have to do it to pass this score to lilypond for
-typesetting. This snippet defines functions @code{(add-score parser
-score)}, @code{(add-text parser text)} and @code{(add-music parser
+typesetting. This snippet defines functions @code{(add-score
+score)}, @code{(add-text text)} and @code{(add-music
 music)} to pass a complete score, some markup or some music to lilypond
 for typesetting.
 
@@ -74,35 +37,35 @@ modified to inser all collected scores so far to the book.
 "
   doctitle = "Generating whole scores (also book parts) in scheme without using the parser"
 } % begin verbatim
+%%
 
-#(define-public (add-score parser score)
-   (ly:parser-define! parser 'toplevel-scores
-                      (cons score (ly:parser-lookup parser 'toplevel-scores))))
+#(define-public (add-score score)
+   (ly:parser-define! 'toplevel-scores
+                      (cons score (ly:parser-lookup 'toplevel-scores))))
 
-#(define-public (add-text parser text)
-  (add-score parser (list text)))
+#(define-public (add-text text)
+  (add-score (list text)))
 
-#(define-public (add-music parser music)
+#(define-public (add-music music)
   (collect-music-aux (lambda (score)
-                      (add-score parser score))
-                     parser
+                      (add-score score))
                     music))
 
-#(define-public (toplevel-book-handler parser book)
+#(define-public (toplevel-book-handler book)
    (map (lambda (score)
           (ly:book-add-score! book score))
-        (reverse! (ly:parser-lookup parser 'toplevel-scores)))
-   (ly:parser-define! parser 'toplevel-scores (list))
-   (print-book-with-defaults parser book))
+        (reverse! (ly:parser-lookup 'toplevel-scores)))
+   (ly:parser-define! 'toplevel-scores (list))
+   (print-book-with-defaults book))
 
 #(define-public (book-score-handler book score)
-   (add-score parser score))
+   (add-score score))
 
 #(define-public (book-text-handler book text)
-   (add-text parser text))
+   (add-text text))
 
-#(define-public (book-music-handler parser book music)
-   (add-music parser music))
+#(define-public (book-music-handler book music)
+   (add-music music))
 
 %%%
 
@@ -114,9 +77,9 @@ modified to inser all collected scores so far to the book.
         (lambda (parser)
           (let* ((music (make-music 'EventChord
                           'elements (list (make-music 'NoteEvent
-                                            'duration (ly:make-duration 2 0 1 1)
+                                            'duration (ly:make-duration 2 0 1/1)
                                             'pitch (ly:make-pitch 0 pitch 0)))))
-                 (score (scorify-music music parser))
+                 (score (scorify-music music))
                  (layout (ly:output-def-clone $defaultlayout))
                  (note-name (case pitch
                               ((0) "do")
@@ -129,13 +92,13 @@ modified to inser all collected scores so far to the book.
                               (else "huh")))
                  (title (markup #:large #:line ("Score with a" note-name))))
             (ly:score-add-output-def! score layout)
-            (add-text parser title)
-            (add-score parser score))
+            (add-text title)
+            (add-score score))
             (set! pitch (modulo (1+ pitch) 7)))))
 
 oneNoteScore =
-#(define-music-function (parser location) ()
-   (add-one-note-score parser)
+#(define-music-function () ()
+   (add-one-note-score (*parser*))
    (make-music 'Music 'void #t))
 
 %%%