lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Ties between voices


From: Lukas-Fabian Moser
Subject: Re: Ties between voices
Date: Sat, 23 Jul 2022 12:49:13 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0

Hi Andrew,

Am 23.07.22 um 03:49 schrieb Andrew Bernard:
I know that we can't natively make ties between notes in different voices. I know that there was a Google Summer of Code task that could not be completed.

A few weeks ago, I sent you the following privately (I was too timid to post in on the list):

My idea was to \consist the Tie_engraver to the Staff context not _instead_ of to the Voice context, but _in addition_. Then we have two Tie engravers and need a mechanism by which to tell if a given tie should be collected by the Voice-level Tie_engraver or at Staff level (in order to connect ties between different voices).

During my experiments I re-implemented the Tie_engraver in Scheme; although it turned out that (contrary to my expectations) the necessary adjustments could just as easily have been made in C++, the advantage is that we can test this approach without the need to re-compile a custom LilyPond build.

The attached file (requiring 2.23.6 and above) generates

as easily as:

\new Staff \with { \consists #New_tie_engraver }
{
  <<
    \relative {
      <c''~ c,\to Staff~>4 c8 b a g~ 4
    }
    \\
    \relative {
      s4 c'2 e4
    }
  >>
}

Of course the same mechanism might be implemented for, e.g., the Slur_engraver. But this requires additional work, as the slur positioning mechanism is not quite up to positioning Staff-level slurs correctly.

The attached Scheme Tie_engraver may be used as a drop-in replacement for the standard C++ Tie_engraver; in my local branch, it compiles the full regression test suite without causing differences.)

Lukas

Attachment: tie-engraver.ly
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]