Creates a synchronous siteswap object from a two-handed simultaneous-throw
sequence. Synchronous notation describes patterns where both hands throw at
the same time, written as pairs of throw heights in parentheses such as
"(4,4)" or "(4,2x)*". An x suffix marks a crossing throw; a trailing
* indicates the pattern alternates between two mirrored versions.
Usage
synchronousSiteswap(sequence = character(0))Additional properties
@typeAlways
"synchronous"(read-only).@full_sequenceThe expanded sequence with the
*shorthand resolved.@throwsCharacter vector of all individual throw values across one expanded cycle.
@throws_by_handNamed list with elements
hand_1andhand_2, each a character vector of throws for that hand per slot.@periodNumber of throw slots per full cycle (counts both hands per simultaneous beat, so always even).
@symmetry"symmetrical"if the pattern is its own mirror image;"asymmetrical"otherwise.@n_propsMean of the slide sequence, equal to the number of props.
@can_throwTRUEif no collisions occur in the slide sequence.@satisfies_average_theoremTRUEifn_propsis a whole number.@validTRUEif bothcan_throwandsatisfies_average_theoremareTRUE.
Examples
synchronousSiteswap("(4,4)")
#> ✔ '(4,4)' is valid synchronous siteswap
#> ℹ It uses 4 props
#> ℹ It is symmetrical with period 2
synchronousSiteswap("(4,2x)*")
#> ✔ '(4,2x)*' is valid synchronous siteswap
#> ℹ Full sequence: (4,2x)(2x,4)
#> ℹ It uses 3 props
#> ℹ It is symmetrical with period 4
s <- synchronousSiteswap("(4,2x)*")
s@n_props
#> [1] 3
s@valid
#> [1] TRUE
