FoscTimespanList

Returns a FoscTimespanList.


Description

Timespan list.

FIXME: examples passing keyword arguments to show are ineffective. Need to implement these in writePNG.

FIXME: FoscTimespanList.show doesn’t hide tagline


Attributes Summary

Instance Properties

allAreContiguous Is true when all timespans are contiguous.
allAreNonoverlapping Is true when all timespans are nonoverlapping.
allAreWellformed Is true when all timespans are wellformed.
axis Gets axis defined as equal to arithmetic mean of start- and stop-offsets.
duration Gets duration of timespan list.
isSorted Is true when timespans are in time order.
startOffset Gets start offset.
stopOffset Gets stop offset.
timespan Gets timespan of timespan list.

Instance Methods: Special Methods

asCompileString
illustrate Illustrates timespans.
invert Inverts timespans.
show

Instance Methods: SET OPERATIONS

- (abjad: sub, -)
sect (abjad: and)

Instance Methods

computeSect (abjad: compute_logical_and)
computeUnion (abjad: computer_logical_or)
computeSymmetricDifference (abjad: compute_logical_xor)
computeOverlapFactor Computes overlap factor of timespans.
computeOverlapFactorMapping Computes overlap factor for each consecutive offset pair in timespans.
countOffsets Counts offsets.
explode Explodes timespans into timespan lists, avoiding overlap, and distributing density as evenly as possible.
getTimespansThatSatisfyTimeRelation • NOTE: use select instead
partition Partitions timespans into timespan lists.
reflect Reflects timespans.
removeDegenerateTimespans Removes degenerate timespans.
roundOffsets Rounds offsets of timespans in list to multiples of multiplier.
scale Scales timespan by multiplier relative to anchor.
sort
splitAtOffset Splits timespans at offset.
splitAtOffsets Splits timespans at offsets.
stretch Stretches timespans by multiplier relative to anchor.
translate Translates timespans by translation.
translateOffsets Translates timespans by startOffsetTranslation and stopOffsetTranslation.


Usage

  1. Nonverlapping timespan list.

    t = FoscTimespanList([
        FoscTimespan(0, 3),
        FoscTimespan(3, 6),
        FoscTimespan(6, 10)
    ]);
    t.show(scale: 0.5);

  2. Nonverlapping timespan list.

    t = FoscTimespanList([ FoscTimespan(0, 10), FoscTimespan(10, 20), FoscTimespan(30, 40) ]); t.show(scale: 0.5);

  3. Overlapping timespan list.

    t = FoscTimespanList([
        FoscTimespan(0, 6),
        FoscTimespan(5, 12),
        FoscTimespan(-2, 8),
        FoscTimespan(15, 20),
        FoscTimespan(24, 30)
    ]);
    t.show(scale: 0.5);

  4. Overlapping timespan list.

    t = FoscTimespanList([
        FoscTimespan(0, 3),
        FoscTimespan(5, 13),
        FoscTimespan(6, 10),
        FoscTimespan(8, 9),
        FoscTimespan(15, 23),
        FoscTimespan(16, 21),
        FoscTimespan(17, 19),
        FoscTimespan(19, 20),
        FoscTimespan(25, 30),
        FoscTimespan(26, 29),
        FoscTimespan(32, 34),
        FoscTimespan(34, 37),
    ]);
    t.show(scale: 0.5);


Instance Properties


allAreContiguous

Is true when all timespans are contiguous.

Returns true or false.

  1. Is true when timespans are contiguous.

    t = FoscTimespanList([
        FoscTimespan(0, 3),
        FoscTimespan(3, 6),
        FoscTimespan(6, 10),
    ]);
    t.allAreContiguous;
    true
  2. Is false when timespans are not contiguous.

    t = FoscTimespanList([
        FoscTimespan(0, 3),
        FoscTimespan(4, 6),
        FoscTimespan(6, 10),
    ]);
    t.allAreContiguous;
    false
  3. Is true when receiver is empty.

    t = FoscTimespanList();
    t.allAreContiguous;
    true


