69 lines
1.9 KiB
Racket
69 lines
1.9 KiB
Racket
#lang scribble/manual
|
|
@(require (for-label racket))
|
|
|
|
@title{PstepNadd}
|
|
pattern that returns combinatoric sums@section{related}
|
|
Classes/Pstep3add
|
|
@section{categories}
|
|
Streams-Patterns-Events>Patterns>Time
|
|
|
|
@section{description}
|
|
|
|
|
|
Combines an arbitrary number of patterns by summing (depth first traversal). When a stream ends it is recreated from its pattern until the top stream ends.
|
|
|
|
@section{Examples}
|
|
|
|
|
|
|
|
@racketblock[
|
|
// comparing PstepNadd and Pstep3add (test)
|
|
(
|
|
x = PstepNadd(Pseq([1, 2, 3]), Pseq([10, 20, 30, 40]), Pseq([100, 200, 300])).asStream;
|
|
y = Pstep3add(Pseq([1, 2, 3]), Pseq([10, 20, 30, 40]), Pseq([100, 200, 300])).asStream;
|
|
|
|
50.do({ [x.next, y.next].postln });
|
|
)
|
|
|
|
// pattern return stream until the longest stream ended
|
|
(
|
|
x = PstepNadd(
|
|
Plazy({ "pattern1.asStream".postln; Pseq([1, 2, 3], 2) }),
|
|
Plazy({ "pattern2.asStream".postln; Pshuf([10, 20, 30, 40]) }),
|
|
Plazy({ "pattern3.asStream".postln; Pseq([100, 200, 300]) }),
|
|
Plazy({ Pseries(1, 1, 4) * 0.01 })
|
|
).asStream;
|
|
150.do({ x.next.postln });
|
|
)
|
|
|
|
// if the last pattern loops it the combinatorics loop there:
|
|
x = PstepNadd(Pseq([1, 2, 3]), Pseq([10, 20, 30, 40]), Pseq([100, 200, 300], inf)).asStream;
|
|
50.do({ x.next.postln });
|
|
|
|
// if the first pattern loops, the whole iteration loops as if it was used in a Pn(.., inf):
|
|
x = PstepNadd(Pseq([1, 2, 3], inf), Pseq([10, 20, 30, 40]), Pseq([100, 200, 300])).asStream;
|
|
y = Pn(PstepNadd(Pseq([1, 2, 3]), Pseq([10, 20, 30, 40]), Pseq([100, 200, 300])), inf).asStream;
|
|
150.do({ [x.next, y.next].postln });
|
|
|
|
// sound example
|
|
(
|
|
Pbind(
|
|
\octave, 4,
|
|
\degree, PstepNadd(
|
|
Pseq([1, 2, 3]),
|
|
Pseq([0, -2, [1, 3], -5]),
|
|
Pshuf([1, 0, 3, 0], 2),
|
|
Pseq([1, -1], 5)
|
|
),
|
|
\dur, PstepNadd(
|
|
Pseq([1, 0, 0, 1], 2),
|
|
Pshuf([1, 1, 2, 1], 2)
|
|
).loop * (1/8),
|
|
\legato, Pn(Pshuf([0.2, 0.2, 0.2, 0.5, 0.5, 1.6, 1.4], 4), inf),
|
|
\scale, #[0, 1, 3, 4, 5, 7, 8]
|
|
).play;
|
|
)
|
|
::
|
|
]
|
|
|
|
|