Dynamic reshaping of sequences

After discussing with @jcelerier about the integration of Raphaël Marczak’s Segment² addon,
We thought we could show here how intervals, states and processes could be reordered
dynamically , catch up to each other and adjust relative speeds to fit transitions in real time.

As an example, here is, by contrast, the default ordering along the linear time arrow.

original

In this scenario, processes A, B and C follow one another sequentially, with a gap between
A and B and a slight overlap of B over C.

Introducing a cursor that I’ll represent with a little star, we can draw up a “privileged” system where processes are ordered by distance to this single starting point.

privileged1

Here, C precedes B, then A, presumably with a slight gap at the start (the little arrow between the cursor and C), another slight gap between C and B (as this first little arrow added to the length of C still appears to be shorter than the arrow between the cursor and B) with an overlap of B and A.

The duration represented by the arrows as well as the speed of the intervals ought to be scaled for the whole thing to fit the enclosing timeline.

privileged2

Displacing the cursor as shown above, would reorganize the sequence as B followed by A then C, apparently all overlapping. When transitioning between the previous positions of the cursor
and this one, processes would need to speed up and slow down individually.
The interpolation would show the sequence C, B, A turn into B, A, C, with C possibly playing backwards and being passed by both other processes to find it’s place at the end.

In this system, execution is entirely dependent of the position of the cursor, the “point of view”.

Alternatively, a “relative” system would attribute a unique “direction” to each processes.
(sorry for using so many “speech marks”)
The arrows angle represents here various possible orientation of the timeline. The length of the arrow represents a scaling factor, stretching and contracting the sequence.
A stretched sequence implies a faster timeline and processes spread away from each other.
A contracted sequence has a slower timeline and more overlapping elements.

The cursor would not be considered here as a sort of starting point.
By proximity with neighboring processes and their respective time scale and orientation,
the star would define the current dominant scale and orientation.

relative1

in the example above, the sequence now starts with C, followed by A and then B.
as the cursor is closet to C, the timeline reads almost vertically, from bottom to top.

relative2

In this example, the sequences goes from B to A to C as the cursor is closest to A.
The arrow of A orients the timeline diagonally, starting from the top left corner to the
bottom of the enclosing scenario.
As this arrow is roughly twice the length of C’s arrow, the sequence would be re-scaled to play twice as fast in the same time span as in the previous example, potentially creating more gaps between processes.
To be truly relative, this sequence wouldn’t be stretched equally across the timeline, but stretched
either sides of A. The placement of the cursor would then represent the only point of the oriented timeline played at default speed.

Once again, moving the cursor in real time would dynamically re-scale and reorganize the sequence. Form it’s current position, moving the star towards B would gradually rotate the current timeline clockwise whereas moving it towards C would rotate it counter-clockwise and contract it.

Another type of manipulation could be achieved with An “absolute” system, by contrast with the “privileged” and “relative” form.

An “absolute” system wouldn’t require a cursor. It would “simply” correspond to reading the sequence along the timeline vector[0, 1] multiplied by î and ĵ. This could also be represented by a linear transformation of the sequence’s 2D plane against a still horizontal timeline.
As an example, here is the original sequence scaled from î = 1, ĵ = 1 to î = -1, ĵ = -1 .

absolute

This would be the score equivalent to 3Blue1Brown’s animations explaining
linear algebra. Just Imagine processes on his 2D plane.

these animations starts about 3.20 mins in

1 Like

I like the idea and this makes me think about Iannix
how about including Iannix as a Score processus ? :grinning:

A Iannix Process would be great!
It dosen’t seem that easy tho,
but I’ll Hope to take a closer look at this possibility in the near future.