allAreNonoverlapping

Is true when all timespans are nonoverlapping.

Returns true or false.


allAreWellformed

Is true when all timespans are wellformed.

Returns true or false.

  1. Is true when all timespans are well-formed.

    t = FoscTimespanList([
        FoscTimespan(0, 3),
        FoscTimespan(3, 6),
        FoscTimespan(6, 10),
    ]);
    t.allAreWellformed;
    true
  2. Is true when all timespans are well-formed.

    t = FoscTimespanList([
        FoscTimespan(0, 3),
        FoscTimespan(2, 6),
        FoscTimespan(6, 10),
    ]);
    t.allAreWellformed;
    true
  3. Is true when receiver is empty.

    t = FoscTimespanList();
    t.allAreWellformed;
    true


axis

Gets axis defined as equal to arithmetic mean of start- and stop-offsets.

Return offset or nil.

  1. Get axis.

    t = FoscTimespanList([
        FoscTimespan(0, 3),
        FoscTimespan(3, 6),
        FoscTimespan(6, 10),
    ]);
    t.axis.cs;
    FoscOffset(5, 1)
  2. Returns nil when receiver is empty.

    t = FoscTimespanList();
    t.axis;


duration

Gets duration of timespan list.

Returns duration.

  1. Get duration.

    t = FoscTimespanList([
        FoscTimespan(0, 3),
        FoscTimespan(3, 6),
        FoscTimespan(6, 10),
    ]);
    t.duration.cs;
    FoscDuration(10, 1)
    t = FoscTimespanList([
        FoscTimespan(0, 16),
        FoscTimespan(5, 12),
        FoscTimespan(-2, 8),
        FoscTimespan(15, 20),
        FoscTimespan(24, 30)
    ]);
    t.duration.cs;
    FoscDuration(32, 1)
  2. Returns zero when timespan list is empty.

    t = FoscTimespanList();
    t.duration.cs;
    FoscDuration(0, 1)


isSorted

Is true when timespans are in time order.

Returns true or false.

  1. Example

    t = FoscTimespanList([
        FoscTimespan(0, 3),
        FoscTimespan(3, 6),
        FoscTimespan(6, 10)
    ]);
    t.isSorted;
    true
  2. Example

    t = FoscTimespanList([
        FoscTimespan(0, 3),
        FoscTimespan(6, 10),
        FoscTimespan(3, 6)
    ]);
    t.isSorted;
    false


startOffset

Gets start offset.

Defined as equal to earliest start offset of any timespan in list.

Returns offset or nil.

  1. Example

    a = FoscTimespan(0, 3);
    b = FoscTimespan(3, 6);
    c = FoscTimespan(6, 10);
    t = FoscTimespanList([a, b, c]);
    t.startOffset.str;
    0/1


stopOffset

Gets stop offset.

Defined as equal to latest stop offset of any timespan.

Returns offset or nil.

  1. Example

    a = FoscTimespan(0, 3);
    b = FoscTimespan(3, 6);
    c = FoscTimespan(6, 10);
    t = FoscTimespanList([a, b, c]);
    t.stopOffset;
    FoscOffset(10, 1)


timespan

Gets timespan of timespan list.

Returns timespan.


Instance Methods: Special Methods


asCompileString

  1. Example

    t = FoscTimespanList([
        FoscTimespan(0, 10),
        FoscTimespan(10, 20),
        FoscTimespan(30, 40)
    ]);
    t.cs;
    FoscTimespanList([
        FoscTimespan(0/1, 10/1),
        FoscTimespan(10/1, 20/1),
        FoscTimespan(30/1, 40/1)
    ])


illustrate

Illustrates timespans.

