Autor Thema: Transpose: Entfernungsangabe per Variable (GELÖST)  (Gelesen 2915 mal)

ingmar

  • Member
Transpose: Entfernungsangabe per Variable (GELÖST)
« am: Freitag, 20. November 2015, 17:19 »
Hallo,

ich halte meine Noten in Variablen und möchte diese gerne transponiert ausdrucken. Das Transpositionsintervall möchte ich ebenfalls in einer Variablen halten, um es an einer einzigen Stelle für das gesamte Stück ändern zu können. Ich stell es mir im Moment in der "klassischen" Form mit zwei Notennamen vor, aber es könnte auch numerisch sein.

\version "2.18.2"

INTERVAL = { c d }

MUSIC = \relative c'' {
c d e f g2 f4 g
a b c d c1
}

\score {
\new Staff \with { instrumentName = "transponiert?" } {
\transpose \INTERVAL \MUSIC
}
}

Dieser Versuch kompiliert nicht; auch, wenn ich INTERVAL in zwei Einzelvariablen zerlege, gehts nicht.

Die Lösung ist bestimmt mal wieder sehr einfach, aber ich komme nicht dahinter.. : - )


Danke, Gruß,
--ingmar
« Letzte Änderung: Freitag, 20. November 2015, 20:38 von ingmar »

fugenkomponist

  • Member
Re: Transpose: Entfernungsangabe per Variable
« Antwort #1 am: Freitag, 20. November 2015, 17:33 »
Die Lösung ist bestimmt mal wieder sehr einfach, aber ich komme nicht dahinter.. : - )
Die Sache ist die: { c d } ist ein Musikausdruck, der die beiden Noten (nicht nur Tonhöhen) c und d enthält, wie die Ausgabe von\displayMusic { c d }zeigt. \transpose braucht aber als Argumente zwei Tonhöhen (engl.: pitches). Du musst also eine Tonhöhe in einer Variable speichern:\version "2.18.2"

TRANSP = d

MUSIC = \relative c'' {
c d e f g2 f4 g
a b c d c1
}

\score {
\new Staff \with { instrumentName = "transponiert!" } {
\transpose c \TRANSP \MUSIC
}
}
Wichtig ist hierbei, dass es „d“ heißt und nicht „{ d }“ (sonst hättest du wieder eine Note d statt nur die Tonhöhe). Per Scheme könnte man aus einem Ausdruck wie „{ c d }“, der genau zwei Noten enthält, auch ein Intervall herausfinden, aber vielleicht reicht dir diese deutlich einfachere Lösung ja schon ;)

ingmar

  • Member
re: Transpose: Entfernungsangabe per Variable
« Antwort #2 am: Freitag, 20. November 2015, 17:47 »
Zitat
Wichtig ist hierbei, dass es „d“ heißt und nicht „{ d }“

Das war die entscheidende Botschaft! Denn natürlich hatte es mit zwei getrennten Variablen, die aber jeweils Noten enthielten, schon versucht.

Was sind denn so die wichtigsten Datentypen, mit denen Lilypond umgeht? Wenn man diese und ihre Eigenschaften kennen würde, wären Fragen wie diese sehr viel leichter zu beantworten!


Herzlichen Dank,
Gruß,
--ingmar

fugenkomponist

  • Member
Re: Transpose: Entfernungsangabe per Variable
« Antwort #3 am: Freitag, 20. November 2015, 19:39 »
Eine Auflistung der wichtigsten Scheme- und LilyPond-Datentypen gibts in Anhang A.21 der Notationsreferenz. Hier ging es speziell um die Typen ly:pitch? und ly:music?

Edit: ich würd sagen, die wichtigsten Typenprädikate (die, die mir bisher am ehesten über den Weg gelaufen sind) sind:

boolean? number? string? symbol? integer? list? null? markup? scheme? symbol-list? void? ly:context? ly:duration? ly:event? ly:grob? ly:moment? ly:music? ly:pitch?
« Letzte Änderung: Freitag, 20. November 2015, 19:44 von fugenkomponist »

ingmar

  • Member
Re: Transpose: Entfernungsangabe per Variable (GELÖST)
« Antwort #4 am: Sonntag, 22. November 2015, 17:15 »
Danke! Die Frage ist beantwortet. Aber die Antwort löst viele weitere Fragen zu Scheme aus, die aber nicht mehr in diesen Thread gehören - ich hab dafür ein neues Thema aufgemacht.

Gruß,
--ingmar