(buf)ampseg unified examples between CCEs

nix
Pierre Alexandre Tremblay 6 years ago
parent c6dd99ec81
commit c63ed9ebad

@ -75,93 +75,93 @@ code::
//basic tests: absThresh sanity //basic tests: absThresh sanity
( (
{var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs); {var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs);
env = FluidAmpSlice.ar(source,absRampUp:10, absRampDown:100, absThreshOn:-12, absThreshOff: -12); env = FluidAmpSlice.ar(source,absRampUp:5, absRampDown:50, absThreshOn:-12, absThreshOff: -12);
[source, env] [source, env]
}.plot(0.1); }.plot(0.1);
) )
//basic tests: absThresh hysteresis //basic tests: absThresh hysteresis
( (
{var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs); {var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs);
env = FluidAmpSlice.ar(source,absRampUp:10, absRampDown:100, absThreshOn:-12, absThreshOff: -16); env = FluidAmpSlice.ar(source,absRampUp:5, absRampDown:50, absThreshOn:-12, absThreshOff: -16);
[source, env] [source, env]
}.plot(0.1); }.plot(0.1);
) )
//basic tests: absThresh min slice //basic tests: absThresh min slice
( (
{var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs); {var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs);
env = FluidAmpSlice.ar(source,absRampUp:10, absRampDown:100, absThreshOn:-12, absThreshOff: -12, minSliceLength:441); env = FluidAmpSlice.ar(source,absRampUp:5, absRampDown:50, absThreshOn:-12, absThreshOff: -12, minSliceLength:441);
[source, env] [source, env]
}.plot(0.1); }.plot(0.1);
) )
//basic tests: absThresh min silence //basic tests: absThresh min silence
( (
{var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs); {var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs);
env = FluidAmpSlice.ar(source,absRampUp:10, absRampDown:100, absThreshOn:-12, absThreshOff: -12, minSilenceLength:441); env = FluidAmpSlice.ar(source,absRampUp:5, absRampDown:50, absThreshOn:-12, absThreshOff: -12, minSilenceLength:441);
[source, env] [source, env]
}.plot(0.1); }.plot(0.1);
) )
//mid tests: absThresh time hysteresis on //mid tests: absThresh time hysteresis on
( (
{var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs); {var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs);
env = FluidAmpSlice.ar(source,absRampUp:10, absRampDown:100, absThreshOn:-12, absThreshOff: -12, minLengthAbove:441); env = FluidAmpSlice.ar(source,absRampUp:5, absRampDown:50, absThreshOn:-12, absThreshOff: -12, minLengthAbove:441);
[DelayN.ar(source,0.1,441/44100), env] [DelayN.ar(source,0.1,441/44100), env]
}.plot(0.1); }.plot(0.1);
) )
//mid tests: absThresh time hysteresis off //mid tests: absThresh time hysteresis off
( (
{var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs); {var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs);
env = FluidAmpSlice.ar(source,absRampUp:10, absRampDown:100, absThreshOn:-12, absThreshOff: -12, minLengthBelow:441); env = FluidAmpSlice.ar(source,absRampUp:5, absRampDown:50, absThreshOn:-12, absThreshOff: -12, minLengthBelow:441);
[DelayN.ar(source,0.1,441/44100), env] [DelayN.ar(source,0.1,441/44100), env]
}.plot(0.1); }.plot(0.1);
) )
//mid tests: absThresh with lookBack //mid tests: absThresh with lookBack
( (
{var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs); {var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs);
env = FluidAmpSlice.ar(source,absRampUp:10, absRampDown:100, absThreshOn:-12, absThreshOff: -12,lookBack:441); env = FluidAmpSlice.ar(source,absRampUp:5, absRampDown:50, absThreshOn:-12, absThreshOff: -12,lookBack:441);
[DelayN.ar(source,0.1,441/44100), env] [DelayN.ar(source,0.1,441/44100), env]
}.plot(0.1); }.plot(0.1);
) )
//mid tests: absThresh with lookAhead //mid tests: absThresh with lookAhead
( (
{var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs); {var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs);
env = FluidAmpSlice.ar(source,absRampUp:10, absRampDown:100, absThreshOn:-12, absThreshOff: -12,lookAhead:441); env = FluidAmpSlice.ar(source,absRampUp:5, absRampDown:50, absThreshOn:-12, absThreshOff: -12,lookAhead:441);
[DelayN.ar(source,0.1,441/44100), env] [DelayN.ar(source,0.1,441/44100), env]
}.plot(0.1); }.plot(0.1);
) )
//mid tests: absThresh with asymetrical lookBack and lookAhead //mid tests: absThresh with asymetrical lookBack and lookAhead
( (
{var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs); {var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs);
env = FluidAmpSlice.ar(source,absRampUp:10, absRampDown:100, absThreshOn:-12, absThreshOff: -12,lookBack:221, lookAhead:441); env = FluidAmpSlice.ar(source,absRampUp:5, absRampDown:50, absThreshOn:-12, absThreshOff: -12,lookBack:221, lookAhead:441);
[DelayN.ar(source,0.1,441/44100), env] [DelayN.ar(source,0.1,441/44100), env]
}.plot(0.1); }.plot(0.1);
) )
//advanced tests: absThresh hysteresis, long tail //advanced tests: absThresh hysteresis, long tail
( (
{var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs); {var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs);
env = FluidAmpSlice.ar(source,absRampUp:10, absRampDown:2000, absThreshOn:-12, absThreshOff: -16); env = FluidAmpSlice.ar(source,absRampUp:220, absRampDown:220, absThreshOn:-60, absThreshOff: -70);
[source, env] [source, env]
}.plot(0.1); }.plot(0.1);
) )
//solution: have to recut with relThresh //solution: have to recut with relThresh
( (
{var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs); {var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs);
env = FluidAmpSlice.ar(source,absRampUp:10, absRampDown:2000, absThreshOn:-12, absThreshOff: -16, relRampUp:5, relRampDown:200, relThreshOn:-1, relThreshOff:-12); env = FluidAmpSlice.ar(source,absRampUp:220, absRampDown:220, absThreshOn:-60, absThreshOff: -70, relRampUp:5, relRampDown:200, relThreshOn:1, relThreshOff:0);
[source, env] [source, env]
}.plot(0.1); }.plot(0.08);
) )
//beware of double trig //beware of double trig
( (
{var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs); {var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs);
env = FluidAmpSlice.ar(source,absRampUp:10, absRampDown:2000, absThreshOn:-12, absThreshOff: -16, relRampUp:5, relRampDown:200, relThreshOn:-1, relThreshOff:-1); env = FluidAmpSlice.ar(source,absRampUp:220, absRampDown:220, absThreshOn:-60, absThreshOff: -70, relRampUp:5, relRampDown:200, relThreshOn:1, relThreshOff:0);
[source, env] [source, env]
}.plot(0.05); }.plot(0.005);
) )
//a solution: minSliceLength //a solution: minSliceLength
( (
{var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs); {var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs);
env = FluidAmpSlice.ar(source,absRampUp:10, absRampDown:2000, absThreshOn:-12, absThreshOff: -16, relRampUp:5, relRampDown:200, relThreshOn:-1, relThreshOff:-1, minSliceLength:441); env = FluidAmpSlice.ar(source,absRampUp:220, absRampDown:220, absThreshOn:-60, absThreshOff: -70, relRampUp:5, relRampDown:200, relThreshOn:1, relThreshOff:0, minSliceLength:2205);
[source, env] [source, env]
}.plot(0.05); }.plot(0.005);
) )
//drum slicing, many ways //drum slicing, many ways
//load a buffer //load a buffer
@ -169,14 +169,14 @@ b = Buffer.read(s,File.realpath(FluidAmpSlice.class.filenameSymbol).dirname.with
//have fun with a gate (explore lookahead and lookback, but correct for latency) //have fun with a gate (explore lookahead and lookback, but correct for latency)
( (
{var env, source = PlayBuf.ar(1,b); {var env, source = PlayBuf.ar(1,b);
env = FluidAmpSlice.ar(source,absRampUp:44, absRampDown:2205, absThreshOn:-20, absThreshOff: -23, minSilenceLength:1100, lookBack:441); env = FluidAmpSlice.ar(source,absRampUp:1103, absRampDown:2205, absThreshOn:-27, absThreshOff: -31, minSilenceLength:1100, lookBack:441, highPassFreq:40);
[DelayN.ar(source,delaytime:441/44100), env] [DelayN.ar(source,delaytime:441/44100), env]
}.plot(2,separately:true); }.plot(2,separately:true);
) )
( (
{var env, source = PlayBuf.ar(1,b); {var env, source = PlayBuf.ar(1,b, loop:1);
env = FluidAmpSlice.ar(source,highPassFreq:120, absRampUp:4410, absRampDown:4410, absThreshOn:-60, absThreshOff: -60, relRampUp:10, relRampDown:2205, relThreshOn:13, relThreshOff:10, minSilenceLength:4410, highPassFreq:20); env = FluidAmpSlice.ar(source, absRampUp:4410, absRampDown:4410, absThreshOn:-60, absThreshOff: -70, relRampUp:10, relRampDown:2205, relThreshOn:12, relThreshOff:9, minSilenceLength:4410, highPassFreq:20);
[source, Trig.ar(env,0)] [source, Trig.ar(env,0)]
}.play; }.play;
) )

@ -103,62 +103,62 @@ b.play
b.plot b.plot
//basic tests: absThresh sanity //basic tests: absThresh sanity
FluidBufAmpSlice.process(s,b,indices:c, absRampUp:10, absRampDown:100, absThreshOn:-12, absThreshOff: -12) FluidBufAmpSlice.process(s,b,indices:c, absRampUp:5, absRampDown:50, absThreshOn:-12, absThreshOff: -12)
c.query c.query
c.getn(0,c.numFrames*2,{|item|item.postln;}) c.getn(0,c.numFrames*2,{|item|item.postln;})
//basic tests: absThresh hysteresis //basic tests: absThresh hysteresis
FluidBufAmpSlice.process(s,b,indices:c, absRampUp:10, absRampDown:100, absThreshOn:-12, absThreshOff: -16) FluidBufAmpSlice.process(s,b,indices:c, absRampUp:5, absRampDown:50, absThreshOn:-12, absThreshOff: -16)
c.query c.query
c.getn(0,c.numFrames*2,{|item|item.postln;}) c.getn(0,c.numFrames*2,{|item|item.postln;})
//basic tests: absThresh min slice //basic tests: absThresh min slice
FluidBufAmpSlice.process(s,b,indices:c, absRampUp:10, absRampDown:100, absThreshOn:-12, absThreshOff: -12, minSliceLength:441) FluidBufAmpSlice.process(s,b,indices:c, absRampUp:5, absRampDown:50, absThreshOn:-12, absThreshOff: -12, minSliceLength:441)
c.query c.query
c.getn(0,c.numFrames*2,{|item|item.postln;}) c.getn(0,c.numFrames*2,{|item|item.postln;})
//basic tests: absThresh min silence //basic tests: absThresh min silence
FluidBufAmpSlice.process(s,b,indices:c, absRampUp:10, absRampDown:100, absThreshOn:-12, absThreshOff: -12, minSilenceLength:441) FluidBufAmpSlice.process(s,b,indices:c, absRampUp:5, absRampDown:50, absThreshOn:-12, absThreshOff: -12, minSilenceLength:441)
c.query c.query
c.getn(0,c.numFrames*2,{|item|item.postln;}) c.getn(0,c.numFrames*2,{|item|item.postln;})
//mid tests: absThresh time hysteresis on //mid tests: absThresh time hysteresis on
FluidBufAmpSlice.process(s,b,indices:c, absRampUp:10, absRampDown:100, absThreshOn:-12, absThreshOff: -12, minLengthAbove:441) FluidBufAmpSlice.process(s,b,indices:c, absRampUp:5, absRampDown:50, absThreshOn:-12, absThreshOff: -12, minLengthAbove:441)
c.query c.query
c.getn(0,c.numFrames*2,{|item|item.postln;}) c.getn(0,c.numFrames*2,{|item|item.postln;})
//mid tests: absThresh time hysteresis off //mid tests: absThresh time hysteresis off
FluidBufAmpSlice.process(s,b,indices:c, absRampUp:10, absRampDown:100, absThreshOn:-12, absThreshOff: -12, minLengthBelow:441) FluidBufAmpSlice.process(s,b,indices:c, absRampUp:5, absRampDown:50, absThreshOn:-12, absThreshOff: -12, minLengthBelow:441)
c.query c.query
c.getn(0,c.numFrames*2,{|item|item.postln;}) c.getn(0,c.numFrames*2,{|item|item.postln;})
//mid tests: absThresh with lookBack //mid tests: absThresh with lookBack
FluidBufAmpSlice.process(s,b,indices:c, absRampUp:10, absRampDown:100, absThreshOn:-12, absThreshOff: -12, lookBack:441) FluidBufAmpSlice.process(s,b,indices:c, absRampUp:5, absRampDown:50, absThreshOn:-12, absThreshOff: -12, lookBack:441)
c.query c.query
c.getn(0,c.numFrames*2,{|item|item.postln;}) c.getn(0,c.numFrames*2,{|item|item.postln;})
//mid tests: absThresh with lookAhead //mid tests: absThresh with lookAhead
FluidBufAmpSlice.process(s,b,indices:c, absRampUp:10, absRampDown:100, absThreshOn:-12, absThreshOff: -12, lookAhead:441) FluidBufAmpSlice.process(s,b,indices:c, absRampUp:5, absRampDown:50, absThreshOn:-12, absThreshOff: -12, lookAhead:441)
c.query c.query
c.getn(0,c.numFrames*2,{|item|item.postln;}) c.getn(0,c.numFrames*2,{|item|item.postln;})
//mid tests: absThresh with asymetrical lookBack and lookAhead //mid tests: absThresh with asymetrical lookBack and lookAhead
FluidBufAmpSlice.process(s,b,indices:c, absRampUp:10, absRampDown:100, absThreshOn:-12, absThreshOff: -12, lookBack:221, lookAhead:441) FluidBufAmpSlice.process(s,b,indices:c, absRampUp:5, absRampDown:50, absThreshOn:-12, absThreshOff: -12, lookBack:221, lookAhead:441)
c.query c.query
c.getn(0,c.numFrames*2,{|item|item.postln;}) c.getn(0,c.numFrames*2,{|item|item.postln;})
//advanced tests: absThresh hysteresis, long tail //advanced tests: absThresh hysteresis, long tail
FluidBufAmpSlice.process(s,b,indices:c, absRampUp:2205, absRampDown:2205, absThreshOn:-60, absThreshOff: -60) FluidBufAmpSlice.process(s,b,indices:c, absRampUp:2205, absRampDown:2205, absThreshOn:-60, absThreshOff: -70)
c.query c.query
c.getn(0,c.numFrames*2,{|item|item.postln;}) c.getn(0,c.numFrames*2,{|item|item.postln;})
//solution: have to recut with relThresh //solution: have to recut with relThresh
FluidBufAmpSlice.process(s,b,indices:c, absRampUp:2205, absRampDown:2205, absThreshOn:-60, absThreshOff: -60, relRampUp:5, relRampDown:220, relThreshOn:2, relThreshOff:1) FluidBufAmpSlice.process(s,b,indices:c, absRampUp:2205, absRampDown:2205, absThreshOn:-60, absThreshOff: -70, relRampUp:5, relRampDown:220, relThreshOn:-1, relThreshOff:-2)
c.query c.query
c.getn(0,c.numFrames*2,{|item|item.postln;}) c.getn(0,c.numFrames*2,{|item|item.postln;})
//beware of double trig. a solution: minSliceLength //beware of double trig. a solution: minSliceLength
FluidBufAmpSlice.process(s,b,indices:c, absRampUp:2205, absRampDown:2205, absThreshOn:-60, absThreshOff: -60, relRampUp:5, relRampDown:220, relThreshOn:2, relThreshOff:1, minSliceLength:4410) FluidBufAmpSlice.process(s,b,indices:c, absRampUp:2205, absRampDown:2205, absThreshOn:-60, absThreshOff: -70, relRampUp:5, relRampDown:220, relThreshOn:-1, relThreshOff:-2, minSliceLength:2205)
c.query c.query
c.getn(0,c.numFrames*2,{|item|item.postln;}) c.getn(0,c.numFrames*2,{|item|item.postln;})
:: ::
@ -172,7 +172,7 @@ c = Buffer.new(s);
) )
// slice the samples // slice the samples
FluidBufAmpSlice.process(s,b,indices:c, absRampUp:2205, absRampDown:2205, absThreshOn:-70, absThreshOff: -80, relRampUp:10, relRampDown:441, relThreshOn:14, relThreshOff:12, minSliceLength:4410) FluidBufAmpSlice.process(s,b,indices:c, absRampUp:4410, absRampDown:4410, absThreshOn:-60, absThreshOff: -70, relRampUp:10, relRampDown:2205, relThreshOn:13, relThreshOff:10, minSliceLength:4410, highPassFreq:20)
c.query c.query
c.getn(0,c.numFrames*2,{|item|item.postln;}) c.getn(0,c.numFrames*2,{|item|item.postln;})
//reformatting to read the onsets and offsets as pairs //reformatting to read the onsets and offsets as pairs
@ -211,11 +211,13 @@ c = Buffer.new(s);
// with basic params // with basic params
Routine{ Routine{
t = Main.elapsedTime; t = Main.elapsedTime;
FluidBufAmpSlice.process(s,b, indices: c, absRampUp:1, absRampDown:1, absThreshOn:-60, absThreshOff:-60); FluidBufAmpSlice.process(s,b, indices: c, absRampUp:1, absRampDown:20);
(Main.elapsedTime - t).postln; (Main.elapsedTime - t).postln;
}.play }.play
) )
// list the indicies of detected attacks - the two input channels have been summed. The two channels of the output, respectively onset and offset indices, are interleaved as this is the SuperCollider buffer data formatting // list the indicies of detected attacks - the two input channels have been summed. The two channels of the output, respectively onset and offset indices, are interleaved as this is the SuperCollider buffer data formatting
c.getn(0,c.numFrames*2,{|item|item.postln;}) c.getn(0,c.numFrames*2,{|item|item.postln;})
// a more readable version: deinterleave onsetand offset
c.getn(0,c.numFrames*2,{|items|items.reshape(c.numFrames,2).do({|x| x.postln});})
:: ::

Loading…
Cancel
Save