Autor Thema: \transpose  (Gelesen 3218 mal)

martinusbaum

  • Member
\transpose
« am: Samstag, 17. Januar 2015, 20:20 »
hallo,
will für Blechbläser eine Naturtonübung schreiben, die mit jedem weiteren Griff einen Halbton tiefer steht.
Dazu habe ich eine Variable prase definiert mit der Melodie.
Diese soll nun halbtonweise tiefer transponiert werden.
\version "2.18.2"
\language "deutsch"

\header {
  title = "Naturtonübungen"
  % Voreingestellte LilyPond-Tagline entfernen
  tagline = ##f
}

\paper {
  #(set-paper-size "a4")
}

\layout {
  \context {
    \Score

  }
}
\include "deutsch.ly"


phrase = { c g' c g c,2 r2\bar "||" }

trumpetC = \relative c' {

\phrase
\transpose c h {\phrase}
\transpose c a {\phrase}
}


trumpetBb = \relative c'' {
 
  \transposition b
  % Die Noten folgen hier.
 
}

trumpetCPart = \new Staff \with {
  instrumentName = "Trompete in C"
  midiInstrument = "trumpet"
} \trumpetC

trumpetBbPart = \new Staff \with {
  instrumentName = "Trompete in B"
  midiInstrument = "trumpet"
} \trumpetBb

\score {
  <<
    \trumpetCPart
    \trumpetBbPart
  >>
  \layout { }
  \midi {
    \tempo 4=100
  }
}

Nun wird die erste Phrase richtig dargestellt (c' g' c'' g' c')
ab der zweiten, transponiserten Phrase wird die Oktavlage falsch dargestellt (kleines h, fis''' ....

Was muss ich ändern, damit jede Phrase wirklich einen Halbton tiefer geschrieben wird?

unter jeweils den ersten Ton der Phrase würde ich gerne den Griff schreiben, lässt sich das auch bei Nutzung der Variablen lösen?

harm6

  • Member
Re: \transpose
« Antwort #1 am: Samstag, 17. Januar 2015, 20:58 »
Hallo,

Du kannst Deinen Code fixen, indem Du folgendes veränderst:

phrase = \relative c' { c4 g' c g c,2 r2 \bar "||" }

trumpetC = {

\phrase
\transpose c h, \relative c' {\phrase}
\transpose c a, \relative c' {\phrase}
}

Oder du kannst den Code unten benutzen, der das Ganze etwas automatisiert, sowie mehrere andere Varianten zuläßt (siehe die auskommentierten Beispiele)
Dank an David Kastrup!
\version "2.18.2"

multipleTransposes =
#(define-music-function (parser location m music)(ly:music? ly:music?)
   (music-clone m
    'elements
    (map (lambda (pitch)
  (ly:music-property #{ \transpose c $pitch $music #} 'element))
         (event-chord-pitches m))))

%% Examples

phrase = \relative c { c'4 g' c g c,2 r2 \bar "||" }

\new Staff
\multipleTransposes
  { c b, bes, a, aes, g, ges, f, e, ees, d, des, c, b,, }
  \phrase

%% Other Examples
%
%\new Staff
%\multipleTransposes { c cis } \relative c'' { g a }
%
%\new StaffGroup
%\multipleTransposes << c cis >> \relative c'' \new Staff { g a }
%
%\new Staff
%\multipleTransposes <c cis> g''!
%

HTH,
  Harm
« Letzte Änderung: Samstag, 17. Januar 2015, 23:17 von harm6 »

martinusbaum

  • Member
Re: \transpose
« Antwort #2 am: Samstag, 17. Januar 2015, 21:26 »
hallo,
vielen Dank für die super Antwort! und das auch noch postwendend an einem Samstagabend!




harm6

  • Member
Re: \transpose
« Antwort #3 am: Samstag, 17. Januar 2015, 23:16 »
Der fix war schnell getan, den anderen Code hatte ich in der Schublade :)

Schönes Wochenende,
  Harm

harm6

  • Member
Re: \transpose
« Antwort #4 am: Samstag, 17. Januar 2015, 23:28 »
Aber gut, daß ich den Code nochmal gelesen habe - der fix geht natürlich noch simpler:
phrase = \relative c' { c4 g' c g c,2 r2 \bar "||" }

trumpetC = {

\phrase
\transpose c h, \phrase
\transpose c a, \phrase
}

Bis denn.
  Harm