scide: implement selectionLength for openDocument
[supercollider.git] / HelpSource / Classes / Pavaroh.schelp
blobdc494fff572ae44e3ec0ccff62eddace4695c9c0
1 class:: Pavaroh
2 summary:: applying ascending and descending scales to event stream
3 categories:: Streams-Patterns-Events>Patterns>Math
5 description::
7 Basic classical indian scale pattern. Allowing to apply an ascending scale (aroh) and a descending scale (avaroh).
9 Note that no special pakads (movements) or vakras (twists) are applied.
11 The pakad is often a natural consequence of the notes of arohana / avarohana (ascending and descending structures). This is the purpose of this pattern.
13 Examples::
15 code::
17 Pbind(\note, Pavaroh(
18                         Pseq([1, 2, 3, 2, 5, 4, 3, 4, 2, 1], 2),
19                         #[0, 2, 3, 6, 7, 9],
20                         #[0, 1, 3, 7, 8, 11]
21                 ),
22         \dur, 0.25
23 ).play;
27 //___indian video game (1)
29 SynthDef("ivg", { arg out, freq=900, pan;
30         var trig, snd;
31         trig = Impulse.kr(LFClipNoise.kr(4, 3, LFClipNoise.kr(0.2, 2, 7)));
32         snd = RLPF.ar(
33                 SinOsc.ar(freq, 0, Decay.kr(trig, 1.8)).distort
34                 , 554, 0.3)
35         * 0.1;
36         Out.ar(out, Pan2.ar(snd, pan))
37  }).send(s);
41         var aroh, avaroh, synth, str, pat;
43         //gandhari raga.  vadi: dha (7) samvadi: ga (3)
45         aroh = #[0, 2, 5, 7, 10];
46         avaroh =  #[0, 1, 3, 5, 7, 9, 10];
48         synth = Synth.head(s, \ivg);
49         pat = Prand([0, 2, 3, 4, 2, 1, 0, -1, -2], inf);
50         str = Pavaroh(pat, aroh, avaroh).asStream;
51         Routine({
53                 loop({
54                         synth.set(\freq, midicps(str.next + 60) );
55                         rrand([0.1,1.0].choose, 0.5).wait;
56                 });
58         }).play;