Autor Thema: Sechzehntel in maskierter Taktart (GELÖST)  (Gelesen 1690 mal)

ingmar

  • Member
Sechzehntel in maskierter Taktart (GELÖST)
« am: Freitag, 16. Oktober 2015, 19:47 »
...eine etwas knifflige Frage.

Parallel zu einem 4/4-Takt (den ich mir in meinem Beispiel spare) soll ein 9/8-Takt laufen – d.h., er soll solange dauern wie der 4/4-Takt. \scaleDurations quetscht das in den zur Verfügung stehenden Platz, und Staff.timeSignatureFraction setzt eine "künstliche" Taktangabe. Leider werden aber nun die Sechzehntelfähnchen nicht ganz richtig für einen 9/8-Takt gesetzt (sie scheinen sich noch an 4/4 zu orientieren):

\version "2.18.2"

\relative c' {
\set Staff.timeSignatureFraction = 9/8
\scaleDurations 8/9 {
c8.[ d16 e8] f8.[ g16 a8] b8.[ c16 d8]
}
}

Was macht man da?


Danke, Gruss,
--ingmar
« Letzte Änderung: Montag, 28. März 2016, 15:59 von ingmar »

fugenkomponist

  • Member
Re: Sechzehntel in maskierter Taktart
« Antwort #1 am: Freitag, 16. Oktober 2015, 21:41 »
Als Notlösung kann man auf jeden Fall stemRightBeamCount und stemLeftBeamCount von Hand setzen. Das ist halt bei jeder überbalkten Taktmitte mit diesem Rhythmus wieder zu machen. Dafür erspart dir die folgende Lösung die ganzen manuellen Balken.
\version "2.19.28"

moveBeamletLeft =
#(define-music-function () ()
   #{
     \set stemRightBeamCount = 1
     \set stemLeftBeamCount = 2
   #})

<<
  \new Staff \relative {
    \time 4/4
    c'4 d e f
  }
  \new Staff \relative {
    \set Staff.beamExceptions =
    \beamExceptions \scaleDurations 8/9 {
      8.[ 16 8]
      8.[ 16 8]
      8.[ 16 8]
    }
    \set Staff.beatStructure = #'(3 3 3)
    \set Staff.timeSignatureFraction = 9/8
    \scaleDurations 8/9 {
      c'8. d16 e8
      f8. \moveBeamletLeft g16 a8
      b8. c16 d8
    }
  }
>>
Mir ist gerade eingefallen, dass \beamExceptions erst in der Version 2.19/2.20 kommt … Wie das mit 2.18 ging, weiß ich nicht mehr. Die Lösung zu deinem eigentlichen Problem (moveBeamletLeft) geht aber auch mit 2.18, mit einer Anpassung:#(define-music-function (parser location) () ; parser und location werden ab 2.19.irgendwas nicht mehr gebraucht

ingmar

  • Member
re: Sechzehntel in maskierter Taktart
« Antwort #2 am: Samstag, 17. Oktober 2015, 10:09 »
Danke für die Hilfe.

Auf 2.19 umsteigen möchte ich noch nicht, und es sind bei mir nur wenige Stellen. Daher versuche ich es auf Basis Deines Hinweises auf \set stemLeftBeamCount.

Leider ist die entsprechende Stelle im Handbuch vollkommen unverständlich. Probiere ich wie im Folgenden alle Möglichkeiten durch, scheint keine einzige das Gewünschte zu erreichen:

\version "2.18.2"

\relative c' {
\set Staff.timeSignatureFraction = 9/8
\scaleDurations 8/9 {
c8.[ d16 e8] f8.[ \set stemLeftBeamCount = #0 g16 a8] b8.[ c16 d8]
c,8.[ d16 e8] f8.[ \set stemLeftBeamCount = #1 g16 a8] b8.[ c16 d8]
c,8.[ d16 e8] f8.[ \set stemLeftBeamCount = #2 g16 a8] b8.[ c16 d8]
c,8.[ d16 e8] f8.[ \set stemRightBeamCount = #0 g16 a8] b8.[ c16 d8]
c,8.[ d16 e8] f8.[ \set stemRightBeamCount = #1 g16 a8] b8.[ c16 d8]
c,8.[ d16 e8] f8.[ \set stemRightBeamCount = #2 g16 a8] b8.[ c16 d8]
}
}

Wo liegt der Denkfehler?


Danke, --ingmar

fugenkomponist

  • Member
Re: Sechzehntel in maskierter Taktart
« Antwort #3 am: Samstag, 17. Oktober 2015, 10:48 »
Du musst für den betroffenen Hals beide setzen, sowohl stemLeftBeamCount als auch stemRightBeamCount. Im Anhang siehst du den unveränderten Output von\relative \scaleDurations 8/9 {
  f'8.[ g16 a8]
  f8.[ g16 a8]
}
Darunter habe ich zu jeder Note (bzw. jedem Hals) „stemLeftBeamCount/stemRightBeamCount“ geschrieben. Diese Zahlen beschreiben einfach, wie viele Balken links bzw. rechts vom Hals anfangen/weitergehen. Wie man sieht, unterscheiden sich beim g beide Werte, also musst du auch beide ändern (genau das, was meine Funktion moveBeamletLeft tut).

Edit: Hier nochmal die Funktion für 2.18, falls die Ergänzung oben unklar war.
moveBeamletLeft =
#(define-music-function (parser location) ()
   #{
     \set stemRightBeamCount = 1
     \set stemLeftBeamCount = 2
   #})
parser und location fallen mit 2.19.xx weg. Anzuwenden als f8.[ \moveBeamletLeft g16 a8].
« Letzte Änderung: Samstag, 17. Oktober 2015, 10:52 von fugenkomponist »

ingmar

  • Member
re: Sechzehntel in maskierter Taktart
« Antwort #4 am: Samstag, 17. Oktober 2015, 12:08 »
Danke für die Hilfe.

Aber wie gesagt, ich hab nur wenige Stellen, da brauchts keine Funktion. Die Lösung lautet für mich also:
\version "2.18.2"

\relative c' {
\set Staff.timeSignatureFraction = 9/8
\scaleDurations 8/9 {
c8.[ d16 e8]  f8.[  \set stemLeftBeamCount =2  \set stemRightBeamCount =1 g16 a8] b8.[ c16 d8]
}
}

Gruß,
--ingmar