//beng (gabon mouthbow)
(
play({
var bowRoot, stick, bow, mouth;
var speed, stickPattern, rootStickPattern, rootStick, trigger, hi, lo;
speed = 0.7;
trigger = Impulse.kr(12*speed);
stickPattern = Pseq([
Pseq(#[1, 0, 1, 0, 1, 1, 0, 1, 0.3, 1, 0], 8),
Pseq(#[1, 0, 1, 0, 0.2, 1, 0, 1, 1, 1, 0], 2),
Pseq(#[0, 1, 0, 1, 0, 1, 0, 0, 0.5, 1, 0], 2)
], inf)* Pfunc({ 1.0 + 0.2.rand2 });
hi = Pfuncn({ 66 + 0.05.rand2 });
lo = 68;
rootStickPattern = Pseq([hi, hi, lo, hi, lo, lo, hi, lo], inf);
stick = ImpulseSequencer.kr(stickPattern.asStream, trigger);
rootStick = PulseDivider.kr(stick, 3);
bowRoot = Lag.kr(Sequencer.kr(rootStickPattern.asStream, rootStick).midicps, 0.05, 1/3.5);
bow = CombL.ar(
GrayNoise.ar(Decay2.kr(stick, 0.001, LFNoise1.kr(12, 0.05, 0.1), 0.3)),
0.01,
Lag.kr(bowRoot, 0.15).reciprocal,
LFNoise2.kr(0.32, 0.2, 0.5 - (0.2*ToggleFF.kr(rootStick))* 4)
);
mouth = RLPF.ar(
bow,
Lag.kr(
Sequencer.kr(
Pseq([Prand([
Prand(#[3, 4, 5, 6], 2),
Pshuf(#[2, 3, 5], 4),
Pshuf(#[ 2, 4, 6, 3 ], 3),
Pseq(#[6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 6], 2)
], 3)], inf).asStream,
Trig.kr(stick,0.01);
), 0.05) *bowRoot,
LFNoise1.kr(0.8, 0.05, 0.1)
);
Pan2.ar(LPF.ar(mouth, 2000), -0.2);
});
)
//bavarian mouth harp
(
play({
var root, finger, harp, mouth;
var speed, trigger, env;
speed = MouseX.kr(0.7, 1.0);
env = EnvGen.kr(Env.linen(0.005, 100, 1)); //fade in
trigger = Impulse.kr(6*speed + LFNoise2.kr(0.1, 0.1));
root = Sequencer.kr(`[ 47, 52 ], PulseDivider.kr(trigger, 24)).midicps;
finger = ImpulseSequencer.kr(
Pseq([
Pseq(#[1, 1, 0.05, 1, 0.7, 0.02, 1, 1, 0.1, 1, 0.1, 0.1], 4),
Pseq(#[1, 1, 1, 0.1, 0.1, 0.2, 1, 1, 0.1, 1, 1, 0.1], 5),
Pseq([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, Pn(0, 2), 2, Pn(0, 16+2)])
]).asStream
,trigger);
harp = LFSaw.ar(Lag.kr(root, 0.15), Decay.kr(finger, LFNoise1.kr(0.4, 0.3, 0.8), 0.2));
mouth = RLPF.ar(
harp,
Lag.kr(
Sequencer.kr(
Pseq([Pseq([
Pseq(#[4, 5, 6], 2),
Pseq([6, 5, Prand(#[8, 7], 1)], 4),
Pseq(#[3, 5, 6, 7, 6, 5, 7, 5, 6, 9, 8, 7, 5, 6, 4, 3], 2)
], 3)], inf).asStream,
finger
), 0.1) *root,
0.1,
1,
harp* 0.2
);
Pan2.ar(LPF.ar(mouth, 4000, env), LFNoise1.kr(0.5, 0.3));
});
)
/*authors so far: jrh 02 */ |
all the patterns are just approximations, not part of real songs. |