Autor Thema: Taktarten mit punktierter Note als Nenner?  (Gelesen 2420 mal)

ingmar

  • Member
Taktarten mit punktierter Note als Nenner?
« am: Dienstag, 14. April 2015, 23:49 »
hallo,

in 'meinem' Stück wechselt dauernd die Taktart. Und mal ist der Nenner eine Halbe, mal eine punktierte Halbe.

Lässt sich das auf simple Weise in Lilypond notieren? Sagen wir, ein Takt von drei punktierten Halben - folgende Versuche führen nicht zum Ziel:

\time 3/2. (2. = "punktierte Halbe")
\time 3/3 (3 = "zwischen Halber und Ganzer")
\time 3/(3/2)
\time 3/{1.5}

Natürlich kriege ich das mit \compoundMeter gebastelt, es ist aber doch sehr umständlich, den Zähler ausschreiben zu müssen.

Danke,
--ingmar

fugenkomponist

  • Member
Re: Taktarten mit punktierter Note als Nenner?
« Antwort #1 am: Dienstag, 14. April 2015, 23:54 »
Was soll denn dabei überhaupt für ein Notenbild rauskommen?

harm6

  • Member
Re: Taktarten mit punktierter Note als Nenner?
« Antwort #2 am: Mittwoch, 15. April 2015, 01:53 »
Hi,

meinst Du

\version "2.19.17"

#(define (format-time-sig-with-note grob)
   (let* ((frac (ly:grob-property grob 'fraction))
          (num (if (pair? frac) (car frac) 4))
          (den (if (pair? frac) (cdr frac) 4)))
         
         
    (cond ((and (integer? (/ num 3))
             (integer? (/ den 2)))
           (grob-interpret-markup grob
                (markup
                  #:override '(baseline-skip . 0.5)
                  #:column
                    (#:number (number->string (/ num 3))
                     #:override '(style . default)
                     #:note
                       (string-append (number->string (/ den 2)) ".")
                       DOWN))))
          ((and (integer? (/ num 2))
             (integer? (/ den 2)))
           (grob-interpret-markup grob
                (markup
                  #:override '(baseline-skip . 0.5)
                  #:column
                    (#:number (number->string (/ num 2))
                     #:override '(style . default)
                     #:note
                       (number->string (/ den 2))
                       DOWN))))
           (else (ly:time-signature::print grob))))
     )
     
fancyTimeSig =
\once \override Staff.TimeSignature.stencil = #format-time-sig-with-note

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Some sample music
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\relative c' {
   
  \fancyTimeSig
  \time 9/4
  \repeat unfold 9 c4
 
  \fancyTimeSig
  \time 4/4
  \repeat unfold 4 c4
 
  \bar"|."
}
?

Gruß,
  Harm

ingmar

  • Member
re: Taktarten mit punktierter Note als Nenner?
« Antwort #3 am: Mittwoch, 15. April 2015, 07:24 »
Was soll denn dabei überhaupt für ein Notenbild rauskommen?
Ach, die Taktangabe möchte ich anschließend sogar verstecken! Im Grunde geht es um ein anderes Problem. Strukturell wechselt das Stück zwischen Abschnitten auf Basis von punktierten Halben und auf Basis von Halben. Die Abschnitte können 1 bis 15 Zählzeiten lang sein. Bisher habe ich einfach alle Taktstriche versteckt und eigene händisch dazwischengeschoben. Aber das hat zwei Nachteile: Die Taktnummerierung scheint nicht zu funktionieren, und vor allem entstehen offenbar Fehler bei den Vorzeichen. Für dieses letztere Problem wollte ich hier immer mal ein Beispiel posten, aber offenbar tritt es - jedenfalls bei mir - nur bei eher langen Passagen auf, ich hab nie was einfaches, klares gefunden, wo dieses Problem offensichtlich wird (ich kann mich halt leider auch immer nur sporadisch mit Lilypond beschäftigen). Offenbar denkt Lilypond intern immer noch in seinen eigenen Takten und nimmt die eingeschobenen \bar-Anweisungen eigentlich nicht als solche wahr. Hab mir bisher damit beholfen, zwangsweise alle Vorzeichen zu setzen, aber das ist bei dieser Musik einfach nicht passend.

Also hab ich gedacht, ich beiß in die Zitrone, zähle halt sämtliche Taktwechsel aus, schreib sie rein und verstecke sie anschließend, dann sollten doch keine Vorzeichenfehler mehr auftreten! Theoretisch könnte ich da ja schreiben "45/4", aber ich befürchte Fehler in der Raumaufteilung, abgesehen von der Unangemessenheit der Angabe (es sind eben 15 punktierte Halbe, nicht z. B. elf Viervierteltakte plus ein weiteres Viertel), ich müsste schreiben "\compoundMeter #'((3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4))". Das ist möglich, war mir aber zu unübersichtlich, und ich hoffte auf eine ganz simple, vielleicht von mir im Handbuch übersehene Lösung.

harms Lösung (vielen Dank!) funktioniert bei mir (2.18.2), aber allmählich denke ich doch, ich müsste das Grundübel besser, die interne Behandlung von Takten bei Lilypond verstehen und dort ansetzen. Denn ich stoße immer wieder auf diese Vorzeichenprobleme, ohne wirklich Zeit zu finden, sie zu isolieren und darzustellen. Vielleicht repariert ja 2.19 sie auch?

(hoffentlich war diese schnell hingeschrieben Darstellung nachvollziehbar)

Danke für die Hilfe, : - )
Gruß,
--ingmar