More colorful synthesis
This commit is contained in:
@ -7,50 +7,50 @@ Boot {
|
|||||||
|
|
||||||
*new {
|
*new {
|
||||||
arg configPath, samplePath, serverOptions;
|
arg configPath, samplePath, serverOptions;
|
||||||
var p; var c; var t; var s; var d; var e; var b;
|
var pspace; var server; var d; var e;
|
||||||
BuboUtils.banner().postln;
|
BuboUtils.banner().postln;
|
||||||
Server.killAll;
|
Server.killAll;
|
||||||
|
|
||||||
if (serverOptions == nil, {
|
if (serverOptions == nil, {
|
||||||
"-> Booting using default server configuration".postln;
|
"-> Booting using default server configuration".postln;
|
||||||
s = Server.default;
|
server = Server.default;
|
||||||
s.options.numBuffers = (2048 * 2048) * 2;
|
server.options.numBuffers = (2048 * 2048) * 2;
|
||||||
s.options.maxLogins = 1;
|
server.options.maxLogins = 1;
|
||||||
s.options.memSize = 8192 * 64;
|
server.options.memSize = 8192 * 64;
|
||||||
s.options.numWireBufs = 2048;
|
server.options.numWireBufs = 2048;
|
||||||
s.options.maxNodes = 1024 * 32;
|
server.options.maxNodes = 1024 * 32;
|
||||||
s.options.numOutputBusChannels = 24;
|
server.options.numOutputBusChannels = 24;
|
||||||
s.options.numInputBusChannels = 16;
|
server.options.numInputBusChannels = 16;
|
||||||
}, {
|
}, {
|
||||||
"-> Booting using custom server configuration".postln;
|
"-> Booting using custom server configuration".postln;
|
||||||
s = Server.default;
|
server = Server.default;
|
||||||
// Imposing a very high number of buffers!
|
// Imposing a very high number of buffers!
|
||||||
serverOptions.numBuffers = (2048 * 512) * 2;
|
serverOptions.numBuffers = (2048 * 512) * 2;
|
||||||
s.options = serverOptions;
|
server.options = serverOptions;
|
||||||
});
|
});
|
||||||
|
|
||||||
// Using Ableton Link Clock to sync with other peers
|
// Using Ableton Link Clock to sync with other peers
|
||||||
this.clock = LinkClock(130 / 60).latency_(Server.default.latency).permanent_(true);
|
this.clock = LinkClock(130 / 60).latency_(Server.default.latency).permanent_(true);
|
||||||
TempoClock.default = this.clock;
|
TempoClock.default = this.clock;
|
||||||
c = this.clock;
|
|
||||||
t = this.clock.tempo;
|
|
||||||
|
|
||||||
// Defaut local path for configuration files if not configPath
|
// Defaut local path for configuration files if not configPath
|
||||||
this.localPath = this.class.filenameSymbol.asString.dirname +/+ "Configuration";
|
this.localPath = this.class.filenameSymbol.asString.dirname +/+ "Configuration";
|
||||||
this.samplePath = samplePath;
|
this.samplePath = samplePath;
|
||||||
|
|
||||||
p = ProxySpace.push(s.boot, clock: this.clock);
|
pspace = ProxySpace.push(server.boot, clock: this.clock);
|
||||||
p.quant = 4;
|
pspace.quant = 4;
|
||||||
p.fadeTime = 0.01;
|
pspace.fadeTime = 0.01;
|
||||||
|
|
||||||
// Setting up the audio samples/buffers manager
|
// Setting up the audio samples/buffers manager
|
||||||
Bank.lazyLoading = true;
|
Bank.lazyLoading = true;
|
||||||
Bank.root = this.samplePath;
|
Bank.root = this.samplePath;
|
||||||
|
"=> Loading audio samples:".postln;
|
||||||
|
Bank.list.postln;
|
||||||
|
|
||||||
// Post actions: installing behavior after server boot
|
// Post actions: installing behavior after server boot
|
||||||
Server.default.waitForBoot({
|
Server.default.waitForBoot({
|
||||||
|
|
||||||
s.latency = 0.3;
|
server.latency = 0.3;
|
||||||
|
|
||||||
// Resume normal boot sequence
|
// Resume normal boot sequence
|
||||||
(this.localPath +/+ "Startup.scd").load;
|
(this.localPath +/+ "Startup.scd").load;
|
||||||
@ -64,8 +64,10 @@ Boot {
|
|||||||
|
|
||||||
// Installing Safety
|
// Installing Safety
|
||||||
Safety.all;
|
Safety.all;
|
||||||
Safety(s).defName = \safeLimit;
|
Safety(server).defName = \safeLimit;
|
||||||
Safety.setLimit(1);
|
Safety.setLimit(1);
|
||||||
|
|
||||||
|
// Configuring the MIDI Out now
|
||||||
MIDIClient.init;
|
MIDIClient.init;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,20 @@
|
|||||||
|
+ ProxySpace {
|
||||||
|
|
||||||
|
solo {
|
||||||
|
arg name, fadeTime=4;
|
||||||
|
var names = name.isArray.if({ name }, { [name] });
|
||||||
|
this.do({ |proxy|
|
||||||
|
if (names.includes(proxy.key).not, {
|
||||||
|
proxy.stop(fadeTime: fadeTime);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
silence {|fadeTime=0|
|
||||||
|
this.stop(fadeTime: fadeTime)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
+ NodeProxy {
|
+ NodeProxy {
|
||||||
|
|
||||||
@ -76,7 +93,6 @@
|
|||||||
var fade = BuboUtils.getFadeFromPattern(pattern);
|
var fade = BuboUtils.getFadeFromPattern(pattern);
|
||||||
pattern = EventShortener.process(pattern, this.key, 'buboEvent', 1);
|
pattern = EventShortener.process(pattern, this.key, 'buboEvent', 1);
|
||||||
pattern = EffectChain.process(pattern, this.key);
|
pattern = EffectChain.process(pattern, this.key);
|
||||||
"Je suis trigger".postln;
|
|
||||||
this[0] = Pbind(*pattern);
|
this[0] = Pbind(*pattern);
|
||||||
this.prepareToPlay(this, quant, fade);
|
this.prepareToPlay(this, quant, fade);
|
||||||
^this
|
^this
|
||||||
|
|||||||
@ -9,3 +9,5 @@ c = currentEnvironment.clock;
|
|||||||
|
|
||||||
// Debug during development
|
// Debug during development
|
||||||
// OSCFunc.trace(true);
|
// OSCFunc.trace(true);
|
||||||
|
|
||||||
|
a = Archive.global
|
||||||
|
|||||||
@ -139,7 +139,7 @@ d.list = { arg obj; obj.keys.do({arg i; i.postln}); };
|
|||||||
),1,1,0,1,2);
|
),1,1,0,1,2);
|
||||||
sig = SinOscFB.ar(
|
sig = SinOscFB.ar(
|
||||||
\freq.kr(400),
|
\freq.kr(400),
|
||||||
\fb.kr(0),
|
\fb.kr(0.5),
|
||||||
1
|
1
|
||||||
);
|
);
|
||||||
sig = sig * env;
|
sig = sig * env;
|
||||||
@ -184,10 +184,10 @@ d.list = { arg obj; obj.keys.do({arg i; i.postln}); };
|
|||||||
var sig;
|
var sig;
|
||||||
sig = MiPlaits.ar(
|
sig = MiPlaits.ar(
|
||||||
pitch: \freq.kr(400).cpsmidi,
|
pitch: \freq.kr(400).cpsmidi,
|
||||||
timbre: \timbre.kr(0),
|
timbre: \timbre.kr(0.5),
|
||||||
harm: \harm.kr(0),
|
harm: \harm.kr(0.5),
|
||||||
engine: index,
|
engine: index,
|
||||||
morph: \morph.kr(0),
|
morph: \morph.kr(0.5),
|
||||||
level: \level.kr(1),
|
level: \level.kr(1),
|
||||||
decay: \lpgdecay.kr(0),
|
decay: \lpgdecay.kr(0),
|
||||||
lpg_colour: \lpgcolour.kr(0),
|
lpg_colour: \lpgcolour.kr(0),
|
||||||
@ -260,8 +260,8 @@ d.list = { arg obj; obj.keys.do({arg i; i.postln}); };
|
|||||||
var freq = \freq.kr;
|
var freq = \freq.kr;
|
||||||
sig = MiBraids.ar(
|
sig = MiBraids.ar(
|
||||||
pitch: freq.cpsmidi,
|
pitch: freq.cpsmidi,
|
||||||
timbre: \timbre.kr(0),
|
timbre: \timbre.kr(0.5),
|
||||||
color: \color.kr(0),
|
color: \color.kr(0.5),
|
||||||
resamp: 0,
|
resamp: 0,
|
||||||
decim: \decim.kr(32),
|
decim: \decim.kr(32),
|
||||||
model: index,
|
model: index,
|
||||||
@ -296,26 +296,6 @@ d.list = { arg obj; obj.keys.do({arg i; i.postln}); };
|
|||||||
d.tides = z;
|
d.tides = z;
|
||||||
);
|
);
|
||||||
|
|
||||||
// (
|
|
||||||
// z = SynthDef('pink', {
|
|
||||||
// arg out;
|
|
||||||
// var pink = PinkTrombone.ar(
|
|
||||||
// noiseSource: BPF.ar(WhiteNoise.ar(), \noiseFilter.kr(2000)),
|
|
||||||
// freq: \freq.kr(800),
|
|
||||||
// tenseness: \tenseness.kr(0.4),
|
|
||||||
// tongueIndex: \tongueIndex.kr(30),
|
|
||||||
// tongueDiameter: \tongueDiameter.kr(3.5),
|
|
||||||
// constrictionX: \constrictionX.kr(1.5),
|
|
||||||
// constrictionY: \constrictionY.kr(2.5),
|
|
||||||
// fricativeIntens: \fricativeIntens.kr(1.5)
|
|
||||||
// );
|
|
||||||
// var env = Env.perc(\attack.kr(0.01), releaseTime: \release.kr(2.0)).kr(doneAction: 2);
|
|
||||||
// var sound = pink * env;
|
|
||||||
// OffsetOut.ar(out, Pan2.ar(sound, pos: \pan.kr(0.0)))
|
|
||||||
// }).add;
|
|
||||||
// d.pink = z;
|
|
||||||
// );
|
|
||||||
|
|
||||||
(
|
(
|
||||||
z = SynthDef('kick', {
|
z = SynthDef('kick', {
|
||||||
arg out;
|
arg out;
|
||||||
@ -336,6 +316,21 @@ d.list = { arg obj; obj.keys.do({arg i; i.postln}); };
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
(
|
||||||
|
z = SynthDef('nnkick', {
|
||||||
|
arg out;
|
||||||
|
var sig, env;
|
||||||
|
env = Env.perc(\attack.kr(0.001), \release.kr(0.8)).ar(Done.freeSelf);
|
||||||
|
sig = SinOsc.ar(\freq.kr(50) * (1 + (8 * Env.perc(0, 0.13, curve:-8).ar)));
|
||||||
|
sig = sig + (SinOsc.ar(XLine.ar(\sweep.kr(8000), 100, 0.01)) * Env.perc(0.0001,0.01).ar * -8.dbamp);
|
||||||
|
sig = sig +(BPF.ar(WhiteNoise.ar, \cutoff.kr(10120), 0.5)*Env.perc(0.0001, 0.03).ar * -8.dbamp);
|
||||||
|
sig = sig.tanh;
|
||||||
|
sig = sig * env * \amp.kr(-10).dbamp;
|
||||||
|
OffsetOut.ar(out, Pan2.ar(sig, \pan.kr(0.0)));
|
||||||
|
}).add;
|
||||||
|
d.nnkick = z;
|
||||||
|
);
|
||||||
|
|
||||||
(
|
(
|
||||||
z = SynthDef('kraut', {
|
z = SynthDef('kraut', {
|
||||||
/*
|
/*
|
||||||
@ -355,7 +350,7 @@ d.list = { arg obj; obj.keys.do({arg i; i.postln}); };
|
|||||||
var env = Env.perc(\attack.kr, \release.kr(0.5)).ar(doneAction: 2);
|
var env = Env.perc(\attack.kr, \release.kr(0.5)).ar(doneAction: 2);
|
||||||
var sound = sin.lincurve(-1, 1, -1, 1, \curve.kr(4));
|
var sound = sin.lincurve(-1, 1, -1, 1, \curve.kr(4));
|
||||||
sound = sound * \amp.kr(-6).dbamp;
|
sound = sound * \amp.kr(-6).dbamp;
|
||||||
OffsetOut.ar(out, DirtPan.ar(sound, ~dirt.numChannels, \pan.kr(0), env))
|
OffsetOut.ar(out, Pan2.ar(sound, \pan.kr(0)));
|
||||||
}).add;
|
}).add;
|
||||||
d.kraut = z;
|
d.kraut = z;
|
||||||
);
|
);
|
||||||
|
|||||||
41
Classes/PseudoUgen/Vadim.sc
Normal file
41
Classes/PseudoUgen/Vadim.sc
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
VLPF2 {
|
||||||
|
*ar {
|
||||||
|
arg input, freq=500, resonance=1.0;
|
||||||
|
^VadimFilter.ar(input, freq: freq, resonance: resonance, type: 0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
VLPF4 {
|
||||||
|
*ar {
|
||||||
|
arg input, freq=500, resonance=1.0;
|
||||||
|
^VadimFilter.ar(input, freq: freq, resonance: resonance, type: 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
VBPF2 {
|
||||||
|
*ar {
|
||||||
|
arg input, freq=500, resonance=1.0;
|
||||||
|
^VadimFilter.ar(input, freq: freq, resonance: resonance, type: 2)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
VBPF4 {
|
||||||
|
*ar {
|
||||||
|
arg input, freq=500, resonance=1.0;
|
||||||
|
^VadimFilter.ar(input, freq: freq, resonance: resonance, type: 3)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
VHPF2 {
|
||||||
|
*ar {
|
||||||
|
arg input, freq=500, resonance=1.0;
|
||||||
|
^VadimFilter.ar(input, freq: freq, resonance: resonance, type: 4)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
VHPF4 {
|
||||||
|
*ar {
|
||||||
|
arg input, freq=500, resonance=1.0;
|
||||||
|
^VadimFilter.ar(input, freq: freq, resonance: resonance, type: 5)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user