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"; ~sketchdir = ~root+/+"sketches";
~sk = Dictionary.new; ~sk = Dictionary.new;
~skGain = Dictionary.new; ~skGain = Dictionary.new;
...@@ -97,3 +99,4 @@ s.waitForBoot({ ...@@ -97,3 +99,4 @@ s.waitForBoot({
// s.record("/home/kf/Videos/100-sketches-March/audio/angelSketchSuperCollider" ++ Date.getDate.stamp ++".wav"); // s.record("/home/kf/Videos/100-sketches-March/audio/angelSketchSuperCollider" ++ Date.getDate.stamp ++".wav");
// s.stopRecording; // 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 ...@@ -8,7 +8,7 @@ hport = 57120
[serial] [serial]
baudrate = 57600 baudrate = 57600
serial = /dev/ttyUSB1 serial = /dev/ttyUSB0
apimode = True apimode = True
[hive] [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); ~coronaBreathFx = List.new(0);
2.do{ 2.do{
...@@ -28,19 +27,19 @@ ...@@ -28,19 +27,19 @@
\hishelffreq, 400, \hishelffreq, 400,
]); ]);
////--------------------------------------------------------- ////---------------------------------------------------------
~coronaBreathFx[1].add(\compressor, [ ~coronaBreathFx[1].add(\compressor, [
\ratio, 4, \ratio, 4,
\threshold, -12.dbamp, \threshold, -12.dbamp,
]); ]);
~coronaBreathFx[1].add(\jpverb, [ ~coronaBreathFx[1].add(\jpverb, [
\revtime, 2, \revtime, 2,
\mix, 0.3, \mix, 0.3,
]); ]);
~coronaBreathFx[1].add(\eq, [ ~coronaBreathFx[1].add(\eq, [
\locut, 120, \locut, 120,
\hishelfdb, -6, \hishelfdb, -6,
\hishelffreq, 400, \hishelffreq, 400,
]); ]);
//--------------------------------------------------------- //---------------------------------------------------------
~coronaBreathFx[2].add(\greyhole, [ ~coronaBreathFx[2].add(\greyhole, [
\delayTime, 0.3, \delayTime, 0.3,
...@@ -70,7 +69,7 @@ ...@@ -70,7 +69,7 @@
startPos = 0; startPos = 0;
pos = (startPos, (startPos+step)..(startPos+len)); pos = (startPos, (startPos+step)..(startPos+len));
pos = pos.select({|i| i < numFrames}); pos = pos.select({|i| i < numFrames});
rate = 1; rate = 1;
attack = 0.2; attack = 0.2;
release = 0.5; release = 0.5;
...@@ -101,16 +100,17 @@ ...@@ -101,16 +100,17 @@
); );
}; };
) )
// (
// // s.record("/home/kf/sc/100-sketches/videos/audio/coronaBreath" ++ Date.getDate.stamp ++".wav"); (
// ~coronaBreathFx.do(_.play); // s.record("/home/kf/sc/100-sketches/videos/audio/coronaBreath" ++ Date.getDate.stamp ++".wav");
// ~coronaBreath.do(_.play); ~coronaBreathFx.do(_.play);
// ) ~coronaBreath.do(_.play);
// ( )
// ~coronaBreathFx.do(_.free); (
// ~coronaBreath.do(_.free); ~coronaBreathFx.do(_.free);
// // SystemClock.sched(10, {s.stopRecording}); ~coronaBreath.do(_.free);
// ) // SystemClock.sched(10, {s.stopRecording});
)
// s.plotTree // s.plotTree
// ~buf[\coronaWhisper]; // ~buf[\coronaWhisper];
( (
this.executeFile(~sketchdir+/+"coronaWhisperGrain.scd"); this.executeFile(~sketchdir+/+"coronaWhisperGrain.scd");
this.executeFile(~sketchdir+/+"coronaBreath.scd"); this.executeFile(~sketchdir+/+"coronaBreath.scd");
this.executeFile(~sketchdir+/+"brPiano.scd"); this.executeFile(~sketchdir+/+"brPiano.scd");
this.executeFile(~sketchdir+/+"coronaWhisperGrainKenneth.scd"); this.executeFile(~sketchdir+/+"coronaWhisperGrainKenneth.scd");
this.executeFile(~sketchdir+/+"rainulator.scd"); this.executeFile(~sketchdir+/+"rainulator.scd");
this.executeFile(~sketchdir+/+"stormulator.scd"); this.executeFile(~sketchdir+/+"stormulator.scd");
~coronaWhisperGrainFx.do(_.play); ~coronaWhisperGrainFx.do(_.play);
~brPianoFx.do(_.play); ~brPianoFx.do(_.play);
~coronaBreathFx.do(_.play); ~coronaBreathFx.do(_.play);
~coronaWhisperGrainKennethFx.do(_.play); ~coronaWhisperGrainKennethFx.do(_.play);
~rainulatorFx.play; ~rainulatorFx.play;
~stormulatorFx.play; ~stormulatorFx.play;
~coronaWhisperGrain[0].play; ~coronaWhisperGrain[0].play;
~brPiano[1].play; ~brPiano[1].play;
~coronaBreath[2].play; ~coronaBreath[2].play;
~coronaWhisperGrainKenneth[4].play; ~coronaWhisperGrainKenneth[4].play;
~rainulator[6].play; ~rainulator[6].play;
~stormulator[7].play; ~stormulator[7].play;
) )
( (
~coronaWhisperGrainFx.do(_.free); ~coronaWhisperGrainFx.do(_.free);
~brPianoFx.do(_.free); ~brPianoFx.do(_.free);
~coronaBreathFx.do(_.free); ~coronaBreathFx.do(_.free);
~coronaWhisperGrainKennethFx.do(_.free); ~coronaWhisperGrainKennethFx.do(_.free);
~rainulatorFx.free; ~rainulatorFx.free;
~stormulatorFx.free; ~stormulatorFx.free;
~coronaWhisperGrain[0].free; ~coronaWhisperGrain[0].free;
~brPiano[1].free; ~brPiano[1].free;
~coronaBreath[2].free; ~coronaBreath[2].free;
~coronaWhisperGrainKenneth[4].free; ~coronaWhisperGrainKenneth[4].free;
~rainulator[6].free; ~rainulator[6].free;
~stormulator[7].free; ~stormulator[7].free;
) )
( (
~coronaWhisperFx = FxChain.new( ~coronaWhisperFx = FxChain.new(
fadeInTime: 5, fadeInTime: 5,
level: 0.dbamp, level: 0.dbamp,
fadeOutTime: 5, fadeOutTime: 5,
out: ~masterBus, out: ~masterBus,
); );
~coronaWhisperFx.add(\eq, [ ~coronaWhisperFx.add(\eq, [
\locut, 60, \locut, 60,
]); ]);
~coronaWhisperFx.add(\jpverb, [ ~coronaWhisperFx.add(\jpverb, [
\mix, 0.3, \mix, 0.3,
\revtime, 3, \revtime, 3,
]); ]);
~coronaWhisper = ~mb.collect{|id, idx| ~coronaWhisper = ~mb.collect{|id, idx|
MBDeltaTrig.new( MBDeltaTrig.new(
speedlim: 0.5, speedlim: 0.5,
threshold: 0.07, threshold: 0.07,
minibeeID: id, minibeeID: id,
minAmp: -30, minAmp: -30,
maxAmp: -6, maxAmp: -6,
function: {|dt, minAmp, maxAmp| function: {|dt, minAmp, maxAmp|
Pbind( Pbind(
\instrument, \playbuf, \instrument, \playbuf,
\buf, Prand(~buf[\coronaWhisper]), \buf, Prand(~buf[\coronaWhisper]),
\dur, Pfunc({|ev| ev.buf.duration * 0.5 }), \dur, Pfunc({|ev| ev.buf.duration * 0.5 }),
\release, Pkey(\dur) * 2, \release, Pkey(\dur) * 2,
\loop, 0, \loop, 0,
\legato, 0.8, \legato, 0.8,
\db, dt.linlin(0.0, 1.0, minAmp, maxAmp), \db, dt.linlin(0.0, 1.0, minAmp, maxAmp),
\pan, Pwhite(-1.0, 1.0), \pan, Pwhite(-1.0, 1.0),
\out, ~coronaWhisperFx.in, \out, ~coronaWhisperFx.in,
\group, ~coronaWhisperFx.group, \group, ~coronaWhisperFx.group,
).play; ).play;
} }
); );
}; };
) )
// ( // (
// ~coronaWhisperFx.play; // ~coronaWhisperFx.play;
// ~coronaWhisper.do(_.play); // ~coronaWhisper[0..1].do(_.play);
// // ~coronaWhisper.do(_.play);
// ) // )
// ( // (
// ~coronaWhisperFx.free; // ~coronaWhisperFx.free;
......
...@@ -25,19 +25,19 @@ ...@@ -25,19 +25,19 @@
\hishelffreq, 400, \hishelffreq, 400,
]); ]);
////--------------------------------------------------------- ////---------------------------------------------------------
~coronaWhisperGrainFx[1].add(\compressor, [ ~coronaWhisperGrainFx[1].add(\compressor, [
\ratio, 4, \ratio, 4,
\threshold, -12.dbamp, \threshold, -12.dbamp,
]); ]);
~coronaWhisperGrainFx[1].add(\jpverb, [ ~coronaWhisperGrainFx[1].add(\jpverb, [
\revtime, 2, \revtime, 2,
\mix, 0.3, \mix, 0.3,
]); ]);
~coronaWhisperGrainFx[1].add(\eq, [ ~coronaWhisperGrainFx[1].add(\eq, [
\locut, 120, \locut, 120,
\hishelfdb, -6, \hishelfdb, -6,
\hishelffreq, 400, \hishelffreq, 400,
]); ]);
//--------------------------------------------------------- //---------------------------------------------------------
~coronaWhisperGrainFx[2].add(\greyhole, [ ~coronaWhisperGrainFx[2].add(\greyhole, [
\delayTime, 0.3, \delayTime, 0.3,
...@@ -93,16 +93,12 @@ ...@@ -93,16 +93,12 @@
); );
}; };
) )
// ( // (
// // s.record("/home/kf/sc/100-sketches/videos/audio/coronaWhisperGrain" ++ Date.getDate.stamp ++".wav");
// ~coronaWhisperGrainFx.do(_.play); // ~coronaWhisperGrainFx.do(_.play);
// ~coronaWhisperGrain.do(_.play); // ~coronaWhisperGrain.do(_.play);
// ) // )
// ( // (
// ~coronaWhisperGrainFx.do(_.free); // ~coronaWhisperGrainFx.do(_.free);
// ~coronaWhisperGrain.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 = List.new(0); ~coronaWhisperGrainKennethFx.add(
2.do{ FxChain.new(
~coronaWhisperGrainKennethFx.add( fadeInTime: 5,
FxChain.new( level: -9.dbamp,
fadeInTime: 5, fadeOutTime: 5,
level: -22.dbamp, out: ~masterBus,
fadeOutTime: 5,
out: ~masterBus,
);
); );
}; );
~coronaWhisperGrainKennethFx[0].add(\compressor, [ };
\ratio, 4, ~coronaWhisperGrainKennethFx[0].add(\compressor, [
\threshold, -12.dbamp, \ratio, 4,
]); \threshold, -12.dbamp,
~coronaWhisperGrainKennethFx[0].addPar( ]);
\comb, [\mix, 0.2, \delay, 0.17, \decay, 4, \amp, 1/3], ~coronaWhisperGrainKennethFx[0].addPar(
\comb, [\mix, 0.2, \delay, 0.3, \decay, 4, \amp, 1/3], \comb, [\mix, 0.2, \delay, 0.17, \decay, 4, \amp, 1/3],
\comb, [\mix, 0.2, \delay, 0.4, \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, ~coronaWhisperGrainKennethFx[0].add(\eq, [
\hishelfdb, -6, \locut, 220,
\hishelffreq, 400, \hishelfdb, -6,
]); \hishelffreq, 400,
////--------------------------------------------------------- ]);
~coronaWhisperGrainKennethFx[1].add(\compressor, [ ////---------------------------------------------------------
\ratio, 4, ~coronaWhisperGrainKennethFx[1].add(\compressor, [
\threshold, -12.dbamp, \ratio, 4,
]); \threshold, -12.dbamp,
~coronaWhisperGrainKennethFx[1].add(\jpverb, [ ]);
\revtime, 2, ~coronaWhisperGrainKennethFx[1].add(\jpverb, [
\mix, 0.3, \revtime, 2,
]); \mix, 0.3,
~coronaWhisperGrainKennethFx[1].add(\eq, [ ]);
\locut, 220, ~coronaWhisperGrainKennethFx[1].add(\eq, [
\hishelfdb, -6, \locut, 220,
\hishelffreq, 400, \hishelfdb, -6,
]); \hishelffreq, 400,
////--------------------------------------------------------- ]);
~coronaWhisperGrainKennethFx[2].add(\greyhole, [ ////---------------------------------------------------------
\delayTime, 0.3, ~coronaWhisperGrainKennethFx[2].add(\greyhole, [
\feedback, 0.7, \delayTime, 0.3,
\mix, 0.3 \feedback, 0.7,
]); \mix, 0.3
//--------------------------------------------------------- ]);
//---------------------------------------------------------
~coronaWhisperGrainKenneth = ~mb.collect{|id, idx| ~coronaWhisperGrainKenneth = ~mb.collect{|id, idx|
MBDeltaTrig.new( MBDeltaTrig.new(
speedlim: 0.5, speedlim: 0.5,
threshold: 0.02, threshold: 0.02,
minibeeID: id, minibeeID: id,
minAmp: -12, minAmp: -12,
maxAmp: -3, maxAmp: -3,
function: {|dt, minAmp, maxAmp| function: {|dt, minAmp, maxAmp|
var startPos, currentFx, buf, numFrames, var startPos, currentFx, buf, numFrames,
grainsize, numGrains, step, len, pos, rate, duration, grainsize, numGrains, step, len, pos, rate, duration,
attack, release, legato; attack, release, legato;
buf = ~buf[\coronaWhisperKenneth].choose; buf = ~buf[\coronaWhisperKenneth].choose;
numFrames = buf.numFrames; numFrames = buf.numFrames;
grainsize = 0.2; grainsize = 0.2;
numGrains = 20; numGrains = 20;
step = grainsize * s.sampleRate; step = grainsize * s.sampleRate;
//in samples, not seconds.... //in samples, not seconds....
len = dt.linlin(0.0, 1.0, step, step * numGrains); len = dt.linlin(0.0, 1.0, step, step * numGrains);
startPos = rrand(0, numFrames - len); startPos = rrand(0, numFrames - len);
pos = (startPos, startPos+step..startPos+len); pos = (startPos, startPos+step..startPos+len);
startPos = pos[pos.size-1].mod(numFrames); startPos = pos[pos.size-1].mod(numFrames);
rate = 1; rate = 1;
duration = len/s.sampleRate; duration = len/s.sampleRate;
attack = 0.2; attack = 0.2;
release = duration - attack; release = duration - attack;
legato = 2; legato = 2;
// legato = rrand(0.1, 2); // rate = [0.5, 1.0].choose;
// rate = [0.5, 1.0].choose; Pbind(
Pbind( \instrument, \playbuf,
\instrument, \playbuf, \buf, buf,
\buf, buf, \dur, grainsize,
\dur, grainsize, \attack, Pkey(\dur) * 2,