// A corpus of parts from Palestrina masses.
(
c = ();
c.p2 = [
14, 1, 14, 1, 14, 1, 16, 1,
17, 1.5, 16, 0.5, 14, 0.5, 12, 0.5, 14, 2, 12, 0.5, 10, 0.5, 9, 1.5, 7, 0.5,
9, 1, 10, 1, 9, 1, 14, 2, 13, 1, 14, 1, 10, 1,
10, 1, 12, 1, 14, 1.5, 12, 0.5,
10, 0.5, 9, 0.5, 10, 1, 7, 2].clump(2);
c.p3 = [
14, 2, 14, 2,
14, 1, 16, 1, 17, 1.5, 16, 0.5,
14, 0.5, 12, 0.5, 14, 2, 12, 0.5, 10, 0.5,
9, 1.5, 7, 0.5, 9, 1, 10, 1.5, 9, 0.5, 7, 2, 6, 1,
7, 1, 10, 1, 10, 1, 12, 1,
14, 1.5, 12, 0.5, 10, 0.5, 9, 0.5, 10, 1,
7, 2, 14, 2].clump(2);
c.p4=[
14, 2, 14, 1, 16, 1,
17, 1.5, 16, 0.5, 14, 0.5, 12, 0.5, 14, 2, 12, 0.5, 10, 0.5, 9, 1.5, 7, 0.5,
9, 1, 10, 1.5, 9, 0.5, 7, 2, 6, 1,
7, 4].clump(2);
c.p5=[
14, 2, 14, 3, 7, 1,
14, 0.5, 16, 0.5, 17, 0.5, 14, 0.5, 16, 1, 17, 1.5, 16, 0.5, 14, 0.5, 12, 0.5, 10, 1.5, 9, 0.5,
10, 0.5, 12, 0.5, 14, 2, 13, 1,
14, 1.5, 12, 0.5, 10, 1, 9, 1,
10, 2, 9, 2].clump(2);
c.p6=[
14, 2, 14, 3, 7, 1, 10, 1, 12, 2, 10, 1, 7, 1.5, 9, 0.5,
10, 1, 9, 1.5, 7, 0.5, 5, 0.5, 4, 0.5,
2, 1, 14, 2, 17, 1.5, 16, 0.5, 14, 2, 12, 1,
10, 1, 9, 1, 10, 1.5, 9, 0.25, 7, 0.25,
10, 1, 9, 2, 7, 1,
9, 2, 14, 2].clump(2);
c.p7=[
14, 3, 14, 2, 7, 1, 14, 1.5, 12, 0.5,
10, 1, 10, 1, 9, 1.5, 10, 0.5,
12, 1, 14, 1, 12, 1, 17, 1.5, 16, 0.5, 14, 0.5, 12, 0.5, 14, 1, 12, 2, 10, 1.5, 9, 0.5, 7, 2, 5, 1, 10, 1.5, 12, 0.5,
14, 2, 14, 2].clump(2);
c.p8=[
14, 3, 14, 2, 7, 1, 14, 1.5, 12, 0.5, 10, 1, 10, 1, 9, 1.5, 10, 0.5,
12, 1, 14, 1, 12, 1, 17, 1.5, 16, 0.5, 14, 0.5, 12, 0.5, 14, 1, 12, 2, 10, 1.5, 9, 0.5, 7, 2, 6, 1,
7, 4, 14, 2].clump(2);
c.p10=[
14, 1, 14, 1, 14, 1, 16, 1,
17, 1.5, 16, 0.5, 14, 1, 12, 0.5, 10, 0.5,
9, 1, 14, 2, 12, 1,
14, 1, 14, 1, 10, 1.5, 9, 0.5,
7, 2, 9, 4, 14, 2].clump(2);
c.p11=[
14, 3, 14, 1,
14, 1, 16, 1, 17, 1.5, 16, 0.5,
14, 0.5, 12, 0.5, 14, 1.5, 12, 0.5, 10, 1,
9, 4].clump(2);
c.p16=[
14, 1, 14, 2, 13, 1,
14, 1, 9, 1, 12, 1, 10, 1,
9, 0.5, 10, 0.5, 12, 0.5, 9, 0.5, 10, 0.5, 12, 0.5, 14, 0.5, 16, 0.5,
17, 1, 16, 1, 14, 0.5, 16, 0.5, 17, 0.5, 12, 0.5,
16, 1, 14, 2, 13, 1, 14, 4].clump(2);
c.p17=[
14, 3, 14, 2, 12, 1, 17, 3, 16, 1, 12, 1, 14, 1, 16, 1, 17, 1.5, 16, 0.5, 14, 2, 12, 1, 14, 1, 10, 2, 10, 1, 10, 2,
14, 2, 12, 2,
10, 3, 12, 1,
10, 1, 10, 1, 9, 2].clump(2);
c.p19=[
14, 1, 14, 1.5, 14, 0.5, 7, 1,
14, 2, 12, 1, 10, 1,
9, 1.5, 7, 0.5, 9, 1, 10, 1.5, 9, 0.5, 9, 2, 7, 1,
9, 4].clump(2);
c.p26=[
14, 3, 14, 1.5, 12, 0.25, 11, 0.25, 13, 1, 14, 1, 9, 1,
10, 1, 10, 1, 9, 1.5, 7, 0.25, 9, 0.25,
10, 2, 9, 4, 14, 2].clump(2);
c.p27=[
14, 3, 14, 2, 13, 1, 14, 1, 9, 1,
12, 1, 10, 1, 9, 1, 16, 1, 17, 1.5, 16, 0.25, 14, 0.25, 16, 1, 14, 2, 13, 1, 14, 2,
12, 4,
10, 2, 9, 3, 7, 0.5, 5, 0.5, 7, 2,
9, 6, 14, 2].clump(2);
c.p31=[
14, 2, 12, 3, 10, 1, 15, 2,
14, 1.5, 12, 0.5, 10, 1, 12, 1,
9, 2, 12, 1.5, 10, 0.5,
9, 0.5, 7, 0.5, 10, 2, 9, 0.5, 7, 0.5,
5, 1, 17, 1.5, 16, 0.5, 14, 1.5, 12, 0.5, 12, 2, 10, 0.5, 9, 0.5,
10, 1, 9, 1.5, 7, 0.5, 7, 2, 6, 1, 7, 4, 14, 2].clump(2);
c.p33=[
14, 3, 14, 1.5, 14, 0.5, 16, 1, 17, 1.5, 16, 0.5,
14, 0.5, 12, 0.5, 14, 2, 12, 0.5, 10, 0.5,
9, 2, 9, 2,
14, 2, 12, 1.5, 10, 0.5,
9, 0.5, 7, 0.5, 9, 2, 7, 0.5, 5, 0.5,
4, 1, 4, 1, 2, 4, 14, 2].clump(2);
c.p34=[
14, 1, 14, 1.5, 14, 0.5, 16, 1,
17, 1.5, 16, 0.5, 14, 0.5, 12, 0.5, 14, 1.5, 12, 0.5, 10, 1, 9, 2,
10, 1, 12, 1, 9, 2,
7, 2, 14, 2].clump(2);
c.p37=[
14, 1, 14, 2, 13, 1,
14, 1.5, 12, 0.5, 10, 1, 12, 1,
9, 2, 7, 1, 10, 2, 9, 1, 7, 2,
12, 2, 17, 3, 15, 1, 14, 1.5, 12, 0.5,
10, 1, 9, 1, 10, 1, 9, 1.5, 7, 0.5, 7, 2, 6, 1,
7, 4].clump(2);
c.pAll=[c.p2 ,c.p3 ,c.p4 ,c.p5 ,c.p6 , c.p7, c.p8, c.p10, c.p11, c.p16, c.p17, c.p19, c.p26, c.p27, c.p31, c.p33, c.p34, c.p37];
)
Examples of use:
// play all palestrina melodies in random order
(
Pdefn(\mel, Plazy({ Pseq(c.pAll.choose) }));
Pdef(\pale, Pbind(
\amp, 0.2,
\octave, 4,
[\note, \dur], Pn(Pseq([ [\a, 0], Pdefn(\mel), [\o, 4]], inf)).trace,
\tempo, 2
)).play;
);
// prepare and test a context snake with that corpus
(
c.snake = ContextSnake(c.pAll);
c.snake.asStream.all;
c.snake.dump;
)
// switch to the context snake - can you tell the diference?
Pdefn(\mel, Plazy({ "\nsnake.".postln; c.snake.randStarter }));
// switch back to orig.
Pdefn(\mel, Plazy({ "\norig.".postln; Pseq(c.pAll.choose) }));
( // choose randomly between orig and snake.
Pdefn(\snake, Plazy({ "\nsnake.".postln; c.snake.randStarter }));
Pdefn(\orig, Plazy({ "\norig.".postln; Pseq(c.pAll.choose) }));
Pdefn(\mel, Prand([Pdefn(\snake), Pdefn(\orig)]));
)