<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!-- header_tag --> <html lang="de"> <head> <title>Fortgeschrittene Optimierungen mit Scheme - GNU LilyPond Handbuch zum Lernen</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="description" content="GNU LilyPond Handbuch zum Lernen"> <meta name="generator" content="makeinfo 4.11"> <link title="Top" rel="start" href="index.de.html#Top"> <link rel="up" href="Further-tweaking.de.html#Further-tweaking" title="Weitere Optimierungen"> <link rel="prev" href="Avoiding-tweaks-with-slower-processing.de.html#Avoiding-tweaks-with-slower-processing" title="Vermeiden von Optimierungen durch langsamere Übersetzung"> <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> <!-- Copyright (C) 1999--2007 bei den Autoren _The translation of the following copyright notice is provided for courtesy to non-English speakers, but only the notice in English legally counts._ _Die Übersetzung der folgenden Lizenzanmerkung ist zur Orientierung für Leser, die nicht Englisch sprechen. Im rechtlichen Sinne ist aber nur die englische Version gültig._ Es ist erlaubt, dieses Dokument unter den Bedingungen der GNU Free Documentation Lizenz (Version 1.1 oder spätere, von der Free Software Foundation publizierte Versionen, ohne Invariante Abschnitte), zu kopieren, verbreiten und/oder zu verändern. Eine Kopie der Lizenz ist im Abschnitt ``GNU Free Documentation License'' angefügt. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections. A copy of the license is included in the section entitled ``GNU Free Documentation License''. --> <meta http-equiv="Content-Style-Type" content="text/css"> <style type="text/css"><!-- pre.display { font-family:inherit } pre.format { font-family:inherit } pre.smalldisplay { font-family:inherit; font-size:smaller } pre.smallformat { font-family:inherit; font-size:smaller } pre.smallexample { font-size:smaller } pre.smalllisp { font-size:smaller } span.sc { font-variant:small-caps } span.roman { font-family:serif; font-weight:normal; } span.sansserif { font-family:sans-serif; font-weight:normal; } hr { border:0; height:1; color: #000000; background-color: #000000; } /* hr { border: none; height: 1px; color: #666666; background-color: #666666; } body { border-left: 1px solid #666666; border-right: 1px solid #666666; color: #332d28; margin-right: auto; margin-left: auto; width: 60em; list-style-type: square; font-family: Arial,Helvetica,sans-serif; padding-right: 1em; padding-left: 1em; } a { border-bottom: 1px dashed #344242; text-decoration: none; color: #344242; } a:link { text-decoration: none; } a:visited { border-bottom: 1px dashed #666666; color: #666666; } a:active { border-bottom: 1px solid #00cccc; color: #00cccc; } a:hover { border-bottom: 1px solid #1d7b85; color: #1d7b85; } blockquote { border: 1px solid #cccccc; padding: 3px; width: 40em; } .node { border-left: 1px solid #666666; margin: -0.5em 0px 1em; padding: 2px 1px 0px; font-style: italic; } .node a { border: none; text-decoration: underline; font-style: normal; font-weight: bold; } .verbatim { font-family: "Courier New",Courier,monospace; } .unnumberedsubsubsec { font-size: large; color: #1d7b85; } .subsubheading { font-size: large; color: #3b220d; } .contents { border: 1px dashed #339999; margin: 3px 2em; list-style-type: square; padding-right: 1em; width: 40em; background-color: #fcfff9; } .contents a { border-bottom: 1px dashed #423d34; text-decoration: none; color: #423d34; } .contents a:visited { border-bottom: 1px dashed #666666; color: #666666; } .contents a:active { border-bottom: 1px solid #f0d86d; color: #f0d86d; } .contents a:hover { border-bottom: 1px solid #3b220d; color: #3b220d; } .menu { border-left: 1px dashed #339999; margin: 3px 2em 1em; list-style-type: square; padding-left: 1.4em; width: 40em; } .unnumbered { } h2 { font-size: x-large; color: #1d7b85; } */ --></style> </head> <BODY BGCOLOR=WHITE TEXT=BLACK> <div class="node"> <p> <a name="Advanced-tweaks-with-Scheme"></a> voriges: <a rel="previous" accesskey="p" href="Avoiding-tweaks-with-slower-processing.de.html#Avoiding-tweaks-with-slower-processing">Vermeiden von Optimierungen durch langsamere Übersetzung</a>, aufwärts: <a rel="up" accesskey="u" href="Further-tweaking.de.html#Further-tweaking">Weitere Optimierungen</a> <hr> </div> <h4 class="subsection">4.7.5 Fortgeschrittene Optimierungen mit Scheme</h4> <p>Es wurde schon gezeigt, wie die LilyPond-Ausgabe sehr stark verändert werden kann, indem man Befehle wie <code>\override TextScript #'extra-offset = ( 1 . -1)</code> benutzt. Aber noch mehr Einfluss auf die Formatierung kann durch den Einsatz von Scheme genommen werden. Eine vollständige Erklärung findet sich in der <a href="Scheme-tutorial.de.html#Scheme-tutorial">Scheme-Übung</a> und den <a name="index-Interfaces-for-programmers-254"></a><a href="../lilypond/Interfaces-for-programmers.de.html#Interfaces-for-programmers">Schnittstellen für Programmierer</a>. <p>Scheme kann benutzt werden, um einfach nur Befehle zu „überschreiben“ (<code>\override</code>): <blockquote> <pre class="verbatim"> AbstandText = #(define-music-function (parser location padding) (number?) #{ \once \override TextScript #'padding = #$padding #}) \relative c''' { c4^"piu mosso" b a b \AbstandText #1.8 c4^"piu mosso" d e f \AbstandText #2.6 c4^"piu mosso" fis a g } </pre> <p> <a href="../df/lily-7ebd8076.ly"> <img align="middle" border="0" src="../df/lily-7ebd8076.png" alt="[image of music]"> </a> </p> </blockquote> <p>Hiermit können aber auch neue Befehle erstellt werden: <blockquote> <pre class="verbatim"> tempoMark = #(define-music-function (parser location padding marktext) (number? string?) #{ \once \override Score . RehearsalMark #'padding = $padding \once \override Score . RehearsalMark #'extra-spacing-width = #'(+inf.0 . -inf.0) \mark \markup { \bold $marktext } #}) \relative c'' { c2 e \tempoMark #3.0 #"Allegro" g c } </pre> <p> <a href="../dd/lily-8615b8fa.ly"> <img align="middle" border="0" src="../dd/lily-8615b8fa.png" alt="[image of music]"> </a> </p> </blockquote> <p>Sogar ganze musikalische Ausdrücke können eingefügt werden: <blockquote> <pre class="verbatim"> pattern = #(define-music-function (parser location x y) (ly:music? ly:music?) #{ $x e8 a b $y b a e #}) \relative c''{ \pattern c8 c8\f \pattern {d16 dis} { ais16-> b\p } } </pre> <p> <a href="../22/lily-99fb2d57.ly"> <img align="middle" border="0" src="../22/lily-99fb2d57.png" alt="[image of music]"> </a> </p> </blockquote> <!-- *- coding: utf-8; mode: texinfo; -*- --> <!-- This file is part of lilypond.tely --> <!-- \version "2.11.51" --> <!-- footer_tag --><br><hr> <div class="node"> <p> voriges: <a rel="previous" accesskey="p" href="Avoiding-tweaks-with-slower-processing.de.html#Avoiding-tweaks-with-slower-processing">Vermeiden von Optimierungen durch langsamere Übersetzung</a>, aufwärts: <a rel="up" accesskey="u" href="Further-tweaking.de.html#Further-tweaking">Weitere Optimierungen</a> </div> <div style="background-color: #e8ffe8; padding: 2; border: #c0ffc0 1px solid;"> <p> <font size="-1"> Diese Seite ist für LilyPond-2.11.57 (Entwicklungszweig). <br> <address> Fehler bitte an <a href="http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs">http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs</a> melden. </address> <br> Ihre <a href="http://lilypond.org/web/devel/participating/documentation-adding">Vorschläge für die Dokumentation</a> sind willkommen. </font> </p> </div> <P> Andere Sprachen: <a href="Advanced-tweaks-with-Scheme.html">English</a>, <a href="Advanced-tweaks-with-Scheme.fr.html">français</a>, <a href="Advanced-tweaks-with-Scheme.es.html">español</a>. <BR> </P> </BODY></html>