Autor Thema: repeat unfold  (Gelesen 2633 mal)

DocTaxon

  • Member
repeat unfold
« am: Sonntag, 26. Mai 2013, 11:42 »
Hi!

\repeat unfold ...
ist ja eine ziemlich einfache Syntax, aufeinanderfolgende Noten oder Notengruppen beliebig zu wiederholen.

Gibt es da auch ähnlich einfaches, wenn bei jeder Wiederholung der Notenwert z. B. um eine Note steigt?
Z. B. bei dieser aus 4 Noten bestehenden Notengruppe:
c4 e fis d | d4 f gis e | e4 g ais f ...

Schöne Grüße,
Doc Taxon ...

Be-3

  • Member
Re: repeat unfold
« Antwort #1 am: Sonntag, 26. Mai 2013, 17:27 »
Hallo Doc,

"fertig" gibt es so etwas nicht; man müßte eine kleine Funktion schreiben.
Mir ist allerdings nicht ganz klar, nach welchen Gesetzmäßigkeiten das "um eine Note steigen" vonstatten geht...
Meinst Du chromatisch transponieren oder diatonisch?

In Deinem Beispiel ist es doch von c nach e eine große Terz, bei zweiten Durchlauf von d nach f aber nur eine kleine...? (usw.)
Also müßte man nur das, was LilyPond note-name nennt, jeweils zyklisch um 1 erhöhen, die Versetzungszeichen in Ruhe lassen und evtl. die Oktave ändern.

Ist das so gemeint?

Viele Grüße
Torsten

DocTaxon

  • Member
Re: repeat unfold
« Antwort #2 am: Montag, 27. Mai 2013, 16:09 »
Gemeint ist in diesem Beispiel je Takt jeweils eine Note höher werdend. Das hat jetzt also nichts mit Terzen zu tun. Also, in jedem Takt wird die Notenfolge wiederholt, nur sind die Noten jeweils eine Note höher.

\version "2.16.0"

\score { \relative c'' {
  c4 e fis d | d4 f gis e | e4 g ais f
} }

harm6

  • Member
Re: repeat unfold
« Antwort #3 am: Montag, 27. Mai 2013, 22:37 »
Zitat von: DocTaxon
Also, in jedem Takt wird die Notenfolge wiederholt, nur sind die Noten jeweils eine Note höher.

Genau das ist unklar.

Du willst offensichtlich eine steigende Sequenz haben
Dein Beispiel zeigt ein "höher" werden, teils um einen Halbton, teils um einen Ganzton.
Falls es eine tonale Sequenz ist: um welche Tonart handelt es sich denn?
Eine chromatische Sequenz ist es jedenfalls nicht.

Zitat von: DocTaxon
Das hat jetzt also nichts mit Terzen zu tun.
Die von Torsten erwähnten Terzen ergeben sich, wenn man die ersten zwei Töne einer jeden Sequenzierung miteinander vergleicht: Mal große, mal kleine Terzen.
Insoweit ist es auch keine reale Sequenz.

Nur was denn dann.

Um eine Funktion zu schreiben, die das von Dir gewünschte Ergebnis liefert muß man ja erst mal die Gesetzmäßigkeiten verstehen, denen diese Funktion dann Rechnung tragen soll.

Falls es keine Gesetzmäßigkeit gibt, kann man zwar immer noch eine Funktion schreiben, die für jeden einzelnen Ton angeben kann wie er transponiert werden soll, das wäre jedoch ziemlich sinnlos - die direkte Eingabe der gewünschten Tonhöhen sicherlich einfacher und zeitsparender.

Gruß,
  Harm

DocTaxon

  • Member
Re: repeat unfold
« Antwort #4 am: Dienstag, 28. Mai 2013, 10:59 »
na doch, eigentlich schon. Für mich war es vielleicht nur einfach zu kompliziert, das gescheit zu erklären.

Erste Note im ersten Takt: c | erste Note im zweiten Takt: d = Erhöhung um eine ganze Note
Zweite Note im ersten Takt: e | zweite Note im zweiten Takt: f = Erhöhung um eine ganze Note
Dritte Note im ersten Takt: fis | dritte Note im zweiten Takt: gis = Erhöhung um eine ganze Note
Vierte Note im ersten Takt: d | vierte Note im zweiten Takt: e = Erhöhung um eine ganze Note

Erste Note im zweiten Takt: d | erste Note im dritten Takt: e = Erhöhung um eine ganze Note
Zweite Note im zweiten Takt: f | zweite Note im dritten Takt: g = Erhöhung um eine ganze Note
Dritte Note im zweiten Takt: gis | dritte Note im dritten Takt: ais = Erhöhung um eine ganze Note
Vierte Note im zweiten Takt: e | vierte Note im dritten Takt: f = Erhöhung um eine ganze Note


Ob die Sequenz jetzt stimmt oder nicht, ist mir hier erst mal egal. Mir geht es eigentlich bloß um das Verständnis, ob man, so ähnlich wie bei Notengruppenwiederholungen mittels \repeat unfold { }, diese Notengruppen um eine ganze Note erhöhen kann.

