Thanks a lot! It’s a perfect solution for the typesetting, but I wonder if it would be possible to process them earlier, so I could have them work with the articulate script or at least consistently affect midi playback.
Best wishes /Leo > 20 dec. 2021 kl. 23:36 skrev Jean Abou Samra <j...@abou-samra.fr>: > > Le 20/12/2021 à 22:28, Leo Correia de Verdier a écrit : >> Dear list! >> >> Could you help me with a clever way to copy/clone the articulations from >> simultaneous notes in one sequential expression to another? >> So that I could for instance enter the total articulations of a phrase as >> >> \version "2.23.3" >> >> << >> \new RhythmicStaff \with { \override Script.Y-offset = #-1.7 } >> << { s16_> s16_> s16 s16_. s16_- s8_> s16_! s8__ s8__ s16_. s8_- s16_. } >> { f'16 16 16 16 16 8 16 8 8 16 8 16 } >> >> >> % but also apply the first sequential expressions, with the articulations, >> to for instance >> >> \new RhythmicStaff { c'8. 16 8. 16 8 r8 8. 16 } >> >> % so that the result would be >> >> \new RhythmicStaff { c'8._> 16-. 8._- 16_! 8__ r8 8.-. 16-. } >> >> % or to >> >> \new RhythmicStaff {c'16 16 16 16 r8. 16 r8 16 16 r16 8. } >> >> % getting >> >> \new RhythmicStaff {c'16_> 16_> 16 16_. r8. 16_! r8 16__ 16 r16 8._- } >> Thanks a lot! >> /Leo > > > I'd do this: > > \version "2.22.1" > > \layout { > \override Voice.Script.before-line-breaking = > #(lambda (grob) > (let ((parent (ly:grob-parent grob X))) > (if (or (not (grob::has-interface parent 'note-column-interface)) > (not (null? (ly:grob-object parent 'rest)))) > (ly:grob-suicide! grob)))) > } > > articulations = { s16_> s16_> s16 s16_. s16_- s8_> s16_! s8__ s8__ s16_. > s8_- s16_. } > > \new RhythmicStaff \with { \override Script.Y-offset = #-1.7 } > \new Voice << \articulations { f'16 16 16 16 16 8 16 8 8 16 8 16 } >> > > \new RhythmicStaff \new Voice << \articulations { c'8. 16 8. 16 8 r8 8. 16 } > >> > > \new RhythmicStaff \new Voice << \articulations { c'16 16 16 16 r8. 16 r8 16 > 16 r16 8. } >> > > > Best, > Jean >