Deutsches Lilypond Forum (Archiv)

Allgemein => Fragen zu Funktionen => Thema gestartet von: asdfg am Montag, 12. September 2016, 21:57

Titel: Wie muss ich das \transpose einfügen?
Beitrag von: asdfg am Montag, 12. September 2016, 21:57
Ich möchte, dass das ganze in b-Moll notierte Lied nach C-Dur transponiet ausgegeben wird.

\version "2.18.0"

{
\key des \major
      f4 f8 (es8) des2     
}
Titel: Re: Wie muss ich das \transpose einfügen?
Beitrag von: iugin am Montag, 12. September 2016, 21:59
Hallo!

Ich denke, du meinst Db-Dur -> C-Dur.
Auf jeden Fall so:
\version "2.18.0"

\transpose des c {
\key des \major
      f4 f8 (es8) des2     
}

\transpose muss du vor der Musik schreiben.

Lieber Gruss

Eugenio
Titel: Re: Wie muss ich das \transpose einfügen?
Beitrag von: fugenkomponist am Montag, 12. September 2016, 22:18
Da das nicht deine erste Frage zu \transpose ist, hier mal ein bisschen Hintergrund:

\transpose ist eine Funktion, die einen Musikausdruck entgegen nimmt und einen Musikausdruck zurückgibt (deshalb hat sie z. B. im MIDI-Block, wo nur Einstellungen vorgenommen werden, aber in dem keine Musik steht, nichts zu suchen).

Ein Musikausdruck kann dabei alles mögliche an abgeschlossener Musik sein, z. B.
• { c4 d8 e }
• \relative { c d e }
• \new Staff << \relative { e f g } \relative { c d e } >>
• \transpose c d { <d f a>4 }
Für eine genaue Beschreibung bin ich grad zu müde, aber vielleicht gibt dir das schon einen guten Eindruck.

In deinem Fall wird \transpose auf den Musikausdruck
     { \key des \major f4 f8( es) des2) }
angewendet.
Titel: Re: Wie muss ich das \transpose einfügen?
Beitrag von: harm6 am Montag, 12. September 2016, 22:21
Ich möchte, dass das ganze in b-Moll notierte Lied nach C-Dur transponiet ausgegeben wird.

\version "2.18.0"

{
\key des \major
      f4 f8 (es8) des2     
}


Öhmmmm....
Titel: Re: Wie muss ich das \transpose einfügen?
Beitrag von: fugenkomponist am Montag, 12. September 2016, 22:24
Naja, für LilyPond machts doch keinen Unterschied, aber genau genommen kann man ja auch nicht von b-Moll nach C-Dur transponieren. Vermutlich ist b-Moll nach a-Moll gemeint; dafür vielleicht gut zu wissen, dass LilyPond nicht nur \key des \major, sondern auch \key bes \minor kann.
Titel: Re: Wie muss ich das \transpose einfügen?
Beitrag von: harm6 am Montag, 12. September 2016, 22:50
Zitat
Naja, für LilyPond machts doch keinen Unterschied
Da muß ich doch heftigst wiedersprechen.

Siehe den output des codes unten.
Der engraver stammt aus der NR, applyContext ... von mir.
Ich hab auch andere Funktionen die auf falsche Setzung des tonic-pitch allergisch reagieren würden.

\version "2.18.0"

#(set-global-staff-size 26)

#(define Ez_numbers_engraver
   (make-engraver
    (acknowledgers
     ((note-head-interface engraver grob source-engraver)
      (let* ((context (ly:translator-context engraver))
     (tonic-pitch (ly:context-property context 'tonic))
     (tonic-name (ly:pitch-notename tonic-pitch))
     (grob-pitch
      (ly:event-property (event-cause grob) 'pitch))
     (grob-name (ly:pitch-notename grob-pitch))
     (delta (modulo (- grob-name tonic-name) 7))
     (note-names
      (make-vector 7 (number->string (1+ delta)))))
(ly:grob-set-property! grob 'note-names note-names))))))

\layout {
  \context {
    \Voice
    \consists \Ez_numbers_engraver
    \easyHeadsOn
  }
}

showTonic =
  \applyContext
  #(lambda (ctx) (write-me "tonic\t" (ly:context-property ctx 'tonic)))
 

\displayMusic
{
  \key g \major \showTonic c'1
  \key e \minor \showTonic c'
  \key a \dorian \showTonic c'
  \key b \phrygian \showTonic c'
  \key c \lydian \showTonic c'
  \key d \mixolydian \showTonic c'
  \key fis \locrian \showTonic c'
}

Gruß,
  Harm

Titel: Re: Wie muss ich das \transpose einfügen?
Beitrag von: fugenkomponist am Dienstag, 13. September 2016, 10:18
Ok, da war ich vielleicht ein bisschen voreilig: Fürs alleinige Eingeben von Noten ohne spezielle Funktionen mit analytischen Fähigkeiten machts keinen Unterschied, ist aber unlogisch, nicht \minor zu verwenden ;)