<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!-- header_tag --> <html lang="en"> <head> <title>Transpose - GNU LilyPond Notation Reference</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="description" content="GNU LilyPond Notation Reference"> <meta name="generator" content="makeinfo 4.11"> <link title="Top" rel="start" href="index.html#Top"> <link rel="up" href="Changing-multiple-pitches.html#Changing-multiple-pitches" title="Changing multiple pitches"> <link rel="prev" href="Octave-checks.html#Octave-checks" title="Octave checks"> <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> <!-- Copyright (C) 1999--2007 by the authors 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="Transpose"></a> Previous: <a rel="previous" accesskey="p" href="Octave-checks.html#Octave-checks">Octave checks</a>, Up: <a rel="up" accesskey="u" href="Changing-multiple-pitches.html#Changing-multiple-pitches">Changing multiple pitches</a> <hr> </div> <h5 class="unnumberedsubsubsec">Transpose</h5> <p><a name="index-transpose-93"></a><a name="index-transposing-94"></a><a name="index-transposition-95"></a><a name="index-transposition-of-pitches-96"></a><a name="index-transposition-of-notes-97"></a><a name="index-pitches_002c-transposition-of-98"></a><a name="index-notes_002c-transposition-of-99"></a><a name="index-g_t_005ctranspose-100"></a><a name="index-g_t_005ctranspose-101"></a> <p>A music expression can be transposed with <code>\transpose</code>. The syntax is <pre class="example">\transpose <var>frompitch</var> <var>topitch</var> <var>musicexpr</var> </pre> <p class="noindent">This means that <var>musicexpr</var> is transposed by the interval between the pitches <var>frompitch</var> and <var>topitch</var>: any note with pitch <var>frompitch</var> is changed to <var>topitch</var> and any other note is transposed by the same interval. Both pitches are entered in absolute mode. <p>Consider a piece written in the key of D-major. It can be transposed up to E-major; note that the key signature is automatically transposed as well. <blockquote> <pre class="verbatim"> \transpose d e { \relative c' { \key d \major d4 fis a d } } </pre> <p> <a href="../08/lily-202cfe8f.ly"> <img align="middle" border="0" src="../08/lily-202cfe8f.png" alt="[image of music]"> </a> </p> </blockquote> <p><a name="index-transposing-instruments-102"></a><a name="index-instruments_002c-transposing-103"></a> If a part written in C (normal <var>concert pitch</var>) is to be played on the A clarinet (for which an A is notated as a C and thus sounds a minor third lower than notated), the appropriate part will be produced with: <blockquote> <pre class="verbatim"> \transpose a c' { \relative c' { \key c \major c4 d e g } } </pre> <p> <a href="../c4/lily-a30d781d.ly"> <img align="middle" border="0" src="../c4/lily-a30d781d.png" alt="[image of music]"> </a> </p> </blockquote> <p class="noindent">Note that we specify <code>\key c \major</code><!-- /@w --> explicitly. If we do not specify a key signature, the notes will be transposed but no key signature will be printed. <p><code>\transpose</code> distinguishes between enharmonic pitches: both <code>\transpose c cis</code><!-- /@w --> or <code>\transpose c des</code><!-- /@w --> will transpose up a semitone. The first version will print sharps and the notes will remain on the same scale step, the second version will print flats on the scale step above. <blockquote> <pre class="verbatim"> music = \relative c' { c d e f } \new Staff { \transpose c cis { \music } \transpose c des { \music } } </pre> <p> <a href="../93/lily-99a44b4c.ly"> <img align="middle" border="0" src="../93/lily-99a44b4c.png" alt="[image of music]"> </a> </p> </blockquote> <p><a name="index-transposing-instruments-104"></a><a name="index-instruments_002c-transposing-105"></a> <code>\transpose</code> may also be used in a different way, to input written notes for a transposing instrument. The previous examples show how to enter pitches in C (or <var>concert pitch</var>) and typeset them for a transposing instrument, but the opposite is also possible if you for example have a set of instrumental parts and want to print a conductor's score. For example, when entering music for a B-flat trumpet that begins on a notated E (concert D), one would write: <pre class="example">musicInBflat = { e4 ... } \transpose c bes, \musicInBflat </pre> <p class="noindent">To print this music in F (e.g., rearranging to a French horn) you could wrap the existing music with another <code>\transpose</code>: <pre class="example">musicInBflat = { e4 ... } \transpose f c' { \transpose c bes, \musicInBflat } </pre> <p class="noindent">For more information about transposing instruments, see <a href="Instrument-transpositions.html#Instrument-transpositions">Instrument transpositions</a>. <p class="noindent"> <h5 class="subsubheading">Selected Snippets</h5> <p><em>Transposing music with minimum accidentals</em> <p>This example uses some Scheme code to enforce enharmonic modifications for notes in order to have the minimum number of accidentals. In this case, the following rules apply: <ul> <li>Double accidentals should be removed <li>B sharp -> C <li>E sharp -> F <li>C flat -> B <li>F flat -> E </ul> <p>In this manner, the most natural enharmonic notes are chosen. <blockquote> <pre class="verbatim"> #(define (naturalize-pitch p) (let* ((o (ly:pitch-octave p)) (a (* 4 (ly:pitch-alteration p))) ; alteration, a, in quarter tone steps, for historical reasons (n (ly:pitch-notename p))) (cond ((and (> a 1) (or (eq? n 6) (eq? n 2))) (set! a (- a 2)) (set! n (+ n 1))) ((and (< a -1) (or (eq? n 0) (eq? n 3))) (set! a (+ a 2)) (set! n (- n 1)))) (cond ((> a 2) (set! a (- a 4)) (set! n (+ n 1))) ((< a -2) (set! a (+ a 4)) (set! n (- n 1)))) (if (< n 0) (begin (set! o (- o 1)) (set! n (+ n 7)))) (if (> n 6) (begin (set! o (+ o 1)) (set! n (- n 7)))) (ly:make-pitch o n (/ a 4)))) #(define (naturalize music) (let* ((es (ly:music-property music 'elements)) (e (ly:music-property music 'element)) (p (ly:music-property music 'pitch))) (if (pair? es) (ly:music-set-property! music 'elements (map (lambda (x) (naturalize x)) es))) (if (ly:music? e) (ly:music-set-property! music 'element (naturalize e))) (if (ly:pitch? p) (begin (set! p (naturalize-pitch p)) (ly:music-set-property! music 'pitch p))) music)) naturalizeMusic = #(define-music-function (parser location m) (ly:music?) (naturalize m)) music = \relative c' { c4 d e g } \score { \new Staff { \transpose c ais \music \naturalizeMusic \transpose c ais \music \transpose c deses \music \naturalizeMusic \transpose c deses \music } \layout { } } </pre> <p> <a href="../c4/lily-abfae8cf.ly"> <img align="middle" border="0" src="../c4/lily-abfae8cf.png" alt="[image of music]"> </a> </p> </blockquote> <p class="noindent"> <h5 class="subsubheading">See also</h5> <p class="indent"> <p>Notation Reference: <a href="Instrument-transpositions.html#Instrument-transpositions">Instrument transpositions</a>. <p>Snippets: <a href="../../../input/lsr/lilypond-snippets/Pitches.html#Pitches">Pitches</a>. <p>Internals Reference: <a name="index-TransposedMusic-106"></a><a href="../lilypond-internals/TransposedMusic.html#TransposedMusic">TransposedMusic</a>. <p><a name="index-g_t_005ctranspose-107"></a><a name="index-g_t_005ctranspose-108"></a> <a name="index-g_t_005cchordmode-109"></a><a name="index-g_t_005cchordmode-110"></a> <a name="index-g_t_005crelative-111"></a><a name="index-g_t_005crelative-112"></a> <p class="noindent"> <h5 class="subsubheading">Known issues and warnings</h5> <p>The relative conversion will not affect <code>\transpose</code>, <code>\chordmode</code> or <code>\relative</code> sections in its argument. To use relative mode within transposed music, an additional <code>\relative</code> must be placed inside <code>\transpose</code>. <!-- footer_tag --><br><hr> <div class="node"> <p> Previous: <a rel="previous" accesskey="p" href="Octave-checks.html#Octave-checks">Octave checks</a>, Up: <a rel="up" accesskey="u" href="Changing-multiple-pitches.html#Changing-multiple-pitches">Changing multiple pitches</a> </div> <div style="background-color: #e8ffe8; padding: 2; border: #c0ffc0 1px solid;"> <p> <font size="-1"> This page is for LilyPond-2.11.57 (development-branch). <br> <address> Report errors to <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>. </address> <br> Your <a href="http://lilypond.org/web/devel/participating/documentation-adding">suggestions for the documentation</a> are welcome. </font> </p> </div> <P> Other languages: <a href="Transpose.fr.html">français</a>, <a href="Transpose.es.html">español</a>, <a href="Transpose.de.html">deutsch</a>. <BR> </P> </BODY></html>