Autor Thema: Verschieben von Taktstrichen  (Gelesen 3312 mal)

chf

  • Member
Verschieben von Taktstrichen
« am: Samstag, 27. August 2011, 20:05 »
Liebe Freunde,

die folgende Variable

tv = #(define-music-function (parser location hor ) ( number? )
  #{ \once\override Staff.BarLine #'extra-offset = #(cons $hor 0)
  #})

funktioniert wunderbar in den Zeilen (dafür ist sie ja auch gemacht).
Nun brauche ich sowas aber für ein ganzes System. Ich habe Staff  gegen Score  eingetauscht - aber leider.
Wie geht es?

Gruß
chf

harm6

  • Member
Re: Verschieben von Taktstrichen
« Antwort #1 am: Samstag, 27. August 2011, 22:32 »
Hallo Christa,

ich nehme mal an Du meinst die Anwendung in PianoStaff, StaffGroup o.ä.

Falls Du nur den Taktstrich versetzen möchtest, muß der SpanBar mitangesprochen werden:

\version "2.14.2"

tv = #(define-music-function (parser location hor ) ( number? )
  #{
          \once\override Score.BarLine #'extra-offset = #(cons $hor 0)
          \once\override Score.SpanBar #'extra-offset = #(cons $hor 0)
  #})
 
one = \relative {
  c1  d e f \tv #'10 g a b c
}
two = \relative {
  c1 c c c c c c c
}
\score {
        \new StaffGroup
  <<
    \new Staff \one
    \new Staff \two
  >>
}

Falls Du aber den Taktstrich und auch die nachfolgenden Noten verschieben willst, gehe über X-extent:

\version "2.14.2"

barExtent = #(define-music-function (parser location space ) ( pair? )
  #{
          \once\override Score.BarLine #'X-extent = $space
  #})
 
One = \relative {
  c1  d e1 f8 f f4 f8 f f4 \barExtent #'(-10 . 1) g1 a b c
}

Two = \relative {
  c1 c c c c c c c
}

\score {
        \new StaffGroup
  <<
    \new Staff \One
    \new Staff \Two
  >>
}

Gruß,
  Harm

chf

  • Member
Re: Verschieben von Taktstrichen
« Antwort #2 am: Sonntag, 28. August 2011, 14:55 »
Hallo Harm,
was ich vergessen habe: meine version ist 2.12.3. - möglicherweise zu alt???
Gruß
chf


harm6

  • Member
Re: Verschieben von Taktstrichen
« Antwort #3 am: Sonntag, 28. August 2011, 15:38 »
Hallo Christa,

ersetze doch mal \version "2.14.2" durch \version "2.12.3" in meinen obigen Vorschlägen und versuch sie zu kompilieren. Im Moment sehe ich nicht warum es unter "2.12.3" nicht funktionieren sollte. (Ich kann es aber nicht selber testen, da ich kein "2.12.3" mehr auf dem Rechner habe).
Es sollte einen output wie im Anhang geben. Falls nicht poste doch das Bild welches bei Dir entsteht. Falls Du eine ERROR-Meldung im Log bekommst, so poste diese, dann kann man weitersehen.

Gruß,
  Harm

ding-dong

  • Member
Re: Verschieben von Taktstrichen
« Antwort #4 am: Sonntag, 28. August 2011, 23:00 »
klar funktionierts! (habs getestet)

aber warum sollte man bei der alten version bleiben???

gruss
ding-dong

chf

  • Member
Re: Verschieben von Taktstrichen
« Antwort #5 am: Montag, 29. August 2011, 18:54 »
Danke!

Die neue Version - meine Gedanken richten sich schon darauf.

Gruß
chf

kilgore

  • Member
Re: Verschieben von Taktstrichen
« Antwort #6 am: Montag, 29. August 2011, 19:04 »
Hallo ihr beiden!  Das mit dem X-extent kannte ich auch nicht, interessant!!
Gibt es aber ein weiteren Befehl um den "verlängerten" Takt dann auch tatsächlich so lang zu machen, also mit spacing über den ganzen Takt, und nicht alles links gerichtet?

Gruß
kil

harm6

  • Member
Re: Verschieben von Taktstrichen
« Antwort #7 am: Montag, 29. August 2011, 21:03 »
@kilgore

Hallo kil,

Zitat
Gibt es aber ein weiteren Befehl um den "verlängerten" Takt dann auch tatsächlich so lang zu machen, also mit spacing über den ganzen Takt, und nicht alles links gerichtet?

Mit extra-offset und X-extent geht es nicht. Das einzige was mir dazu einfällt ist mal kurz proportionalNotationDuration ein- und vor dem Taktende dann wieder auszuschalten. NR 4.5.5 Proportionale Notation