fugenkomponist

  • Member
Re: repeat unfold
« Antwort #5 am: Dienstag, 28. Mai 2013, 12:07 »
Von e nach f ist doch aber ein Halbton, kein Ganzton …

DocTaxon

  • Member
Re: repeat unfold
« Antwort #6 am: Dienstag, 28. Mai 2013, 12:21 »
oh Mann, bin ich blöd! Ich hab das mal korrigiert, nicht böse sein!

Erste Note im ersten Takt: c | erste Note im zweiten Takt: d = Erhöhung um eine ganze Note
Zweite Note im ersten Takt: e | zweite Note im zweiten Takt: fis = Erhöhung um eine ganze Note
Dritte Note im ersten Takt: fis | dritte Note im zweiten Takt: gis = Erhöhung um eine ganze Note
Vierte Note im ersten Takt: d | vierte Note im zweiten Takt: e = Erhöhung um eine ganze Note

Erste Note im zweiten Takt: d | erste Note im dritten Takt: e = Erhöhung um eine ganze Note
Zweite Note im zweiten Takt: fis | zweite Note im dritten Takt: gis = Erhöhung um eine ganze Note
Dritte Note im zweiten Takt: gis | dritte Note im dritten Takt: ais = Erhöhung um eine ganze Note
Vierte Note im zweiten Takt: e | vierte Note im dritten Takt: f = Erhöhung um eine ganze Note

Be-3

  • Member
Re: repeat unfold
« Antwort #7 am: Dienstag, 28. Mai 2013, 16:05 »
Vierte Note im zweiten Takt: e | vierte Note im dritten Takt: f = Erhöhung um eine ganze Note

Nö, noch nicht ganz:

Vierte Note im zweiten Takt: e | vierte Note im dritten Takt: fis = Erhöhung um eine ganze Note.

Was von der RR (rätselhaften Rückung) übrigbleibt, ist eine stinknormale Transposition um jeweils einen Ganzton nach oben. ;)

... was natürlich noch nicht das Automatisierungsproblem löst...

Viele Grüße
Torsten

DocTaxon

  • Member
Re: repeat unfold
« Antwort #8 am: Dienstag, 28. Mai 2013, 17:40 »
also, wenn man zu solch einer Transposition eine umfangreiche Funktion basteln muss, ist das für nicht mehr attraktiv genug. Dann ist es meist doch besser, man programmiert es ohne. ich habe halt nur gefragt, ob es da etwas ähnlich simples wie \repeat unfold bei Tönen gleicher Höhe.

Dann erkläre ich das mal für erledigt.

Aber trotzdem danke schön,
Doc Taxon ...

RobUr

  • Member
Re: repeat unfold
« Antwort #9 am: Dienstag, 28. Mai 2013, 19:59 »
Hallo DocTaxon,

ist vielleicht NR 1.1.2 Changing multiple pitches: Modal transformations ein Ansatz?

Gruß, Robert

harm6

  • Member
Re: repeat unfold
« Antwort #10 am: Mittwoch, 29. Mai 2013, 01:19 »
Hallo Doc,

es scheint Du möchtest reale Sequenzen schreiben.

Die Funktion unten sollte Dich diesem Ziel näher bringen.
Sie benötigt zwei Argumente:
  • Die Liste der Tonhöhen zu denen transponiert werden soll, in absoluten Tonhöhen.
  • Das was Transponiert werden soll. Dieses Argument ist immer relativ zur ersten Note.

\version "2.16.2"

mapTranspose =
#(define-music-function (parser location m music)(ly:music? ly:music?)
  (let* ((elts (ly:music-property m 'elements))
         (pitches (map (lambda (x) (ly:music-property x 'pitch)) elts))
         (pitch-octaves (map (lambda (x) (ly:pitch-octave x)) pitches))
         (pitch-notename (map (lambda (x) (ly:pitch-notename x)) pitches))
         (pitch-alteration (map (lambda (x) (ly:pitch-alteration x)) pitches)))
  #{
    $(make-sequential-music
       (map
          (lambda (octave note alter)
             #{ 
                \transpose c $(ly:make-pitch octave note alter) \relative $music 
             #})
          pitch-octaves pitch-notename pitch-alteration))
  #}))
 
% EXAMPLES

expr = \relative c'' {
  c4 e fis d
}

\new Staff \relative c' {
\mapTranspose { c d e c, } \expr
\bar "||"
\mapTranspose { c d eis aes}  <c e g>
\bar "||"
\mapTranspose { c d }  <<{ c'8 d e b c2 } \\ { c4 g c2 }>>
\bar "||"
<< { s1*2^"C-Dur" s1*2^"Cis-Dur" s1*2^"D-Dur"}
\mapTranspose { c cis d } {\break c4 d e f \bar "" g a b c  }
>>
}

HTH,
  Harm