PstepNfunc: table of contents
Filter:
Classes | Streams-Patterns-Events > Patterns > Time

PstepNfunc : Pattern : AbstractFunction : Object

combinatoric pattern
Source: Patterns.sc
Subclasses: PstepNadd

Description

Combines an arbitrary number of patterns by evaluating a function (depth first traversal). When a stream ends it is recreated from its pattern until the top stream ends.

Class Methods

Inherited class methods

Undocumented class methods

PstepNfunc.new(function, patterns)

Instance Methods

Inherited instance methods

Undocumented instance methods

.embedInStream(inval)

.function

.patterns

.patterns = value

Examples

(
f = { arg vals;
    vals.postln;
};
x = PstepNfunc(f, [
        Pseq([1, 2, 3]), Pseq([4, 5, 6]), Pseq([7, 8, 9])
    ]).asStream;
50.do({ x.next });
)

(
f = { arg vals;
    var r;
    r = vals.copy.removeAt(0);
    vals.do({ arg item;  r = item / r.squared * 10 });
    r
};
x = PstepNfunc(f,
    [
        Pseq([1, 2, 3], inf),
        Pseq([2, pi, 1]),
        Pseq([0.1, 3, 0.2, 3])
    ]
    ).asStream;

50.do({ x.next.postln });
)

// note that if the last pattern loops it will stick to that one:
(
f = { arg vals;
    vals.postln;
};
x = PstepNfunc(f, [Pseq([1, 2, 3]), Pseq([10, 20, 30, 40]), Pseq([100, 200, 300], inf)]).asStream;
50.do({ x.next });
)


(
f = { arg vals;
    vals.inject(1, { arg x, y; x * y })
};
x = PstepNfunc(f,
    [
        Pseq([1, 2, 3], inf),
        Pseq([2, pi, 1]),
        Pseq([0.1, 3, 0.2, 3])
    ]
    ).asStream;

50.do({ x.next.postln });
)