I realized that the duplication is actually not an issue when using a
MarkLine context, since it isn't collecting the events from multiple
contexts, it's just listening to the event from the MarkLine itself. I
guess I'll just stick with this way of doing things.

\version "2.24.0"
\language "english"

\layout {
  \context {
    \name "MarkLine"
    \type "Engraver_group"
    \consists Axis_group_engraver
    \consists Mark_engraver
    \consists Metronome_mark_engraver
    \consists Text_mark_engraver
    \override VerticalAxisGroup.staff-affinity = #DOWN
  }
  \context {
    \Score
    \accepts MarkLine
    \remove Mark_engraver
    \remove Metronome_mark_engraver
    \remove Text_mark_engraver
  }
}

global = {
  \mark\default
  \tempo "foo"
  s1
  \mark\default
  \tempo "foo"
  s1
  \mark\default
  \tempo "foo"
  s1
  \textMark "foo"
  s1
}

music = \relative c'' {
  bf4 a c b
  bf4 a c b
  bf''4 a,, c b
  bf4 a c b
}

\score {
  <<
    \new MarkLine \global
    \new StaffGroup <<
      \new Staff << \global \music >>
      \new Staff << \global \music >>
    >>
  >>
}

On Tue, Jan 31, 2023 at 1:55 PM Saul Tobin <saul.james.to...@gmail.com>
wrote:

> IMO deduplication wouldn't really be semantically contradictory, because
> the goal of allowing multiple simultaneous marks is to allow for multiple
> *different* marks at the same moment. And you could always have a context
> property to switch deduplication on/off.
>
> The scheme evaluation challenges seem like the bigger issue.
>
> Typically, the way I structure a score is to have a \global variable
> containing skips + all the information shared across all players, such as
> key, time, and marks. It goes a bit counter to that structure to either
> separate out \textMarks into their own variable or to use tagging to
> control where they display in the full score. Certainly doable, but IMO it
> would be worth at least clarifying in the documentation.
>
> Thanks for the detailed response!
>
> On Tue, Jan 31, 2023 at 1:48 PM Jean Abou Samra <j...@abou-samra.fr>
> wrote:
>
>> On 31/01/2023 22:33, Jean Abou Samra wrote:
>> > Uh, why did I just write this already? The latter wouldn't
>> > be a problem. assign_event_once uses "equal?" The former,
>> > with procedures, is indeed a problem.
>> >
>> > Sorry for the noise.
>>
>>
>> Looking a bit more into define-markup-commands.scm, this
>> will occur at least with
>>
>> \markup \score
>> \markup \score-lines
>> \markup \stencil
>> \markup \on-the-fly
>> \markup \with-string-transformer
>> \markup \if
>> \markup \unless
>>
>> e.g.
>>
>> <<
>>   \new Staff { \mark \markup A c' }
>>   \new Staff { \mark \markup A c' }
>> >>
>>
>> vs.
>>
>> <<
>>   \new Staff { \mark \markup \score { c' } c' }
>>   \new Staff { \mark \markup \score { c' } c' }
>> >>
>>
>>
>> Also, allowing several text marks at the same moment
>> is one of the root motivations for \textMark, so
>> deduplicating based on markup equality would feel
>> (IMHO) surprising.
>>
>>
>>

Reply via email to