Returns LilyPond file.

  1. Example

    t = FoscTimespanList([
        FoscTimespan(0, 3),
        FoscTimespan(4, 6),
        FoscTimespan(6, 10),
    ]);
    f = t.illustrate(scale: 0.5);
    f.format;
    \version "2.22.0"
    \language "english"
    
    \markup {
        \column
            {
                \overlay
                    {
                        \translate
                            #'(1.0 . 1)
                            \sans
                                \fontsize
                                    #-3
                                    \center-align
                                        \fraction
                                            0
                                            1
                        \translate
                            #'(23.5 . 1)
                            \sans
                                \fontsize
                                    #-3
                                    \center-align
                                        \fraction
                                            3
                                            1
                        \translate
                            #'(31.0 . 1)
                            \sans
                                \fontsize
                                    #-3
                                    \center-align
                                        \fraction
                                            4
                                            1
                        \translate
                            #'(46.0 . 1)
                            \sans
                                \fontsize
                                    #-3
                                    \center-align
                                        \fraction
                                            6
                                            1
                        \translate
                            #'(76.0 . 1)
                            \sans
                                \fontsize
                                    #-3
                                    \center-align
                                        \fraction
                                            10
                                            1
                    }
                \pad-to-box
                    #'(0 . 74.0)
                    #'(0 . 2.5)
                    \postscript
                        #"
                        0.2 setlinewidth
                        1.0 0.5 moveto
                        23.5 0.5 lineto
                        stroke
                        1.0 1.25 moveto
                        1.0 -0.25 lineto
                        stroke
                        23.5 1.25 moveto
                        23.5 -0.25 lineto
                        stroke
                        31.0 0.5 moveto
                        46.0 0.5 lineto
                        stroke
                        31.0 1.25 moveto
                        31.0 -0.25 lineto
                        stroke
                        46.0 1.25 moveto
                        46.0 -0.25 lineto
                        stroke
                        46.0 0.5 moveto
                        76.0 0.5 lineto
                        stroke
                        46.0 1.25 moveto
                        46.0 -0.25 lineto
                        stroke
                        76.0 1.25 moveto
                        76.0 -0.25 lineto
                        stroke
                        0.1 setlinewidth
                        [ 0.1 0.2 ] 0 setdash
                        1.0 2.5 moveto
                        1.0 1 lineto
                        stroke
                        23.5 2.5 moveto
                        23.5 1 lineto
                        stroke
                        31.0 2.5 moveto
                        31.0 1 lineto
                        stroke
                        46.0 2.5 moveto
                        46.0 1 lineto
                        stroke
                        76.0 2.5 moveto
                        76.0 1 lineto
                        stroke
                        0 0 moveto
                        0.99 setgray
                        0 0.01 rlineto
                        stroke
                        "
            }
    }
    f.show;


invert

Inverts timespans.

