From 5c2100fa0be89dbc2b48acae5700b4aab586d346 Mon Sep 17 00:00:00 2001 From: Pierre Alexandre Tremblay Date: Thu, 30 May 2019 17:20:52 +0100 Subject: [PATCH] more examples in AmpSeg and typos in MFCCs --- .../HelpSource/Classes/FluidAmpSlice.schelp | 104 +++++++++++++++++- .../HelpSource/Classes/FluidBufMFCC.schelp | 2 +- .../HelpSource/Classes/FluidMFCC.schelp | 2 +- 3 files changed, 101 insertions(+), 7 deletions(-) diff --git a/release-packaging/HelpSource/Classes/FluidAmpSlice.schelp b/release-packaging/HelpSource/Classes/FluidAmpSlice.schelp index 2b5f92f..8a45899 100644 --- a/release-packaging/HelpSource/Classes/FluidAmpSlice.schelp +++ b/release-packaging/HelpSource/Classes/FluidAmpSlice.schelp @@ -78,7 +78,7 @@ code:: //basic tests: highPass sanity ( {var env, source = SinOsc.ar(320,0,0.5); - env = FluidAmpSlice.ar(source,highPassFreq:2000, outputType:1); + env = FluidAmpSlice.ar(source,highPassFreq:250, outputType:1); [source, env] }.plot(0.03); ) @@ -89,11 +89,105 @@ code:: [source.abs, env] }.plot(0.03); ) +///////////////////////////// //basic tests: absThresh sanity ( - {var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs); - env = FluidAmpSlice.ar(source,absRampUp:10, absRampDown:1000, outputType:0, relThreshOn:-144, relThreshOff: -200); - [source, env] - }.plot(0.05); + {var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs); + env = FluidAmpSlice.ar(source,absRampUp:10, absRampDown:100, absThreshOn:-12, absThreshOff: -12); + [source, env] + }.plot(0.1); +) +//basic tests: absThresh histeresis +( + {var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs); + env = FluidAmpSlice.ar(source,absRampUp:10, absRampDown:100, absThreshOn:-12, absThreshOff: -16); + [source, env] + }.plot(0.1); +) +//basic tests: absThresh min slice +( + {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); + [source, env] + }.plot(0.1); +) +//basic tests: absThresh min silence +( + {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); + [source, env] + }.plot(0.1); +) +//mid tests: absThresh time histeresis on +( + {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, outputType:0); + [DelayN.ar(source,0.1,441/44100), env] + }.plot(0.1); +) +//mid tests: absThresh time histeresis off +( + {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); + [DelayN.ar(source,0.1,441/44100), env] + }.plot(0.1); +) +//mid tests: absThresh with lookBack +( + {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); + [DelayN.ar(source,0.1,441/44100), env] + }.plot(0.1); +) +//mid tests: absThresh with lookAhead +( + {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); + [DelayN.ar(source,0.1,441/44100), env] + }.plot(0.1); +) +//mid tests: absThresh with asymetrical lookBack and lookAhead +( + {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); + [DelayN.ar(source,0.1,441/44100), env] + }.plot(0.1); +) +//advanced tests: absThresh histeresis, long tail +( + {var env, source = SinOsc.ar(320,0,LFTri.ar(10).abs); + env = FluidAmpSlice.ar(source,absRampUp:10, absRampDown:2000, absThreshOn:-12, absThreshOff: -16); + [source, env] + }.plot(0.1); +) +//solution: have to recut with relThresh +( + {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); + [source, env] + }.plot(0.1); +) +//beware of double trig +( + {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); + [source, env] + }.plot(0.025); +) +//a solution: minSliceLength +( + {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); + [source, env] + }.plot(0.025); +) +//drum slicing, many ways +//load a buffer +b = Buffer.read(s,File.realpath(FluidAmpSlice.class.filenameSymbol).dirname.withTrailingSlash ++ "../AudioFiles/Nicol-LoopE-M.wav"); +( + {var env, source = PlayBuf.ar(1,b); + env = FluidAmpSlice.ar(source,absRampUp:2205, absRampDown:2205, absThreshOn:-70, absThreshOff: -80, relRampUp:5, relRampDown:441, relThreshOn:5, relThreshOff:4, minSliceLength:441, outputType:0); + [source, env] + }.plot(1,maxval:[1,10],separately:true); ) :: diff --git a/release-packaging/HelpSource/Classes/FluidBufMFCC.schelp b/release-packaging/HelpSource/Classes/FluidBufMFCC.schelp index 5c47825..a965235 100644 --- a/release-packaging/HelpSource/Classes/FluidBufMFCC.schelp +++ b/release-packaging/HelpSource/Classes/FluidBufMFCC.schelp @@ -4,7 +4,7 @@ CATEGORIES:: Libraries>FluidDecomposition RELATED:: Guides/FluCoMa, Guides/FluidDecomposition, Classes/FluidBufMelBands DESCRIPTION:: -This class implements a classic spectral descriptor, the Mel-Frequency Cepstral Coefficients (https://en.wikipedia.org/wiki/Mel-frequency_cepstrum). The input is first decomposed in STRONG::numBands:: perceptually space bands, as in LINK::Classes/FluidMelBands::. It is then analysed in STRONG::numCoefs:: number of cepstral coefficients. It has the avantage to be amplitude invarient, except for the first coefficient. It is part of the Fluid Decomposition Toolkit of the FluCoMa project.FOOTNOTE:: This was made possible thanks to the FluCoMa project ( http://www.flucoma.org/ ) funded by the European Research Council ( https://erc.europa.eu/ ) under the European Union’s Horizon 2020 research and innovation programme (grant agreement No 725899).:: +This class implements a classic spectral descriptor, the Mel-Frequency Cepstral Coefficients (https://en.wikipedia.org/wiki/Mel-frequency_cepstrum). The input is first filtered in to STRONG::numBands:: perceptually-spaced bands, as in LINK::Classes/FluidMelBands::. It is then analysed into STRONG::numCoefs:: number of cepstral coefficients. It has the avantage of being amplitude invarient, except for the first coefficient. It is part of the Fluid Decomposition Toolkit of the FluCoMa project.FOOTNOTE:: This was made possible thanks to the FluCoMa project ( http://www.flucoma.org/ ) funded by the European Research Council ( https://erc.europa.eu/ ) under the European Union’s Horizon 2020 research and innovation programme (grant agreement No 725899).:: The process will return a single multichannel buffer of STRONG::numCoefs:: per input channel. Each frame represents a value, which is every hopSize. diff --git a/release-packaging/HelpSource/Classes/FluidMFCC.schelp b/release-packaging/HelpSource/Classes/FluidMFCC.schelp index 05905e9..61e4ed5 100644 --- a/release-packaging/HelpSource/Classes/FluidMFCC.schelp +++ b/release-packaging/HelpSource/Classes/FluidMFCC.schelp @@ -4,7 +4,7 @@ CATEGORIES:: Libraries>FluidDecomposition RELATED:: Guides/FluCoMa, Guides/FluidDecomposition, Classes/FluidMelBands DESCRIPTION:: -This class implements a classic spectral descriptor, the Mel-Frequency Cepstral Coefficients (https://en.wikipedia.org/wiki/Mel-frequency_cepstrum). The input is first decomposed in STRONG::numBands:: perceptually space bands, as in LINK::Classes/FluidMelBands::. It is then analysed in STRONG::numCoefs:: number of cepstral coefficients. It has the avantage to be amplitude invarient, except for the first coefficient. It is part of the Fluid Decomposition Toolkit of the FluCoMa project.FOOTNOTE:: This was made possible thanks to the FluCoMa project ( http://www.flucoma.org/ ) funded by the European Research Council ( https://erc.europa.eu/ ) under the European Union’s Horizon 2020 research and innovation programme (grant agreement No 725899).:: +This class implements a classic spectral descriptor, the Mel-Frequency Cepstral Coefficients (https://en.wikipedia.org/wiki/Mel-frequency_cepstrum). The input is first filtered in to STRONG::numBands:: perceptually-spaced bands, as in LINK::Classes/FluidMelBands::. It is then analysed into STRONG::numCoefs:: number of cepstral coefficients. It has the avantage of being amplitude invarient, except for the first coefficient. It is part of the Fluid Decomposition Toolkit of the FluCoMa project.FOOTNOTE:: This was made possible thanks to the FluCoMa project ( http://www.flucoma.org/ ) funded by the European Research Council ( https://erc.europa.eu/ ) under the European Union’s Horizon 2020 research and innovation programme (grant agreement No 725899).:: The process will return a multichannel control steam of STRONG::maxNumCoefs::, which will be repeated if no change happens within the algorythm, i.e. when the hopSize is larger than the server's kr period.