diff --git a/faberge/sections/02/.metadata b/faberge/sections/02/.metadata index 9567c87ff0..6445edfd80 100644 --- a/faberge/sections/02/.metadata +++ b/faberge/sections/02/.metadata @@ -191,16 +191,6 @@ value=5, ), ], - "Flute.Music": [ - baca.Memento( - context="Flute.Music", - edition=None, - manifest=None, - prototype="abjad.Dynamic", - synthetic_offset=None, - value="\\baca-p-parenthesized", - ) - ], "Flute.Staff": [ baca.Memento( context="Flute.Music", diff --git a/faberge/sections/02/music.ily b/faberge/sections/02/music.ily index 1d242cacf7..ab1db95637 100644 --- a/faberge/sections/02/music.ily +++ b/faberge/sections/02/music.ily @@ -4399,11 +4399,6 @@ number.2.Flute.Music = { % [Flute.Music measure 81] fs''!4 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC - \! %! EXPLICIT_DYNAMIC %! SPANNER_START - \tweak circled-tip ##t @@ -4476,10 +4471,7 @@ number.2.Flute.Music = { % [Flute.Music measure 89] \override RepeatTie.extra-offset = #'(-1.5 . 0) fs''!2. - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! %! EXPLICIT_DYNAMIC %! SPANNER_START @@ -4591,18 +4583,14 @@ number.2.Flute.Music = { %! HIDDEN %! NOTE b'1 * 1/4 - %! REDUNDANT_DYNAMIC_COLOR - %! ANCHOR_NOTE - %! REDUNDANT_DYNAMIC - - \tweak color #(x11-color 'DeepPink1) - %! ANCHOR_NOTE - %! REDUNDANT_DYNAMIC - \baca-p-parenthesized %! ANCHOR_NOTE %! DURATION_MULTIPLIER %! HIDDEN %! NOTE %@% ^ \baca-duration-multiplier-markup #"1" #"4" + %! ANCHOR_NOTE + %! SPANNER_STOP + \! } diff --git a/faberge/sections/02/music.py b/faberge/sections/02/music.py index 874379de7c..02b4ca399b 100644 --- a/faberge/sections/02/music.py +++ b/faberge/sections/02/music.py @@ -370,11 +370,12 @@ def fl(m): baca.flat_glissando(o, "F#4") baca.spanners.hairpin( o.tleaves()[:2], - "niente o< p", + "o< p", ) baca.spanners.hairpin( o.tleaves()[-1:], - "(p) >o", + "(p) >o !", + with_next_leaf=True, ) with baca.scope(m.get(89, 92)) as o: baca.pitches(o, "F#4 F#3", allow_repeats=True) @@ -385,12 +386,11 @@ def fl(m): ) baca.spanners.hairpin( o.tleaves()[:2], - "niente o< p", + "o< p", ) - # TODO: change to baca.spanners.hairpin() - baca.piecewise.hairpin( - [baca.select.rleak(baca.select.tleaves(o))[-2:]], - "(p) >o", + baca.spanners.hairpin( + baca.select.rleak(baca.select.tleaves(o))[-2:], + "(p) >o !", ) baca.override.repeat_tie_extra_offset(o, (-1.5, 0)) baca.breathe(o.pleaf(-1)) diff --git a/faberge/sections/03/music.ily b/faberge/sections/03/music.ily index e1cfd1d7d2..0df9e0ce69 100644 --- a/faberge/sections/03/music.ily +++ b/faberge/sections/03/music.ily @@ -2578,11 +2578,6 @@ number.3.Flute.Music = { % [Flute.Music measure 9] g'2. - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC - \! - \tweak parent-alignment-X -0.5 - \tweak staff-padding 3.5 ^ \markup { \override #'(circle-padding . 0.25) \circle \finger 2 } @@ -3900,11 +3895,6 @@ number.3.Flute.Music = { % [Flute.Music measure 53] g''2. - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC - \! - \tweak parent-alignment-X -0.5 - \tweak staff-padding 3.5 ^ \markup { \override #'(circle-padding . 0.25) \circle \finger 1 } @@ -5580,10 +5570,7 @@ number.3.EnglishHorn.Music = { r8 d'8 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! \revert DynamicLineSpanner.staff-padding \revert NoteHead.style @@ -5791,11 +5778,6 @@ number.3.Clarinet.Music = { %! REAPPLIED_STAFF_LINES \startStaff f4 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC - \! %! REAPPLIED_INSTRUMENT_ALERT ^ \baca-reapplied-instrument-markup "(“BassClarinet”)" %! EXPLICIT_DYNAMIC @@ -5861,10 +5843,7 @@ number.3.Clarinet.Music = { % [Clarinet.Music measure 4] fqs!4 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! %! EXPLICIT_DYNAMIC %! SPANNER_START @@ -5922,10 +5901,7 @@ number.3.Clarinet.Music = { % [Clarinet.Music measure 7] f4 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! %! EXPLICIT_DYNAMIC %! SPANNER_START @@ -5989,10 +5965,7 @@ number.3.Clarinet.Music = { % [Clarinet.Music measure 12] fqs!4 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! %! EXPLICIT_DYNAMIC %! SPANNER_START @@ -6050,10 +6023,7 @@ number.3.Clarinet.Music = { % [Clarinet.Music measure 15] f4 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! %! EXPLICIT_DYNAMIC %! SPANNER_START @@ -6108,10 +6078,7 @@ number.3.Clarinet.Music = { % [Clarinet.Music measure 17] fqs!4 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! %! EXPLICIT_DYNAMIC %! SPANNER_START @@ -6175,10 +6142,7 @@ number.3.Clarinet.Music = { % [Clarinet.Music measure 22] f4 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! %! EXPLICIT_DYNAMIC %! SPANNER_START @@ -6242,10 +6206,7 @@ number.3.Clarinet.Music = { % [Clarinet.Music measure 27] fqs!4 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! %! EXPLICIT_DYNAMIC %! SPANNER_START @@ -6303,10 +6264,7 @@ number.3.Clarinet.Music = { % [Clarinet.Music measure 30] f4 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! %! EXPLICIT_DYNAMIC %! SPANNER_START @@ -6364,10 +6322,7 @@ number.3.Clarinet.Music = { % [Clarinet.Music measure 33] fqs!4 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! %! EXPLICIT_DYNAMIC %! SPANNER_START @@ -6431,10 +6386,7 @@ number.3.Clarinet.Music = { % [Clarinet.Music measure 38] f4 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! %! EXPLICIT_DYNAMIC %! SPANNER_START @@ -6492,10 +6444,7 @@ number.3.Clarinet.Music = { % [Clarinet.Music measure 41] fqs!4 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! %! EXPLICIT_DYNAMIC %! SPANNER_START @@ -6550,10 +6499,7 @@ number.3.Clarinet.Music = { % [Clarinet.Music measure 43] f4 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! %! EXPLICIT_DYNAMIC %! SPANNER_START @@ -6617,10 +6563,7 @@ number.3.Clarinet.Music = { % [Clarinet.Music measure 48] fqs!4 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! %! EXPLICIT_DYNAMIC %! SPANNER_START @@ -6684,10 +6627,7 @@ number.3.Clarinet.Music = { % [Clarinet.Music measure 53] e4 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! %! EXPLICIT_DYNAMIC %! SPANNER_START @@ -6851,11 +6791,6 @@ number.3.Clarinet.Music = { % [Clarinet.Music measure 69] d4 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC - \! %! EXPLICIT_DYNAMIC %! SPANNER_START - \tweak circled-tip ##t @@ -9904,10 +9839,7 @@ number.3.Violin.Music = { f'16 f'16 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! ] @@ -11538,10 +11470,7 @@ number.3.Viola.Music = { f'8 f'8 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! ] diff --git a/faberge/sections/03/music.py b/faberge/sections/03/music.py index de20fd1e64..ff3842af07 100644 --- a/faberge/sections/03/music.py +++ b/faberge/sections/03/music.py @@ -324,10 +324,10 @@ def fl(m): with baca.scope(m[8]) as o: baca.dynamic(o.phead(0), "p") with baca.scope(m.get(9, 10)) as o: - leaves = baca.select.rleak(baca.select.tleaves(o)) baca.piecewise.hairpin( - baca.select.lparts(leaves, [1, 1 + 1]), - "niente o< mp >o !", + baca.select.lparts(o.pleaves(), [1, 1]), + "o< mp >o !", + with_next_leaf=True, ) with baca.scope(m.get(11, 12)) as o: library.swells(o, "mf") @@ -358,10 +358,10 @@ def fl(m): with baca.scope(m[52]) as o: baca.dynamic(o.phead(0), "p") with baca.scope(m.get(53, 54)) as o: - leaves = baca.select.rleak(baca.select.tleaves(o)) baca.piecewise.hairpin( - baca.select.lparts(leaves, [1, 1 + 1]), - "niente o< pp >o !", + baca.select.lparts(o.pleaves(), [1, 1]), + "o< pp >o !", + with_next_leaf=True, ) with baca.scope(m.get(55, 60)) as o: library.swells(o, "ppp") @@ -452,7 +452,7 @@ def eh(m): baca.override.dls_staff_padding(o, 8) baca.spanners.hairpin( o.tleaves(), - '"ff" >o niente', + '"ff" >o !', ) with baca.scope(m.get(61, 68)) as o: baca.staff_lines(o.leaf(0), 1) @@ -494,11 +494,12 @@ def cl(m): baca.flat_glissando(o, "Eb2") baca.spanners.hairpin( o.tleaves()[:2], - "niente o< p", + "o< p", ) baca.spanners.hairpin( o.tleaves()[-1:], - "(p) >o", + "(p) >o !", + with_next_leaf=True, ) with baca.scope(m.get(4, 52)) as o: for plt in baca.select.plts(o): @@ -506,11 +507,12 @@ def cl(m): continue baca.spanners.hairpin( baca.select.tleaves(plt)[:2], - "niente o< p", + "o< p", ) baca.spanners.hairpin( baca.select.tleaves(plt)[-1:], - "(p) >o", + "(p) >o !", + with_next_leaf=True, ) with baca.scope(m.get(4, 6)) as o: baca.flat_glissando(o, "Eqf2") @@ -548,7 +550,7 @@ def cl(m): continue baca.spanners.hairpin( baca.select.tleaves(plt)[:2], - "niente o< pp", + "o< pp", ) baca.spanners.hairpin( baca.select.rleak(plt)[-2:], @@ -578,7 +580,7 @@ def cl(m): continue baca.spanners.hairpin( baca.select.tleaves(plt)[:2], - "niente o< ppp", + "o< ppp", ) baca.spanners.hairpin( baca.select.rleak(plt)[-2:], @@ -759,7 +761,7 @@ def vn(m): with baca.scope(m.get(13, 22)) as o: baca.spanners.hairpin( o, - '("ff") >o niente', + '("ff") >o !', ) with baca.scope(m.get(23, 52)) as o: baca.dynamic(o.phead(0), "ppp") @@ -856,7 +858,7 @@ def va(m): with baca.scope(m.get(13, 22)) as o: baca.spanners.hairpin( o.tleaves(), - '("ff") >o niente', + '("ff") >o !', ) with baca.scope(m.get(23, 52)) as o: baca.dynamic(o.phead(0), "pp") diff --git a/faberge/sections/04/.metadata b/faberge/sections/04/.metadata index ba9bfa7112..f70b4b4dfa 100644 --- a/faberge/sections/04/.metadata +++ b/faberge/sections/04/.metadata @@ -39,16 +39,6 @@ "first_measure_number": 177, "has_anchor_skip": True, "persistent_indicators": { - "Cello.Music": [ - baca.Memento( - context="Cello.Music", - edition=None, - manifest=None, - prototype="abjad.Dynamic", - synthetic_offset=None, - value="niente", - ) - ], "Cello.Staff": [ baca.Memento( context="Cello.Music", diff --git a/faberge/sections/04/music.ily b/faberge/sections/04/music.ily index ae9be51a94..8e65d4301c 100644 --- a/faberge/sections/04/music.ily +++ b/faberge/sections/04/music.ily @@ -2158,11 +2158,6 @@ number.4.Cello.Music = { %! EXPLICIT_STAFF_LINES \startStaff bf'!4 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC - \! %! REAPPLIED_INSTRUMENT_ALERT ^ \baca-reapplied-instrument-markup "(“Cello”)" %! MATERIAL_ANNOTATION_SPANNER @@ -2226,18 +2221,12 @@ number.4.Cello.Music = { - \tweak color #blue %! EXPLICIT_DYNAMIC %! SPANNER_START - - \tweak to-barline ##t - %! EXPLICIT_DYNAMIC - %! SPANNER_START \> \glissando % [Cello.Music measure 2] d''4. - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! %! EXPLICIT_DYNAMIC %! SPANNER_START @@ -2267,46 +2256,20 @@ number.4.Cello.Music = { - \tweak color #blue %! EXPLICIT_DYNAMIC %! SPANNER_START - - \tweak to-barline ##t - %! EXPLICIT_DYNAMIC - %! SPANNER_START \> \glissando fqs''!8 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! ] - %! EXPLICIT_DYNAMIC - %! SPANNER_START - - \tweak circled-tip ##t - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - %! SPANNER_START - - \tweak color #blue - %! EXPLICIT_DYNAMIC - %! SPANNER_START - \< \glissando r8 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC - \p r4. e'8 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC - \! %! EXPLICIT_DYNAMIC %! SPANNER_START - \tweak circled-tip ##t @@ -2342,10 +2305,7 @@ number.4.Cello.Music = { \glissando c4. - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! %! EXPLICIT_DYNAMIC %! SPANNER_START @@ -2382,10 +2342,7 @@ number.4.Cello.Music = { \glissando g2 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! %! EXPLICIT_DYNAMIC %! SPANNER_START @@ -2421,10 +2378,7 @@ number.4.Cello.Music = { \glissando c'8 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! %! EXPLICIT_DYNAMIC %! SPANNER_START @@ -2461,20 +2415,12 @@ number.4.Cello.Music = { \glissando r8 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! r4. e'8 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC - \! %! EXPLICIT_DYNAMIC %! SPANNER_START - \tweak circled-tip ##t @@ -2510,10 +2456,7 @@ number.4.Cello.Music = { \glissando c4. - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! %! EXPLICIT_DYNAMIC %! SPANNER_START @@ -2549,10 +2492,7 @@ number.4.Cello.Music = { \glissando g4 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! %! EXPLICIT_DYNAMIC %! SPANNER_START @@ -2589,18 +2529,10 @@ number.4.Cello.Music = { \glissando r4. - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! c'8 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC - \! %! EXPLICIT_DYNAMIC %! SPANNER_START - \tweak circled-tip ##t @@ -2637,10 +2569,7 @@ number.4.Cello.Music = { \glissando e'8 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! ] %! EXPLICIT_DYNAMIC @@ -2677,10 +2606,7 @@ number.4.Cello.Music = { \glissando c8 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! %! EXPLICIT_DYNAMIC %! SPANNER_START @@ -2716,10 +2642,7 @@ number.4.Cello.Music = { \revert NoteHead.style r8 - %! EXPLICIT_DYNAMIC_COLOR - %! EXPLICIT_DYNAMIC - - \tweak color #blue - %! EXPLICIT_DYNAMIC + %! SPANNER_STOP \! \revert DynamicLineSpanner.staff-padding diff --git a/faberge/sections/04/music.py b/faberge/sections/04/music.py index 5c5aad4677..36d7195496 100644 --- a/faberge/sections/04/music.py +++ b/faberge/sections/04/music.py @@ -434,32 +434,27 @@ def vc(m, metadata): name="CELLO_GLISSANDI", ) baca.glissando(o.tleaves()) - runs = baca.select.rleak_runs(o) - for i, run in enumerate(runs): - if i == 0: - baca.piecewise.hairpin( - baca.select.clparts(run, [1]), - "niente o< p >o", - do_not_start_spanner_on_final_piece=True, - ) - elif i == 1: - baca.piecewise.hairpin( - baca.select.clparts(run, [1]), - "niente o< mp >o", - do_not_start_spanner_on_final_piece=True, - ) - elif i == 2: - baca.piecewise.hairpin( - baca.select.clparts(run, [1]), - "niente o< mf >o", - do_not_start_spanner_on_final_piece=True, - ) - elif i == 3: - baca.piecewise.hairpin( - baca.select.clparts(run, [1]), - "niente o< f >o", - do_not_start_spanner_on_final_piece=True, - ) + runs = abjad.select.runs(o) + baca.piecewise.hairpin( + baca.select.clparts(runs[0], [1]), + "o< p >o ! o< p >o !", + forbid_al_niente_to_bar_line=True, + ) + baca.piecewise.hairpin( + baca.select.clparts(runs[1], [1]), + "o< mp >o ! o< mp >o ! o< mp >o ! o< mp >o !", + with_next_leaf=True, + ) + baca.piecewise.hairpin( + baca.select.clparts(runs[2], [1]), + "o< mf >o ! o< mf >o ! o< mf >o !", + with_next_leaf=True, + ) + baca.piecewise.hairpin( + baca.select.clparts(runs[3], [1]), + "o< f >o ! o< f >o ! o< f >o !", + with_next_leaf=True, + ) @baca.build.timed("make_score") diff --git a/faberge/sections/stylesheet.ily b/faberge/sections/stylesheet.ily index f162d3977c..4f52cbec60 100644 --- a/faberge/sections/stylesheet.ily +++ b/faberge/sections/stylesheet.ily @@ -20,3 +20,6 @@ } \layout { \context { \Score barNumberVisibility = #all-bar-numbers-visible } } + +local-measure-number-extra-offset = #'(0 . 7) +stage-number-extra-offset = #'(0 . 13)