Commit 031b56f2 authored by Kenneth Flak's avatar Kenneth Flak

kullophone

parent 10721b7b
/home/kf/mySamples/kullophone
\ No newline at end of file
(
~root = "/home/kf/sc/100-sketches";
// ~root = "/home/kf/sc/100-sketches";
~root = PathName(thisProcess.nowExecutingPath).pathOnly;
~sketchdir = ~root+/+"sketches";
~sk = Dictionary.new;
~skGain = Dictionary.new;
......@@ -97,3 +99,4 @@ s.waitForBoot({
// s.record("/home/kf/Videos/100-sketches-March/audio/angelSketchSuperCollider" ++ Date.getDate.stamp ++".wav");
// s.stopRecording;
# Potential sketches and their usage
## Tree
mbFM (brass-like sounds, works well together with mbWalkGravel)
mbWalkGravel
mbShh
mbTreeperculator
stormulator (into the depths kind of a thing, distorted whispers)
## Balancing Act on Water - on a stone, very still
focus Külli no 3
## Sand - Thinking Space On the Knees
mbBreath (granular, semi-percussive breath sounds) Külli no 1
## Water
mbArpeggiator
mbFlutter Külli no 4
mbFM (brass-like sounds)
mbFMdrone (steppy)
mbSineFB
metals
runningWater (clean water sound, no processing)
unisonoBubbles
## Grassy/bushy something
mbLeavulator
stormulator (into the depths kind of a thing, distorted whispers)
velcrolator
## In the darkness, maybe in the water between high grass
mbScary
## Close-up handstand
mbTwinkle
trumpetulator
## Forresty
coronaWhisperGrain (elvish whispers) Külli no 2
rainRingModGrain
mbFlutter (fast, squirrely)
## General background sound
rainulator
## Other stuff
velcroClean
## Deprecated, needs rewriting
mbTalkulator
guitardeltasingle
guitarDreams
fmDirection
sea
seaForest
......@@ -8,7 +8,7 @@ hport = 57120
[serial]
baudrate = 57600
serial = /dev/ttyUSB1
serial = /dev/ttyUSB0
apimode = True
[hive]
......
This diff is collapsed.
(
a = Array.fill(44100, { 0 });
b = Buffer.loadCollection(s, a);
)
// mouse control for sin freq and rate deviation
(
SynthDef("bufFb", {|out=0, rate=1, amp = 0.1|
var in, signal;
in = LocalIn.ar(1) * 0.99 + SinOsc.ar(LFNoise1.kr.range(100, 2000));
BufWr.ar(in, b.bufnum, Phasor.ar(0, BufRateScale.kr(0) * MouseX.kr(0.99,
1.01).poll, 0, BufFrames.kr(0)));
signal = BufRd.ar(1, b.bufnum, Phasor.ar(0, BufRateScale.kr(0) * rate, 0,
BufFrames.kr(0)));
// LocalOut.ar(signal.tanh);
LocalOut.ar(signal);
OffsetOut.ar(out, Limiter.ar(signal) * amp);
}).add
)
x = Synth("bufFb")
x.free
linlin
(
// var mix = KFEnv.new([0, 0.3], [90], 5);
~coronaBreathFx = List.new(0);
2.do{
......@@ -28,19 +27,19 @@
\hishelffreq, 400,
]);
////---------------------------------------------------------
~coronaBreathFx[1].add(\compressor, [
\ratio, 4,
\threshold, -12.dbamp,
]);
~coronaBreathFx[1].add(\jpverb, [
\revtime, 2,
\mix, 0.3,
]);
~coronaBreathFx[1].add(\eq, [
\locut, 120,
\hishelfdb, -6,
\hishelffreq, 400,
]);
~coronaBreathFx[1].add(\compressor, [
\ratio, 4,
\threshold, -12.dbamp,
]);
~coronaBreathFx[1].add(\jpverb, [
\revtime, 2,
\mix, 0.3,
]);
~coronaBreathFx[1].add(\eq, [
\locut, 120,
\hishelfdb, -6,
\hishelffreq, 400,
]);
//---------------------------------------------------------
~coronaBreathFx[2].add(\greyhole, [
\delayTime, 0.3,
......@@ -70,7 +69,7 @@
startPos = 0;
pos = (startPos, (startPos+step)..(startPos+len));
pos = pos.select({|i| i < numFrames});
rate = 1;
attack = 0.2;
release = 0.5;
......@@ -101,16 +100,17 @@
);
};
)
// (
// // s.record("/home/kf/sc/100-sketches/videos/audio/coronaBreath" ++ Date.getDate.stamp ++".wav");
// ~coronaBreathFx.do(_.play);
// ~coronaBreath.do(_.play);
// )
// (
// ~coronaBreathFx.do(_.free);
// ~coronaBreath.do(_.free);
// // SystemClock.sched(10, {s.stopRecording});
// )
(
// s.record("/home/kf/sc/100-sketches/videos/audio/coronaBreath" ++ Date.getDate.stamp ++".wav");
~coronaBreathFx.do(_.play);
~coronaBreath.do(_.play);
)
(
~coronaBreathFx.do(_.free);
~coronaBreath.do(_.free);
// SystemClock.sched(10, {s.stopRecording});
)
// s.plotTree
// ~buf[\coronaWhisper];
(
this.executeFile(~sketchdir+/+"coronaWhisperGrain.scd");
this.executeFile(~sketchdir+/+"coronaBreath.scd");
this.executeFile(~sketchdir+/+"brPiano.scd");
this.executeFile(~sketchdir+/+"coronaWhisperGrainKenneth.scd");
this.executeFile(~sketchdir+/+"rainulator.scd");
this.executeFile(~sketchdir+/+"stormulator.scd");
this.executeFile(~sketchdir+/+"coronaWhisperGrain.scd");
this.executeFile(~sketchdir+/+"coronaBreath.scd");
this.executeFile(~sketchdir+/+"brPiano.scd");
this.executeFile(~sketchdir+/+"coronaWhisperGrainKenneth.scd");
this.executeFile(~sketchdir+/+"rainulator.scd");
this.executeFile(~sketchdir+/+"stormulator.scd");
~coronaWhisperGrainFx.do(_.play);
~brPianoFx.do(_.play);
~coronaBreathFx.do(_.play);
~coronaWhisperGrainKennethFx.do(_.play);
~rainulatorFx.play;
~stormulatorFx.play;
~coronaWhisperGrainFx.do(_.play);
~brPianoFx.do(_.play);
~coronaBreathFx.do(_.play);
~coronaWhisperGrainKennethFx.do(_.play);
~rainulatorFx.play;
~stormulatorFx.play;
~coronaWhisperGrain[0].play;
~brPiano[1].play;
~coronaBreath[2].play;
~coronaWhisperGrainKenneth[4].play;
~rainulator[6].play;
~stormulator[7].play;
~coronaWhisperGrain[0].play;
~brPiano[1].play;
~coronaBreath[2].play;
~coronaWhisperGrainKenneth[4].play;
~rainulator[6].play;
~stormulator[7].play;
)
(
~coronaWhisperGrainFx.do(_.free);
~brPianoFx.do(_.free);
~coronaBreathFx.do(_.free);
~coronaWhisperGrainKennethFx.do(_.free);
~rainulatorFx.free;
~stormulatorFx.free;
~coronaWhisperGrainFx.do(_.free);
~brPianoFx.do(_.free);
~coronaBreathFx.do(_.free);
~coronaWhisperGrainKennethFx.do(_.free);
~rainulatorFx.free;
~stormulatorFx.free;
~coronaWhisperGrain[0].free;
~brPiano[1].free;
~coronaBreath[2].free;
~coronaWhisperGrainKenneth[4].free;
~rainulator[6].free;
~stormulator[7].free;
~coronaWhisperGrain[0].free;
~brPiano[1].free;
~coronaBreath[2].free;
~coronaWhisperGrainKenneth[4].free;
~rainulator[6].free;
~stormulator[7].free;
)
(
~coronaWhisperFx = FxChain.new(
fadeInTime: 5,
level: 0.dbamp,
fadeOutTime: 5,
out: ~masterBus,
);
~coronaWhisperFx.add(\eq, [
\locut, 60,
]);
~coronaWhisperFx.add(\jpverb, [
\mix, 0.3,
\revtime, 3,
]);
~coronaWhisperFx = FxChain.new(
fadeInTime: 5,
level: 0.dbamp,
fadeOutTime: 5,
out: ~masterBus,
);
~coronaWhisperFx.add(\eq, [
\locut, 60,
]);
~coronaWhisperFx.add(\jpverb, [
\mix, 0.3,
\revtime, 3,
]);
~coronaWhisper = ~mb.collect{|id, idx|
MBDeltaTrig.new(
speedlim: 0.5,
threshold: 0.07,
minibeeID: id,
minAmp: -30,
maxAmp: -6,
function: {|dt, minAmp, maxAmp|
Pbind(
\instrument, \playbuf,
\buf, Prand(~buf[\coronaWhisper]),
\dur, Pfunc({|ev| ev.buf.duration * 0.5 }),
\release, Pkey(\dur) * 2,
\loop, 0,
\legato, 0.8,
\db, dt.linlin(0.0, 1.0, minAmp, maxAmp),
\pan, Pwhite(-1.0, 1.0),
\out, ~coronaWhisperFx.in,
\group, ~coronaWhisperFx.group,
).play;
}
);
};
~coronaWhisper = ~mb.collect{|id, idx|
MBDeltaTrig.new(
speedlim: 0.5,
threshold: 0.07,
minibeeID: id,
minAmp: -30,
maxAmp: -6,
function: {|dt, minAmp, maxAmp|
Pbind(
\instrument, \playbuf,
\buf, Prand(~buf[\coronaWhisper]),
\dur, Pfunc({|ev| ev.buf.duration * 0.5 }),
\release, Pkey(\dur) * 2,
\loop, 0,
\legato, 0.8,
\db, dt.linlin(0.0, 1.0, minAmp, maxAmp),
\pan, Pwhite(-1.0, 1.0),
\out, ~coronaWhisperFx.in,
\group, ~coronaWhisperFx.group,
).play;
}
);
};
)
// (
// ~coronaWhisperFx.play;
// ~coronaWhisper.do(_.play);
// ~coronaWhisper[0..1].do(_.play);
// // ~coronaWhisper.do(_.play);
// )
// (
// ~coronaWhisperFx.free;
......
......@@ -25,19 +25,19 @@
\hishelffreq, 400,
]);
////---------------------------------------------------------
~coronaWhisperGrainFx[1].add(\compressor, [
\ratio, 4,
\threshold, -12.dbamp,
]);
~coronaWhisperGrainFx[1].add(\jpverb, [
\revtime, 2,
\mix, 0.3,
]);
~coronaWhisperGrainFx[1].add(\eq, [
\locut, 120,
\hishelfdb, -6,
\hishelffreq, 400,
]);
~coronaWhisperGrainFx[1].add(\compressor, [
\ratio, 4,
\threshold, -12.dbamp,
]);
~coronaWhisperGrainFx[1].add(\jpverb, [
\revtime, 2,
\mix, 0.3,
]);
~coronaWhisperGrainFx[1].add(\eq, [
\locut, 120,
\hishelfdb, -6,
\hishelffreq, 400,
]);
//---------------------------------------------------------
~coronaWhisperGrainFx[2].add(\greyhole, [
\delayTime, 0.3,
......@@ -93,16 +93,12 @@
);
};
)
// (
// // s.record("/home/kf/sc/100-sketches/videos/audio/coronaWhisperGrain" ++ Date.getDate.stamp ++".wav");
// ~coronaWhisperGrainFx.do(_.play);
// ~coronaWhisperGrain.do(_.play);
// )
// (
// ~coronaWhisperGrainFx.do(_.free);
// ~coronaWhisperGrain.do(_.free);
// // SystemClock.sched(10, {s.stopRecording});
// )
// s.plotTree
// ~buf[\coronaWhisper];
(
// var mix = KFEnv.new([0, 0.3], [90], 5);
~coronaWhisperGrainKennethFx = List.new(0);
2.do{
~coronaWhisperGrainKennethFx.add(
FxChain.new(
fadeInTime: 5,
level: -22.dbamp,
fadeOutTime: 5,
out: ~masterBus,
);
(
~coronaWhisperGrainKennethFx = List.new(0);
2.do{
~coronaWhisperGrainKennethFx.add(
FxChain.new(
fadeInTime: 5,
level: -9.dbamp,
fadeOutTime: 5,
out: ~masterBus,
);
};
~coronaWhisperGrainKennethFx[0].add(\compressor, [
\ratio, 4,
\threshold, -12.dbamp,
]);
~coronaWhisperGrainKennethFx[0].addPar(
\comb, [\mix, 0.2, \delay, 0.17, \decay, 4, \amp, 1/3],
\comb, [\mix, 0.2, \delay, 0.3, \decay, 4, \amp, 1/3],
\comb, [\mix, 0.2, \delay, 0.4, \decay, 4, \amp, 1/3],
);
~coronaWhisperGrainKennethFx[0].add(\eq, [
\locut, 220,
\hishelfdb, -6,
\hishelffreq, 400,
]);
////---------------------------------------------------------
~coronaWhisperGrainKennethFx[1].add(\compressor, [
\ratio, 4,
\threshold, -12.dbamp,
]);
~coronaWhisperGrainKennethFx[1].add(\jpverb, [
\revtime, 2,
\mix, 0.3,
]);
~coronaWhisperGrainKennethFx[1].add(\eq, [
\locut, 220,
\hishelfdb, -6,
\hishelffreq, 400,
]);
////---------------------------------------------------------
~coronaWhisperGrainKennethFx[2].add(\greyhole, [
\delayTime, 0.3,
\feedback, 0.7,
\mix, 0.3
]);
//---------------------------------------------------------
);
};
~coronaWhisperGrainKennethFx[0].add(\compressor, [
\ratio, 4,
\threshold, -12.dbamp,
]);
~coronaWhisperGrainKennethFx[0].addPar(
\comb, [\mix, 0.2, \delay, 0.17, \decay, 4, \amp, 1/3],
\comb, [\mix, 0.2, \delay, 0.3, \decay, 4, \amp, 1/3],
\comb, [\mix, 0.2, \delay, 0.4, \decay, 4, \amp, 1/3],
);
~coronaWhisperGrainKennethFx[0].add(\eq, [
\locut, 220,
\hishelfdb, -6,
\hishelffreq, 400,
]);
////---------------------------------------------------------
~coronaWhisperGrainKennethFx[1].add(\compressor, [
\ratio, 4,
\threshold, -12.dbamp,
]);
~coronaWhisperGrainKennethFx[1].add(\jpverb, [
\revtime, 2,
\mix, 0.3,
]);
~coronaWhisperGrainKennethFx[1].add(\eq, [
\locut, 220,
\hishelfdb, -6,
\hishelffreq, 400,
]);
////---------------------------------------------------------
~coronaWhisperGrainKennethFx[2].add(\greyhole, [
\delayTime, 0.3,
\feedback, 0.7,
\mix, 0.3
]);
//---------------------------------------------------------
~coronaWhisperGrainKenneth = ~mb.collect{|id, idx|
MBDeltaTrig.new(
speedlim: 0.5,
threshold: 0.02,
minibeeID: id,
minAmp: -12,
maxAmp: -3,
function: {|dt, minAmp, maxAmp|
var startPos, currentFx, buf, numFrames,
grainsize, numGrains, step, len, pos, rate, duration,
attack, release, legato;
buf = ~buf[\coronaWhisperKenneth].choose;
numFrames = buf.numFrames;
grainsize = 0.2;
numGrains = 20;
step = grainsize * s.sampleRate;
//in samples, not seconds....
len = dt.linlin(0.0, 1.0, step, step * numGrains);
startPos = rrand(0, numFrames - len);
pos = (startPos, startPos+step..startPos+len);
startPos = pos[pos.size-1].mod(numFrames);
rate = 1;
duration = len/s.sampleRate;
attack = 0.2;
release = duration - attack;
legato = 2;
// legato = rrand(0.1, 2);
// rate = [0.5, 1.0].choose;
Pbind(
\instrument, \playbuf,
\buf, buf,
\dur, grainsize,
\attack, Pkey(\dur) * 2,
\release, Pkey(\dur) * 2,
\startPos, Pseq(pos),
\legato, legato,
\rate, Pwhite(0.99, 1.01),
\db, Pseg([-70, 0, -70], [attack, release]),
\pan, Pwhite(-1.0, 1.0),
\out, Pfunc({
currentFx = ~coronaWhisperGrainKennethFx.choose;
currentFx.in
}),
\group, Pfunc({ currentFx.group }),
).play;
~coronaWhisperGrainKenneth = ~mb.collect{|id, idx|
MBDeltaTrig.new(
speedlim: 0.5,
threshold: 0.02,
minibeeID: id,
minAmp: -12,
maxAmp: -3,
function: {|dt, minAmp, maxAmp|
var startPos, currentFx, buf, numFrames,
grainsize, numGrains, step, len, pos, rate, duration,
attack, release, legato;
buf = ~buf[\coronaWhisperKenneth].choose;
numFrames = buf.numFrames;
grainsize = 0.2;
numGrains = 20;
step = grainsize * s.sampleRate;
//in samples, not seconds....
len = dt.linlin(0.0, 1.0, step, step * numGrains);
startPos = rrand(0, numFrames - len);
pos = (startPos, startPos+step..startPos+len);
startPos = pos[pos.size-1].mod(numFrames);
rate = 1;
duration = len/s.sampleRate;
attack = 0.2;
release = duration - attack;
legato = 2;
// rate = [0.5, 1.0].choose;
Pbind(
\instrument, \playbuf,
\buf, buf,
\dur, grainsize,
\attack, Pkey(\dur) * 2,
\release, Pkey(\dur) * 2,
\startPos, Pseq(pos),
\legato, legato,
\rate, Pwhite(0.99, 1.01),
\db, Pseg([-70, 0, -70], [attack, release]),
\pan, Pwhite(-1.0, 1.0),
\out, Pfunc({
currentFx = ~coronaWhisperGrainKennethFx.choose;