FoscMeterManager

Returns a FoscMeterManager.


Description

TODO


Attributes Summary

Class Methods

offsetsAtDepth Gets offsets at depth in offsetInventory.
isAcceptableLogicalTie Is true if logical tie is acceptable.
isBoundaryCrossingLogicalTie Is true if logical tie crosses meter boundaries.
iterateRewriteInputs Iterates topmost masked logical ties, rest groups and containers in expr, masked by expr.


Class Methods


offsetsAtDepth

Gets offsets at depth in offsetInventory.

  1. Example

    i = FoscMeter([7, 4]).depthwiseOffsetInventory;
    FoscMeterManager.getOffsetsAtDepth(0, i).collect { |each| each.pair };
    [ [ 0, 1 ], [ 7, 4 ] ]
    FoscMeterManager.getOffsetsAtDepth(1, i).collect { |each| each.pair };
    [ [ 0, 1 ], [ 3, 4 ], [ 5, 4 ], [ 7, 4 ] ]
    FoscMeterManager.getOffsetsAtDepth(2, i).collect { |each| each.pair };
    [ [ 0, 1 ], [ 1, 4 ], [ 1, 2 ], [ 3, 4 ], [ 1, 1 ], [ 5, 4 ], [ 3, 2 ], [ 7, 4 ] ]


isAcceptableLogicalTie

Is true if logical tie is acceptable.


isBoundaryCrossingLogicalTie

Is true if logical tie crosses meter boundaries.


iterateRewriteInputs

Iterates topmost masked logical ties, rest groups and containers in expr, masked by expr.

Returns a Routine.

  1. FIXME: ERROR: Class not defined

    a = FoscMeasure([2, 4], [
        FoscNote("C4", [1, 4]),
        FoscNote("D4", [1, 4])
    ]);
    b = FoscMeasure([4, 4], [
        FoscNote("D4", [3, 16]),
        FoscRest([1, 16]),
        FoscRest([3, 16]),
        FoscNote("E4", [1, 16]),
        FoscTuplet([2, 3], [FoscNote("E4", [1, 8]), FoscNote("E4", [1, 8]), FoscNote("F4", [1, 8])]),
        FoscNote("F4", [1, 4])
    ]);
    c = FoscMeasure([4, 4], [
        FoscNote("F4", [1, 8]),
        FoscNote("G4", [1, 8]),
        FoscNote("G4", [1, 4]),
        FoscNote("A4", [1, 4]),
        FoscNote("A4", [1, 8]),
        FoscNote("B4", [1, 8]),
    ]);
    d = FoscMeasure([2, 4], [
        FoscNote("B4", [1, 4]),
        FoscNote("C5", [1, 4])
    ]);
    x = FoscStaff([a, b, c, d]);
    x.select.byLeaf[1..2].attach(FoscTie());
    x.select.byLeaf[5..7].attach(FoscTie());
    x.select.byLeaf[8..10].attach(FoscTie());
    x.select.byLeaf[11..12].attach(FoscTie());
    x.select.byLeaf[13..14].attach(FoscTie());
    x.select.byLeaf[15..16].attach(FoscTie());
    x.format;
    FoscMeterManager.iterateRewriteInputs(x[0]).collect { |each| each.music };
  2. Example

    FoscMeterManager.iterateRewriteInputs(x[1]).do { |each| each.music.postln };
  3. Example

    FoscMeterManager.iterateRewriteInputs(x[2]).do { |each| each.music.postln };
  4. Example

    FoscMeterManager.iterateRewriteInputs(x[3]).do { |each| each.music.postln };
  5. Example

    a = FoscMeasure([2, 4], [FoscNote(60, [2, 4])]);
    b = FoscMeasure([4, 4], [FoscNote(60, [1, 32]), FoscNote(62, [7, 8]), FoscNote(62, [1, 16]), FoscNote(64, [1, 32])]);
    c = FoscMeasure([2, 4], [FoscNote(64, [2, 4])]);
    x = FoscStaff([a, b, c]);
    x.select.byLeaf[0..1].attach(FoscTie());
    x.select.byLeaf[2..3].attach(FoscTie());
    x.select.byLeaf[4..5].attach(FoscTie());
    s = x[1][0..];
    m = FoscMeterManager.iterateRewriteInputs(s).all;
    m.do { |each| each.music.collect { |elem| elem.format }.join(" ").postln };