\version "2.14.2"

barExtraSpace = \once \override Score.BarLine #'X-extent = #'(-0.6 . 0.8)

one = \relative { 
        c1 d e
        f4 f8 f f4 f8 f
        g1 a b c
        \break
        c,1 d e
        \set Score.proportionalNotationDuration = #(ly:make-moment 1 32)
        f1
        \unset Score.proportionalNotationDuration
        g1 a b c
        \break
        c,1 d e 
        \barExtraSpace
        \set Score.proportionalNotationDuration = #(ly:make-moment 1 32)
        f4 f8 f f4 f8
        \unset Score.proportionalNotationDuration
        f8
        \barExtraSpace
        g1 a b c
}

two = \relative {
        \repeat unfold 24 c1
}

\score {
        \new StaffGroup
<<
  \new Staff \one
  \new Staff \two
>>
        \layout {
                indent = 0
        }
}

Gruß,
  Harm

P.S. \barExtraSpace ist noch eine Zugabe, da mir die Platzaufteilung am Taktstrich nicht gefallen hat. Kann man aber problemlos auch wieder rausnehmen.

kilgore

  • Member
Re: Verschieben von Taktstrichen
« Antwort #8 am: Dienstag, 30. August 2011, 08:44 »
Aha, stimmt.  Das habe ich sogar einmal benutzt.  Danke!

Schade nur, dass man den Taktlänge aber nicht explizit bestimmen kann sowie beim anderen Beispiel.  "1 16" ist wesentlich kürzer als "1 32", dazwischen zu landen ist wohl nicht möglich?

Gruß
kil

harm6

  • Member
Re: Verschieben von Taktstrichen
« Antwort #9 am: Dienstag, 30. August 2011, 12:16 »
Hallo kil,

Zitat von: kilgore
"1 16" ist wesentlich kürzer als "1 32", dazwischen zu landen ist wohl nicht möglich?

Du kannst jede ganze Zahl benutzen:

\set Score.proportionalNotationDuration = #(ly:make-moment 1 20)

teilt die ganze Note in 20 Teile, also Quintolen, auf. Das spacing wird dann entsprechend berechnet.

Zitat von: kilgore
Schade nur, dass man den Taktlänge aber nicht explizit bestimmen kann sowie beim anderen Beispiel.

Ja! Aber etwas anderes fällt mir zumindest im Moment nicht ein.  :(

Gruß,
  Harm

kilgore

  • Member
Re: Verschieben von Taktstrichen
« Antwort #10 am: Dienstag, 30. August 2011, 17:32 »
Ach nichts mit dem "  :( " harm!  Deine Vorschläge sind immer hervorragend.  Ich kann auch ein kein andere Lösung denken.  Zum Glück brauch ich das auch jetzt nicht, war nur neugierig nach euren Austausch  :)

harm6

  • Member
Re: Verschieben von Taktstrichen
« Antwort #11 am: Sonntag, 11. September 2011, 15:24 »
Hallo kil,

hab' noch etwas besseres gefunden:

\version "2.14.2"

\layout {
            \context {
                  \Score
                  \override NonMusicalPaperColumn #'line-break-permission = ##f
            }
}

\relative { 
        c1 d e
        \newSpacingSection
        \override Score.SpacingSpanner #'shortest-duration-space = #10
        f4 f8 f f4 f8 f
        \newSpacingSection
        \revert Score.SpacingSpanner #'shortest-duration-space
        f4 f8 f f4 f8 f
        g1 a b c
}

Das gefällt mir wesentlich besser als der Weg über proportionalNotationDuration.

Gruß,
  Harm

kilgore

  • Member
Re: Verschieben von Taktstrichen
« Antwort #12 am: Sonntag, 11. September 2011, 16:19 »
Ahhh!  Nicht nur gut aussehend sondern auch sehr handlich!  Danke harm! 

Kannst du aber erklären warum das #'line-break-permission eine Rolle spielt?  Wenn man das auskommentiert verschiebt sich auch alles ein bisschen...

Danke und Gruß
kil

harm6

  • Member
Re: Verschieben von Taktstrichen
« Antwort #13 am: Montag, 12. September 2011, 23:36 »
Hallo kil,

ich habe keine Ahnung!!

Ich hatte #'line-break-permission nur reingenommen, weil ich einen Zeilenumbruch auf jeden Fall verhindern wollte. Auf das Phänomen bin ich erst durch Deine Antwort aufmerksam geworden, hab' aber nichts erklärendes finden können.

Gruß,
  Harm