• Willkommen im Forum „Archiviertes Lilypond Forum (2017)“.
 

Dies ist das Archiv des alten Forums (bis März 2017). Das aktuelle Forum ist unter lilypondforum.de zu finden.
This is the archive of the old forum (until March 2017). You can find the current forum at lilypondforum.de.

Hauptmenü

\transpose mit Variablen

Begonnen von DieTuba, Sonntag, 3. November 2013, 00:02

Vorheriges Thema - Nächstes Thema

DieTuba

Hallo an alle!
ich bearbeite gerade mehrstimmige Bläsersätze, die ich recht häufig transponieren muß. da bei muß ich immer bei jeder einzelnen Stimme die Anweisung \transpose c d eintragen. Meine Idee ist nun, das ganze mit einer Variablen zu machen, damit ich dann mit etwa folgendem Konstrukt arbeiten kann:

Grundton = { c }
Zielton = { d }

StimmeI = \MyTranspose \Grundton \Zielton \NotenStimmeI

Auf diese Weise müßten nur einmal die beiden Variablen geändert werden und alle Stimmen wären korrekt transponiert. Leider komme ich mit dem Propgrammieren einer solchen Funktion nicht klar.
Im Snippet Repository habe ich folgendes gefunden: http://lsr.dsi.unimi.it/LSR/Item?id=787
das hilft mir aber nicht weiter, weil ich die Stimmen unterschiedlich transponieren muß (C-Stimmen, F-Stimmen usw.).

Ach so, ich arbeite mit Version 2.16.2
Ich danke bereits jetzt für die Hilfe!

Gruß,
DieTuba

eluze

wie wärs mit einem kompilierbaren code?  >:(

DieTuba

Sorry, hier ist ein Ausschnitt mit zwei Stimmen (Trompete in B, Horn in F):
\version "2.16.2"
\language "deutsch"

Global = {
  \time 4/4
}

NotenStimmeI = \relative c'' {
  \key f \major
 
  a2 b8 ( a ) g ( f ) |
  g4 c, c8 ( e) d ( c ) |
}

NotenStimmeII = \relative c' {
  \key f \major
 
  f2. c4 |
  c1 |
}

StimmeIB = {
  \set Staff.midiInstrument = "trumpet"
  \transposition b
 
  \context Voice <<
    \clef treble
   
    \Global
    \NotenStimmeI
  >>
}

StimmeIIF = {
  \set Staff.midiInstrument = "french horn"
  \transposition f
 
  \context Voice <<
    \clef treble
   
    \Global
    \NotenStimmeII
  >>
}

StimmeI = \transpose c d { \StimmeIB }
StimmeII = \transpose d g { \StimmeIIF }

\score {
  \new StaffGroup <<
    \new Staff \StimmeI
    \new Staff \StimmeII
  >>
 
  \layout {}
  \midi {}
}


Die Noten sind jeweils für C-Instrumente geschrieben, müssen also für die meisten anderen Instrumente transponioert werden. Wenn man das jetzt über Variablen machen könnte, würde sich ein Editieren der jeweiligen Zeile mit der \transpose-Anweisung erübrigen.

Gruß
DieTuba

eluze

ich sehe zwar nicht was es bringen soll, das geht doch, oder?!

grundton=c
zielton=fis
StimmeI = \transpose \grundton \zielton { \StimmeIB }

Eluze

DieTuba

Hallo, Eluze,
da habe ich den Wald vor lauter Bäumen nicht gesehen! Danke für die Hilfe. Ich habe die ganze Zeit versucht, das mit Hilfe einer music-function zu lösen, was mir aber nciht gelungen ist.

Es bringt insofern etwas, weil ich so nur die Variablen "grundton" und "zielton" ändern muß und nicht in der ganzen Datei die \transpose-Anweisungen zu bearbeiten brauche. In obigem Beispiel sind es nur zwei Stimmen, aber die Sätze enthalten 15 und mehr Stimmen. Und dann gibt es ja noch die Einzelstimmen und die Partitur. Da kommen schon einige Änderungen zusammen.

Nochmals, danke für die schnelle Hilfe!

Gruß
DieTuba

eluze

Zitat von: DieTuba am Sonntag,  3. November 2013, 11:36
Hallo, Eluze,
da habe ich den Wald vor lauter Bäumen nicht gesehen! Danke für die Hilfe. Ich habe die ganze Zeit versucht, das mit Hilfe einer music-function zu lösen, was mir aber nciht gelungen ist.

ja, ich glaube {a} ist eine music-function währen nur a die tonhöhe angibt

weiterhin viel erfolg mit lilypond!
Eluze