Hi fellows,
when i play this kind of code, I’ve got more amp with the “chords” pattern.
I can understand the reason why, but I dont know how to reduce the amp just for that Pseq…
it drives me crazy. Tried a lot, but no way
Can someone give me some highlight?
a =[0,3,2,1];
Pbind(
\dur , Pseq([0.5],inf),
\degree,Pxrand([Pseq(a,1), Pseq([a,a+3].flop,1), Pseq(a.reverse,1)],inf)
).play;
A quick and dirty work around for your example is just to use a.dup for the Pseqs that aren’t chords
You can specify more than one parameter in your inner Pseq using an event.
Ex. (I have not tested this)
a=[0,3,2,1];
b=a+3;
f={|x|(\degree:x)};
a=a.collect(f);
b=b.collect(f);
f={|e|e.put(\amp, 0.25)};
Pbindf(
Pxrand([Pseq(a, 1), Pseq([a.collect(f),b.collect(f)].flop,1), Pseq(a.reverse,1)],inf),
\dur , Pseq([0.5],inf)).play;
tried it, but got an error:
^^ The preceding error dump is for ERROR: Primitive ‘_BasicPut’ failed.
Index not an Integer
RECEIVER: [ ( ‘degree’: 0, ‘amp’: 0.25 ), ( ‘degree’: 3, ‘amp’: 0.25 ) ]
and it’s too too much abstractive for me to understand why.
the idea was cool!
Figured out the problem. The event needs to be formatted like this (\amp: 0.2, \degree: [0,3])
instead of like this [(\amp:0.2, \degree: 0), (\amp:0.2, \degree: 3)]
Here is the corrected code:
a=[0,3,2,1];
f={|x|(\degree:x)};
Pbindf(
Pxrand([Pseq(a.collect(f), 1), Pseq([a,a+3].flop.collect({|degrees|(\amp:0.2,\degree:degrees)}),1), Pseq(a.collect(f).reverse,1)],inf),
\dur , Pseq([0.5],inf)).play;
YEAAHHHH
John, you become a kind of Divinity for me 
thx a lot😎