Erweiterungshandbuch#
Dieses Handbuch versucht, alle wichtigen Techniken zum Erweitern von LilyPond zu behandeln. Wie Sie sehen werden, geht das Verstehen dieser Techniken Hand in Hand mit dem Verständnis von LilyPonds internen Abläufen.
LilyPond hat auch ein offizielles Erweiterungshandbuch, das aber leider weit davon entfernt ist, vollständig zu sein. Das vorliegende Handbuch dient als Ersatz für die nie geschriebenen Teile des Erweiterungshandbuchs.
The guide is structured as follows:
First, a general introduction to extending, with examples of the fundamental tools, and an overview of how LilyPond works internally;
Details on the interplay between LilyPond and Scheme code, and the different ways of inserting Scheme in LilyPond;
A focus on music objects and how to create and transform them;
A jump forward in LilyPond’s compilation process, to the backend, explaining how grobs work and how to tweak them;
Finally, a jump back to the translation step, which is the bridge between music and the backend; this part reuses notions from the two previous parts.
- Lilypond erweitern: Einführung
- Scheme innerhalb von LilyPond benutzen
- Exportierte Funktionen und Benennungs-Konventionen
- Der Scheme-Sandkasten
- Das Wichtigste über Musikfunktionen
- Das Wichtigste über Callbacks
- Werte ausgeben
- Erste Schritte mit den LilyPond-Interna
- Glossar: Wichtige Objekt-Typen
- Überblick: LilyPonds interne Abläufe, und wie man sich in sie einklinken kann
- LilyPond und Scheme
- Musikobjekte
- Backend-Programmierung
- The translation process
- Overview
- Contexts
- Useful translation hooks
- Writing an engraver
- Basics
- The time step cycle
- Processing stream events
- Example for setting properties in pre-process-music:
Force_chord_at_bar_start_engraver
- Creating grobs
- Example for creating grobs:
Tacet_engraver
- Time management
- Example for using event lengths:
Auto_breathe_engraver
- Acknowledging grobs
- Example for acknowledging grobs:
Balloon_notes_engraver
- End acknowledgers
- Example for end acknowledgers:
No_break_during_tie_engraver
- Setting grob parents and spanner bounds
- Example for setting parents:
Auto_stanza_engraver
- Example for setting bounds:
Align_all_dynamics_engraver
- Killing grobs
- Example for killing grobs:
Voice_line_engraver
- Adding properties and types