Returns new timespan list.

  1. Example

    t = FoscTimespanList([
        FoscTimespan(-2, 8),
        FoscTimespan(15, 20),
        FoscTimespan(24, 30),
    ]);
    t.show(scale: 0.5);

    t.invert;
    t.show(range: #[-2,30], scale: 0.5);


show


Instance Methods: SET OPERATIONS


-

(abjad: sub, -)

Deletes material from receiver that intersects timespan.

Operates in place and returns timespan list.

  1. Example

    t = FoscTimespanList([
        FoscTimespan(0, 16),
        FoscTimespan(5, 12),
        FoscTimespan(-2, 8),
    ]);
    t.show(scale: 0.5);

    a = FoscTimespan(5, 10);
    t - a;
    t.show(scale: 0.5);


sect

(abjad: and)

Keeps material from receiver that intersects timespan.

Operates in place and returns timespan list.

  1. Example

    t = FoscTimespanList([
        FoscTimespan(0, 16),
        FoscTimespan(5, 12),
        FoscTimespan(-2, 8),
    ]);
    t.show(scale: 0.5);

    a = FoscTimespan(5, 10);
    t.sect(a);
    t.show(range: #[-2,16], scale: 0.5);


Instance Methods


computeSect

(abjad: compute_logical_and)

Computes setwise intersection (logical AND) of timespans.

Operates in place and returns timespan list.

  1. Example

    t = FoscTimespanList([
        FoscTimespan(0, 10),
        FoscTimespan(5, 12)
    ]);
    t.show(scale: 0.5);

    t.computeSect;
    t.show(range: #[0,12], scale: 0.5);

  2. Example

    t = FoscTimespanList([
        FoscTimespan(0, 10),
        FoscTimespan(5, 12),
        FoscTimespan(-2, 8)
    ]);
    t.show(range: #[-2,12], scale: 0.5);

    t.computeSect;
    t.show(range: #[0,12], scale: 0.5);


computeUnion

(abjad: computer_logical_or)

Computes union (logical OR) of timespans.

Operates in place and returns timespan list.

  1. Example

    t = FoscTimespanList([
        FoscTimespan(0, 10),
        FoscTimespan(5, 12)
    ]);
    t.show(scale: 0.5);

    t.computeUnion;
    t.show(range: #[0,12], scale: 0.5);

  2. Example

    t = FoscTimespanList([
        FoscTimespan(0, 10),
        FoscTimespan(5, 12),
        FoscTimespan(-2, 8)
    ]);
    t.show(range: #[-2,12], scale: 0.5);

    t.computeUnion;
    t.show(range: #[-2,12], scale: 0.5);


computeSymmetricDifference

(abjad: compute_logical_xor)

Computes symmetric difference (logical XOR) of timespans.

Operates in place and returns timespan list.

  1. Example

    t = FoscTimespanList([
        FoscTimespan(0, 10),
        FoscTimespan(5, 12)
    ]);
    t.show(scale: 0.5);

    t.computeSymmetricDifference;
    t.cs;
    FoscTimespanList([
        FoscTimespan(0/1, 5/1),
        FoscTimespan(10/1, 12/1)
    ])
    t.show(range: #[0,12], scale: 0.5);

  2. Example

    t = FoscTimespanList([
        FoscTimespan(0, 10),
        FoscTimespan(5, 12),
        FoscTimespan(-2, 2)
    ]);
    t.cs;
    FoscTimespanList([
        FoscTimespan(0/1, 10/1),
        FoscTimespan(5/1, 12/1),
        FoscTimespan(-2/1, 2/1)
    ])
    t.computeSymmetricDifference;
    t.cs;
    FoscTimespanList([
        FoscTimespan(-2/1, 0/1),
        FoscTimespan(2/1, 5/1),
        FoscTimespan(10/1, 12/1)
    ])
  3. Example

    t = FoscTimespanList([
        FoscTimespan(0, 10),
        FoscTimespan(4, 8),
        FoscTimespan(2, 6)
    ]);
    t.cs;
    FoscTimespanList([
        FoscTimespan(0/1, 10/1),
        FoscTimespan(4/1, 8/1),
        FoscTimespan(2/1, 6/1)
    ])
    t.computeSymmetricDifference;
    t.cs;
    FoscTimespanList([
        FoscTimespan(0/1, 2/1),
        FoscTimespan(8/1, 10/1)
    ])
  4. Example

    t = FoscTimespanList([
        FoscTimespan(0, 10),
        FoscTimespan(0, 10)
    ]);
    t.cs;
    FoscTimespanList([
        FoscTimespan(0/1, 10/1),
        FoscTimespan(0/1, 10/1)
    ])
    t.computeSymmetricDifference;
    t.cs;
    FoscTimespanList([])


computeOverlapFactor

Computes overlap factor of timespans.

Returns multiplier.

  1. Example

    l = FoscTimespanList([
        FoscTimespan(0, 10),
        FoscTimespan(5, 15),
        FoscTimespan(20, 25),
        FoscTimespan(20, 30),
    ]);
    FoscTimespanList([
        FoscTimespan(0/1, 10/1),
        FoscTimespan(5/1, 15/1),
        FoscTimespan(20/1, 25/1),
        FoscTimespan(20/1, 30/1)
    ])
  2. Computes overlap factor across the entire list.

    l.computeOverlapFactor.cs;
    FoscMultiplier(7, 6)
  3. Computes overlap factor within a specific timespan.

    l.computeOverlapFactor(FoscTimespan(-15, 0)).cs;
    FoscMultiplier(0, 1)
  4. Computes overlap factor.

    l.computeOverlapFactor(FoscTimespan(-10, 5)).cs;
    FoscMultiplier(1, 3)
  5. Computes overlap factor.

    l.computeOverlapFactor(FoscTimespan(-5, 10)).cs;
    FoscMultiplier(1, 1)
  6. Computes overlap factor.

    l.computeOverlapFactor(FoscTimespan(0, 15)).cs;
    FoscMultiplier(4, 3)
  7. Computes overlap factor.

    l.computeOverlapFactor(FoscTimespan(5, 20)).cs;
    FoscMultiplier(1, 1)
  8. Computes overlap factor.

    l.computeOverlapFactor(FoscTimespan(10, 25)).cs;
    FoscMultiplier(1, 1)
  9. Computes overlap factor.

    l.computeOverlapFactor(FoscTimespan(15, 30)).cs;
    FoscMultiplier(1, 1)


computeOverlapFactorMapping

Computes overlap factor for each consecutive offset pair in timespans.

Returns mapping.

  1. Computes overlap factor mapping.

    l = FoscTimespanList([
        FoscTimespan(0, 10),
        FoscTimespan(5, 15),
        FoscTimespan(20, 25),
        FoscTimespan(20, 30),
    ]);
    m = l.computeOverlapFactorMapping;
    m.asSortedArray.collect { |each| "%: %".format(each[0].cs, each[1].cs) };
    [ "FoscTimespan(0/1, 5/1): FoscMultiplier(1, 1)", "FoscTimespan(5/1, 10/1): FoscMultiplier(2, 1)", "FoscTimespan(10/1, 15/1): FoscMultiplier(1, 1)", "FoscTimespan(15/1, 20/1): FoscMultiplier(0, 1)", "FoscTimespan(20/1, 25/1): FoscMultiplier(2, 1)", "FoscTimespan(25/1, 30/1): FoscMultiplier(1, 1)" ]


countOffsets

Counts offsets.

Returns an array of offsets and counts.

  1. Example

    a = FoscTimespanList([
        FoscTimespan(-2, 6),
        FoscTimespan(0, 6),
        FoscTimespan(5, 6),
        FoscTimespan(10, 12),
        FoscTimespan(10, 16)
    ]);
    b = a.countOffsets;
    b.collect { |each| [each[0].cs, each[1]] };
    [ [ "FoscOffset(-2, 1)", 1 ], [ "FoscOffset(0, 1)", 1 ], [ "FoscOffset(5, 1)", 1 ], [ "FoscOffset(6, 1)", 3 ], [ "FoscOffset(10, 1)", 2 ], [ "FoscOffset(12, 1)", 1 ], [ "FoscOffset(16, 1)", 1 ] ]


explode

Explodes timespans into timespan lists, avoiding overlap, and distributing density as evenly as possible.

Returns timespan lists.

  1. Example

    l = FoscTimespanList([
        FoscTimespan(0, 3),
        FoscTimespan(5, 13),
        FoscTimespan(6, 10),
        FoscTimespan(8, 9),
        FoscTimespan(15, 23),
        FoscTimespan(16, 21),
        FoscTimespan(17, 19),
        FoscTimespan(19, 20),
        FoscTimespan(25, 30),
        FoscTimespan(26, 29),
        FoscTimespan(32, 34),
        FoscTimespan(34, 37),
    ]);
    m = l.explode;
    m.collect { |timespanList|  timespanList.cs };
    [ "FoscTimespanList([
        FoscTimespan(0/1, 3/1),
        FoscTimespan(5/1, 13/1),
        FoscTimespan(17/1, 19/1),
        FoscTimespan(19/1, 20/1)
    ])", "FoscTimespanList([
        FoscTimespan(6/1, 10/1),
        FoscTimespan(16/1, 21/1),
        FoscTimespan(26/1, 29/1),
        FoscTimespan(32/1, 34/1)
    ])", "FoscTimespanList([
        FoscTimespan(8/1, 9/1),
        FoscTimespan(15/1, 23/1),
        FoscTimespan(25/1, 30/1),
        FoscTimespan(34/1, 37/1)
    ])" ]
  2. Example

    l = FoscTimespanList([
        FoscTimespan(0, 6),
        FoscTimespan(5, 12),
        FoscTimespan(-2, 8),
        FoscTimespan(15, 20),
        FoscTimespan(24, 30)
    ]);
    
    m = l.explode;
    m.collect { |timespanList|  timespanList.cs };
    [ "FoscTimespanList([
        FoscTimespan(0/1, 6/1),
        FoscTimespan(15/1, 20/1)
    ])", "FoscTimespanList([
        FoscTimespan(5/1, 12/1),
        FoscTimespan(24/1, 30/1)
    ])", "FoscTimespanList([
        FoscTimespan(-2/1, 8/1)
    ])" ]


getTimespansThatSatisfyTimeRelation

• NOTE: use select instead

  1. Example

    l = FoscTimespanList([
        FoscTimespan(0, 3),
        FoscTimespan(3, 6),
        FoscTimespan(6, 10)
    ]);
    m = FoscTimespan(8, 15);
    z = l.select { |timespan| timespan.intersectsTimespan(m) };
    z.cs;
    FoscTimespanList([
        FoscTimespan(6/1, 10/1)
    ])


partition

Partitions timespans into timespan lists.

Returns zero or more timespan lists.

  1. Partition timespans.

    l = FoscTimespanList([
        FoscTimespan(0, 3),
        FoscTimespan(3, 6),
        FoscTimespan(6, 10)
    ]);
    m = l.partition;
    m.collect { |timespanList| timespanList.cs };
    [ "FoscTimespanList([
        FoscTimespan(0/1, 3/1)
    ])", "FoscTimespanList([
        FoscTimespan(3/1, 6/1)
    ])", "FoscTimespanList([
        FoscTimespan(6/1, 10/1)
    ])" ]
  2. Partition timespans.

    l = FoscTimespanList([
        FoscTimespan(0, 16),
        FoscTimespan(5, 12),
        FoscTimespan(-2 ,8),
        FoscTimespan(15, 20),
        FoscTimespan(24, 30)
    ]);
    m = l.partition;
    m.collect { |timespanList| timespanList.cs };
    [ "FoscTimespanList([
        FoscTimespan(0/1, 16/1),
        FoscTimespan(5/1, 12/1),
        FoscTimespan(-2/1, 8/1),
        FoscTimespan(15/1, 20/1)
    ])", "FoscTimespanList([
        FoscTimespan(24/1, 30/1)
    ])" ]
  3. Treats tangent timespans as part of the same group when includeTangentTimespans is true.

    l = FoscTimespanList([
        FoscTimespan(0, 3),
        FoscTimespan(3, 6),
        FoscTimespan(6, 10)
    ]);
    m = l.partition(includeTangentTimespans: true);
    m.collect { |timespanList| timespanList.cs };
    [ "FoscTimespanList([
        FoscTimespan(0/1, 3/1),
        FoscTimespan(3/1, 6/1),
        FoscTimespan(6/1, 10/1)
    ])" ]


reflect

Reflects timespans.

Operates in place and returns timespan list.

  1. Reflects timespans about timespan list axis.

    l = FoscTimespanList([
        FoscTimespan(0, 3),
        FoscTimespan(3, 6),
        FoscTimespan(6, 10)
    ]);
    l.show(scale: 0.5);

    l.reflect;
    l.show(scale: 0.5);

  2. Reflects timespans about arbitrary axis.

    l = FoscTimespanList([
        FoscTimespan(0, 3),
        FoscTimespan(3, 6),
        FoscTimespan(6, 10)
    ]);
    l.show(range: #[0,30], scale: 0.5);

    l.reflect(15);
    l.show(range: #[0,30], scale: 0.5);


removeDegenerateTimespans

Removes degenerate timespans.

Operates in place and returns timespan list.

  1. Example

    l = FoscTimespanList([
        FoscTimespan(5, 5),
        FoscTimespan(5, 10),
        FoscTimespan(5, 25)
    ]);
    l.removeDegenerateTimespans;
    l.cs;
    FoscTimespanList([
        FoscTimespan(5/1, 10/1),
        FoscTimespan(5/1, 25/1)
    ])


roundOffsets

Rounds offsets of timespans in list to multiples of multiplier.

Operates in place and returns timespan list.

  1. Rounds offsets relative to timespan list start offset.

    l = FoscTimespanList([
        FoscTimespan(0, 3),
        FoscTimespan(3, 6),
        FoscTimespan(6, 10)
    ]);
    l.roundOffsets(3);
    l.cs;
    FoscTimespanList([
        FoscTimespan(0/1, 3/1),
        FoscTimespan(3/1, 6/1),
        FoscTimespan(6/1, 9/1)
    ])
  2. Rounds offsets relative to timespan list stop offset.

    l = FoscTimespanList([
        FoscTimespan(0, 2),
        FoscTimespan(3, 6),
        FoscTimespan(6, 10)
    ]);
    l.roundOffsets(5, anchor: 'right');
    l.cs;
    FoscTimespanList([
        FoscTimespan(-5/1, 0/1),
        FoscTimespan(0/1, 5/1),
        FoscTimespan(5/1, 10/1)
    ])


scale

Scales timespan by multiplier relative to anchor.

Operates in place and returns timespan list.

  1. Scales timespans relative to timespan list start offset.

    l = FoscTimespanList([
        FoscTimespan(0, 3),
        FoscTimespan(3, 6),
        FoscTimespan(6, 10)
    ]);
    l.scale(2);
    l.cs;
    FoscTimespanList([
        FoscTimespan(0/1, 6/1),
        FoscTimespan(3/1, 9/1),
        FoscTimespan(6/1, 14/1)
    ])
  2. Scales timespans relative to timespan list stop offset.

    l = FoscTimespanList([
        FoscTimespan(0, 3),
        FoscTimespan(3, 6),
        FoscTimespan(6, 10)
    ]);
    l.scale(2, anchor: 'right');
    l.cs;
    FoscTimespanList([
        FoscTimespan(-3/1, 3/1),
        FoscTimespan(0/1, 6/1),
        FoscTimespan(2/1, 10/1)
    ])


sort

  1. Example

    l = FoscTimespanList([
        FoscTimespan(6, 10),
        FoscTimespan(0, 3),
        FoscTimespan(3, 6)
    ]);
    l.sort.cs;
    FoscTimespanList([
        FoscTimespan(0/1, 3/1),
        FoscTimespan(3/1, 6/1),
        FoscTimespan(6/1, 10/1)
    ])


splitAtOffset

Splits timespans at offset.

Returns array of FoscTimespanLists.

  1. Splits at offset.

    l = FoscTimespanList([
        FoscTimespan(0, 3),
        FoscTimespan(3, 6),
        FoscTimespan(6, 10)
    ]);
    m = l.splitAtOffset(4);
    m.collect { |timespanList| timespanList.cs };
    [ "FoscTimespanList([
        FoscTimespan(0/1, 3/1),
        FoscTimespan(3/1, 4/1)
    ])", "FoscTimespanList([
        FoscTimespan(4/1, 6/1),
        FoscTimespan(6/1, 10/1)
    ])" ]
  2. Splits at offset.

    l = FoscTimespanList([
        FoscTimespan(0, 3),
        FoscTimespan(3, 6),
        FoscTimespan(6, 10)
    ]);
    m = l.splitAtOffset(-1);
    m.collect { |timespanList| timespanList.cs };
    [ "FoscTimespanList([])", "FoscTimespanList([
        FoscTimespan(0/1, 3/1),
        FoscTimespan(3/1, 6/1),
        FoscTimespan(6/1, 10/1)
    ])" ]


splitAtOffsets

Splits timespans at offsets.

Returns one or more timespan lists.

  1. Splits at offset3.

    l = FoscTimespanList([
        FoscTimespan(0, 3),
        FoscTimespan(3, 6),
        FoscTimespan(4, 10),
        FoscTimespan(15, 20)
    ]);
    m = l.splitAtOffsets(#[-1,3,6,12,13]);
    m.collect { |timespanList| timespanList.cs };
    [ "FoscTimespanList([
        FoscTimespan(0/1, 3/1)
    ])", "FoscTimespanList([
        FoscTimespan(3/1, 6/1),
        FoscTimespan(4/1, 6/1)
    ])", "FoscTimespanList([
        FoscTimespan(6/1, 10/1)
    ])", "FoscTimespanList([
        FoscTimespan(15/1, 20/1)
    ])" ]


stretch

Stretches timespans by multiplier relative to anchor.

Operates in place and returns timespan list.

  1. Stretches timespans relative to timespan list start offset.

    l = FoscTimespanList([
        FoscTimespan(0, 3),
        FoscTimespan(3, 6),
        FoscTimespan(6, 10)
    ]);
    l.stretch(2);
    l.cs;
    FoscTimespanList([
        FoscTimespan(0/1, 6/1),
        FoscTimespan(6/1, 12/1),
        FoscTimespan(12/1, 20/1)
    ])
  2. Stretches timespans relative to timespan list stop offset.

    l = FoscTimespanList([
        FoscTimespan(0, 3),
        FoscTimespan(3, 6),
        FoscTimespan(6, 10)
    ]);
    l.stretch(2, anchor: l.stopOffset);
    l.cs;
    FoscTimespanList([
        FoscTimespan(-10/1, -4/1),
        FoscTimespan(-4/1, 2/1),
        FoscTimespan(2/1, 10/1)
    ])


translate

Translates timespans by translation.

Operates in place and returns timespan list.

  1. Translate timespan by offset 50.

    l = FoscTimespanList([
        FoscTimespan(0, 3),
        FoscTimespan(3, 6),
        FoscTimespan(6, 10)
    ]);
    l.translate(50);
    l.cs;
    FoscTimespanList([
        FoscTimespan(50/1, 53/1),
        FoscTimespan(53/1, 56/1),
        FoscTimespan(56/1, 60/1)
    ])


translateOffsets

Translates timespans by startOffsetTranslation and stopOffsetTranslation.

Operates in place and returns timespan list.

  1. Stretches timespans relative to timespan list start offset.

    l = FoscTimespanList([
        FoscTimespan(0, 3),
        FoscTimespan(3, 6),
        FoscTimespan(6, 10)
    ]);
    l.translateOffsets(50, 50);
    l.cs;
    FoscTimespanList([
        FoscTimespan(50/1, 53/1),
        FoscTimespan(53/1, 56/1),
        FoscTimespan(56/1, 60/1)
    ])
  2. Translate timespan stop offsets only.

    l = FoscTimespanList([
        FoscTimespan(0, 3),
        FoscTimespan(3, 6),
        FoscTimespan(6, 10)
    ]);
    l.translateOffsets(stopOffsetTranslation: 20);
    l.cs;
    FoscTimespanList([
        FoscTimespan(0/1, 23/1),
        FoscTimespan(3/1, 26/1),
        FoscTimespan(6/1, 30/1)
    ])