Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enhance/slicer detection curves #114

Merged
merged 17 commits into from
Mar 29, 2022

Conversation

weefuzzy
Copy link
Member

@weefuzzy weefuzzy commented Mar 9, 2022

Adds new client that produce the detection function curve for Novelty, Onset and Amp Slicers (which involved refactoring the respective algorithms to separate curve from detection)

@weefuzzy weefuzzy added the enhancement New feature or request label Mar 9, 2022
@weefuzzy weefuzzy self-assigned this Mar 9, 2022
@weefuzzy weefuzzy changed the title Enhance/change detection features Enhance/slicer detection curves Mar 9, 2022
@weefuzzy
Copy link
Member Author

weefuzzy commented Mar 9, 2022

we probably want to think about naming a bit

@jamesb93
Copy link
Member

jamesb93 commented Mar 9, 2022

In principle I don't see why any of these objects shouldn't be merged immediately, except for the fact that there is no documentation for them. I think that should be appended to this PR and I can offer to do this.

One concern I have is that it might be hard to understand the connection these curves have to the objects which do the segmenting, particularly as each one may have its own idiosyncratic way of digesting the curve and returning a point of change. All in all, I think that's a communication and documentation issue and I believe there are compelling examples to be made like this:

Kernel 7

image

Kernel 21

image

For showing how an actual novelty curve changes with the kernel.

Another thought is how do these fit into documentation. Do we see them as their own beast, or something that assists with the slicers. In the latter case, I believe we could simply introduce a tab for the appropriate slicer's help file that weaves these objects in and especially as they share parameters.

@jamesb93
Copy link
Member

jamesb93 commented Mar 9, 2022

Not to mention how insanely good these tools will be for teaching!

Copy link
Member

@tedmoore tedmoore left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think once these have documentation in the RST they should be merged!

@jamesb93
Copy link
Member

I think once these have documentation in the RST they should be merged!

and help files for PD Max too

@tremblap
Copy link
Member

indeed cursory help for Max and Pd - we also need to agree with name but that discussion seems to have been taken in the Max repo: flucoma/flucoma-max#151

@tremblap
Copy link
Member

ok this doesn't compile on my mac - 114 on core, 151 on max - the error is:

/Users/pa/Desktop/fromBU/documents@hudd/research/projects/fluid corpus navigation/research/fluid_decomposition/include/clients/nrt/../common/FluidBaseClient.hpp:215:52: error: no member named 'analysisSettings' in 'fluid::client::onsetfeature::OnsetFeatureClient' AnalysisSize analysisSettings() { return mClient.analysisSettings(); }

@weefuzzy
Copy link
Member Author

ok this doesn't compile on my mac - 114 on core, 151 on max - the error is:

Should be fixed now

@tremblap
Copy link
Member

@jamesb93 nice help visualisation in novelty - although I'm surprised by the peak-picking results but that might be a bug in the novelty :)

So we need to find the names, make the helpfiles in all CCEs, the docs (for the CLI too!) and this is good to go. I am opened to suggestions on the merge order, including a temporary out of sync between cces

@jamesb93
Copy link
Member

@jamesb93 nice help visualisation in novelty - although I'm surprised by the peak-picking results but that might be a bug in the novelty :)

So we need to find the names, make the helpfiles in all CCEs, the docs (for the CLI too!) and this is good to go. I am opened to suggestions on the merge order, including a temporary out of sync between cces

My proposed order is this because they are dependents of each other:

  1. Agree on names

  2. Make help files and RST docs

  3. Create targets for CLI

@tremblap
Copy link
Member

For the last 3 days, I keep swapping words in my head. 'detect' is what we do on the produced time series so it feels one level too abstract. 'curve/stream/flux' imply something that is problematic. 'metric' is boring. then I turn back to the first one and start again.

I think I have started to almost agree with Owen (despite the exaggerations in his arguments) that just the name is maybe misleading the other way. So we're stuck. except if we take detect to imply a continuum in the English language. but then if I am confused, imagine someone who doesn't have the luxury of research time on interface semantics...

@AlexHarker
Copy link
Contributor

AlexHarker commented Mar 28, 2022

@jamesb93 asked me to look here, but TLDR (skimmed) so at the risk of repeating someone else - have you considered (for naming):

noveltyfeature~
onsetfeature~
transientfeature~
etc.

(I get that people here are discussing buffer versions, but if it can run in realtime, why wouldn't that also exist?)

[Runs away quickly, suffering the loss of just one or two spanners]

@tremblap
Copy link
Member

@AlexHarker buf and RT will exist don't worry

Feature was considered higher in this thread indeed and even was vetoed by @jamesb93

@AlexHarker
Copy link
Contributor

AlexHarker commented Mar 28, 2022

I see (from a quick search) that feature has been discussed above:

"onsetfeature is bad"

I disagree - it is the feature on which onset detection is based. Using "spectral difference" means the user needs to know that that's how onsets are found. It also implies a pure difference, but the spectral difference for onset detection is often/sometimes weighted or biased by time. This is always in one direction (you could do the reverse to make a offset detector, but the underlying algos you are providing don't do or allow that as far as I'm aware). Therefore the spectral differences you are working with are inherently tied to the notion that difference should be weighted in one direction to detect onsets. Detect/detection in the name is to my mind a poor choice, because you are removing the detector and giving just the underlying time series - or feature.

@jamesb93
Copy link
Member

I think outside of the one case where I have a sense of dread fluid.bufnoveltyfeature~ @features mybuf @feature 0, feature as an affix feels quite good.

@jamesb93 jamesb93 added this to the beta6 milestone Mar 28, 2022
@weefuzzy
Copy link
Member Author

So after some more back and forth <X>Feature it is, with the additional side effect that the parameter formerly known as feature in Novelty<Y> becomes algorithm

@jamesb93
Copy link
Member

So after some more back and forth <X>Feature it is, with the additional side effect that the parameter formerly known as feature in Novelty<Y> becomes algorithm

Excuse my confusion, will the @algorithm change come in this PR or separately and after beta6?

@weefuzzy
Copy link
Member Author

Nope. All in, maximum chaos 🔥

@tremblap
Copy link
Member

Excuse my confusion, will the @Algorithm change come in this PR or separately and after beta6?

good question - is it used in the videos?

@weefuzzy
Copy link
Member Author

Unless you want to put up with @feature vs @features for any length of time?

@jamesb93
Copy link
Member

Excuse my confusion, will the @Algorithm change come in this PR or separately and after beta6?

good question - is it used in the videos?

I used onsetslice in the mapping ones so I think we're good on my side of things.

@weefuzzy
Copy link
Member Author

Other option is we defer the change to NoveltySlice and live with the inconsistency for a bit

@jamesb93
Copy link
Member

Unless you want to put up with @feature vs @features for any length of time?

:(

@jamesb93
Copy link
Member

Other option is we defer the change to NoveltySlice and live with the inconsistency for a bit

It doesn't break videos so I think go for it!

@tremblap
Copy link
Member

if it doesn't break the videos then indeed let's do it earlier than later!

@jamesb93
Copy link
Member

Docs will appear here:

flucoma/flucoma-docs#101

@tedmoore
Copy link
Member

I offer you my unsolicited approval 😛

@weefuzzy weefuzzy merged commit b7c81c3 into flucoma:dev Mar 29, 2022
weefuzzy added a commit that referenced this pull request Mar 30, 2022
* Add pointwise inversion to PCA

* batchsize was not capped down, leading to hilarious crashes (#63)

* updating credits with the new team

* Include SHAs for flucoma-core and current project in version string

* Conform version string with SHAs to semantic versioning spec

* add chroma feature to NoveltySlice

* Toggle BLAS settings for compiling on APPLE (#67)

* disable blas for compiling on macos

* remove line according to O's suggestion

* error in the client of (buf)noveltyslice since introducing chroma as feature

* Enhance/versioning (#75)

* Remove old header template

* Add in TU template and declaration header

* update CMake to new version scheme

* Get SHA from top level source folder

* ensure git is found

* fix issue #23 - zeroing the output vector in the mTracker loop (#82)

* fix issue #23 - zeroing the output vector in the mTracker loop

* now really corrected thanks to @weefuzzy

* Initial unit tests for `include/data` (#83)

* initial FluidTensor tests

* add assert death test to cmake

* more assert death

* fix compile tests

* Working assertion tests, it seems

* Add first FluidTensorView tests

* tidy up cmake a bit

* factor out EqualRange matcher to own header

* Add FluidTensorSupport tests

* rollback to Catch2 

for compatability with approvaltests.cpp

* add tests for FluidDataSet

bubba's first approval test ✨

* test print for bigger range as well

* tidy cmake

* make building tests optional

* remove spurious files from tracking

* add workflow for CI

* make workflow manually triggerable

* correct workflow file extention

* pleading and bargaining with github

* getting event name right

* FluidTensorSlice: fix terrible and aged typename mistake

* workflow: try and cache whole build folder

* wotkflow: unbreak yaml

* workflow: disable fail-fast

* Amend upper frequency limit of mel bands in NoveltySlice to 20kHz

* [Enhance] FluCoMa-wide DataSets as a resource (#88)

* treat wav files as binary

* move audio files to resources folder

* add datasets

* add pre-trained neural networks

* add flucoma corpus

* move datasets to data

* BufAudioTransport now has A-B based arguments

* fix mistakenly fixed type signature in FluidSink

* Tests for framing and overlap add bits

* remove build folder caching as a bad job 

(failing forever once cache goes bad)

* Test/sc ports/slicers (#91)

* Working port of SC NoveltySlice tests

* formatting and constifying

* use generated path for test signal loading

* update testsignals header and cmake

* Add TestOnsetSegmention, update TestNoveltySeg for new resource loading

* Add Onsets and update novelty in CMake

* Add EnvelopeSeg tests and some missing headers

* Add EnvelopeGate tests

* Add TransientSlice tests

* update location of audio files

* add missing function to signals.cpp.in

* Fix test signal for AmpSlice test

* try and speed up test run

* FluidSource test blackholed on MSVC

It doesn't like GENERATE_REF nested in GENERATE. Nosir.

* ignore all build folders for a quieter life

* bump Eigen version (#93)

* bump Eigen version

* note new Eigen version in readme

* add mammoth dataset

* OnsetSlice and NoveltySlice clients: fix block size dependency (#96)

Makes tracking of `frameOffset` stateful across calls to `process` so that odd hop sizes are handled correctly

* `SliceIterator::end()` fix (#97)

* fix problem with 0-size slices and end() sentinels

* adds basic test for slice ietrator fix

* annotate datasets

* add mfcc for fluid_corpus

* update mfcc dataset

* bump version to beta5 (#101)

* Add pointwise inversion to PCA

* Enhance `ParameterSet` (#103)

* Meta: Add HO function to apply function only to select indicies of a tuple

* ParameterSet: Easier application of functions by type with lambdas + discovering the count of params by type

* BufStats: Weights should be an input buffer

* [Fix] Make error language more consistent (#118)

* replace incorrect use of label where identifier is intended

* dont shorten identifier to id

* rename DuplicateLabel to DuplicateIdentifier

* Enhance/slicer detection curves (#114)

* EnvelopeSegmentation: refactor into feature curve + detector

* NoveltySegementation: refactor into feature curve + detector

* OnsetSegmentation: refactor into feature curve + detector

* Add OnsetFeatureClient

* Add NoveltyFeatureClient

* Add AmpFeatureClient

* correct novelty and onset curves for nrt

* fix longstanding assumption in NRT wrapper that client latency == window size

* Update NoveltyFeatureClient to new analysisSettings method

* remove old FIXME comment

* fix cout call killing test on windows

* Missing update change to OnsetFeatureClient::analysisSettings()

* algorithms: NoveltyCurve -> NoveltyFeature

* Novelty: Update algorihtm class name, and change 'feature' param to algorithm

* Also update names in NovletySegmentation

* BufOnsetFeature correct output buffer name

* Novelty / OnsetFeature - cache descriptor values for when sigvs < hop

* more information on failing test thx

Co-authored-by: Owen Green <[email protected]>
Co-authored-by: tremblap <[email protected]>
Co-authored-by: g-roma <[email protected]>
Co-authored-by: James Bradbury <[email protected]>
Co-authored-by: Ted Moore <[email protected]>
weefuzzy added a commit that referenced this pull request Apr 1, 2022
* Add pointwise inversion to PCA

* Use `operator<<=` for copy to / from FluidTensorView

* update all instances of FluidTensorView copying

* Signals.cpp.in fix lingering copy assignment

* Add conventional, shallow copy / move assignment to FluidTensorView

* `SliceIterator::end()` fix (#97)

* fix problem with 0-size slices and end() sentinels

* adds basic test for slice ietrator fix

* annotate datasets

* add mfcc for fluid_corpus

* update mfcc dataset

* bump version to beta5 (#101)

* [Release] 1.0.0-beta5 (#102)

* batchsize was not capped down, leading to hilarious crashes (#63)

* updating credits with the new team

* Include SHAs for flucoma-core and current project in version string

* Conform version string with SHAs to semantic versioning spec

* add chroma feature to NoveltySlice

* Toggle BLAS settings for compiling on APPLE (#67)

* disable blas for compiling on macos

* remove line according to O's suggestion

* error in the client of (buf)noveltyslice since introducing chroma as feature

* Enhance/versioning (#75)

* Remove old header template

* Add in TU template and declaration header

* update CMake to new version scheme

* Get SHA from top level source folder

* ensure git is found

* fix issue #23 - zeroing the output vector in the mTracker loop (#82)

* fix issue #23 - zeroing the output vector in the mTracker loop

* now really corrected thanks to @weefuzzy

* Initial unit tests for `include/data` (#83)

* initial FluidTensor tests

* add assert death test to cmake

* more assert death

* fix compile tests

* Working assertion tests, it seems

* Add first FluidTensorView tests

* tidy up cmake a bit

* factor out EqualRange matcher to own header

* Add FluidTensorSupport tests

* rollback to Catch2 

for compatability with approvaltests.cpp

* add tests for FluidDataSet

bubba's first approval test ✨

* test print for bigger range as well

* tidy cmake

* make building tests optional

* remove spurious files from tracking

* add workflow for CI

* make workflow manually triggerable

* correct workflow file extention

* pleading and bargaining with github

* getting event name right

* FluidTensorSlice: fix terrible and aged typename mistake

* workflow: try and cache whole build folder

* wotkflow: unbreak yaml

* workflow: disable fail-fast

* Amend upper frequency limit of mel bands in NoveltySlice to 20kHz

* [Enhance] FluCoMa-wide DataSets as a resource (#88)

* treat wav files as binary

* move audio files to resources folder

* add datasets

* add pre-trained neural networks

* add flucoma corpus

* move datasets to data

* BufAudioTransport now has A-B based arguments

* fix mistakenly fixed type signature in FluidSink

* Tests for framing and overlap add bits

* remove build folder caching as a bad job 

(failing forever once cache goes bad)

* Test/sc ports/slicers (#91)

* Working port of SC NoveltySlice tests

* formatting and constifying

* use generated path for test signal loading

* update testsignals header and cmake

* Add TestOnsetSegmention, update TestNoveltySeg for new resource loading

* Add Onsets and update novelty in CMake

* Add EnvelopeSeg tests and some missing headers

* Add EnvelopeGate tests

* Add TransientSlice tests

* update location of audio files

* add missing function to signals.cpp.in

* Fix test signal for AmpSlice test

* try and speed up test run

* FluidSource test blackholed on MSVC

It doesn't like GENERATE_REF nested in GENERATE. Nosir.

* ignore all build folders for a quieter life

* bump Eigen version (#93)

* bump Eigen version

* note new Eigen version in readme

* add mammoth dataset

* OnsetSlice and NoveltySlice clients: fix block size dependency (#96)

Makes tracking of `frameOffset` stateful across calls to `process` so that odd hop sizes are handled correctly

* `SliceIterator::end()` fix (#97)

* fix problem with 0-size slices and end() sentinels

* adds basic test for slice ietrator fix

* annotate datasets

* add mfcc for fluid_corpus

* update mfcc dataset

* bump version to beta5 (#101)

Co-authored-by: tremblap <[email protected]>
Co-authored-by: weefuzzy <[email protected]>
Co-authored-by: g-roma <[email protected]>
Co-authored-by: Ted Moore <[email protected]>

* Add pointwise inversion to PCA

* Enhance `ParameterSet` (#103)

* Meta: Add HO function to apply function only to select indicies of a tuple

* ParameterSet: Easier application of functions by type with lambdas + discovering the count of params by type

* BufStats: Weights should be an input buffer

* [Fix] Make error language more consistent (#118)

* replace incorrect use of label where identifier is intended

* dont shorten identifier to id

* rename DuplicateLabel to DuplicateIdentifier

* Enhance/slicer detection curves (#114)

* EnvelopeSegmentation: refactor into feature curve + detector

* NoveltySegementation: refactor into feature curve + detector

* OnsetSegmentation: refactor into feature curve + detector

* Add OnsetFeatureClient

* Add NoveltyFeatureClient

* Add AmpFeatureClient

* correct novelty and onset curves for nrt

* fix longstanding assumption in NRT wrapper that client latency == window size

* Update NoveltyFeatureClient to new analysisSettings method

* remove old FIXME comment

* fix cout call killing test on windows

* Missing update change to OnsetFeatureClient::analysisSettings()

* algorithms: NoveltyCurve -> NoveltyFeature

* Novelty: Update algorihtm class name, and change 'feature' param to algorithm

* Also update names in NovletySegmentation

* BufOnsetFeature correct output buffer name

* Novelty / OnsetFeature - cache descriptor values for when sigvs < hop

* more information on failing test thx

* [Release] 1.0.0-beta6 (#126)

* Add pointwise inversion to PCA

* batchsize was not capped down, leading to hilarious crashes (#63)

* updating credits with the new team

* Include SHAs for flucoma-core and current project in version string

* Conform version string with SHAs to semantic versioning spec

* add chroma feature to NoveltySlice

* Toggle BLAS settings for compiling on APPLE (#67)

* disable blas for compiling on macos

* remove line according to O's suggestion

* error in the client of (buf)noveltyslice since introducing chroma as feature

* Enhance/versioning (#75)

* Remove old header template

* Add in TU template and declaration header

* update CMake to new version scheme

* Get SHA from top level source folder

* ensure git is found

* fix issue #23 - zeroing the output vector in the mTracker loop (#82)

* fix issue #23 - zeroing the output vector in the mTracker loop

* now really corrected thanks to @weefuzzy

* Initial unit tests for `include/data` (#83)

* initial FluidTensor tests

* add assert death test to cmake

* more assert death

* fix compile tests

* Working assertion tests, it seems

* Add first FluidTensorView tests

* tidy up cmake a bit

* factor out EqualRange matcher to own header

* Add FluidTensorSupport tests

* rollback to Catch2 

for compatability with approvaltests.cpp

* add tests for FluidDataSet

bubba's first approval test ✨

* test print for bigger range as well

* tidy cmake

* make building tests optional

* remove spurious files from tracking

* add workflow for CI

* make workflow manually triggerable

* correct workflow file extention

* pleading and bargaining with github

* getting event name right

* FluidTensorSlice: fix terrible and aged typename mistake

* workflow: try and cache whole build folder

* wotkflow: unbreak yaml

* workflow: disable fail-fast

* Amend upper frequency limit of mel bands in NoveltySlice to 20kHz

* [Enhance] FluCoMa-wide DataSets as a resource (#88)

* treat wav files as binary

* move audio files to resources folder

* add datasets

* add pre-trained neural networks

* add flucoma corpus

* move datasets to data

* BufAudioTransport now has A-B based arguments

* fix mistakenly fixed type signature in FluidSink

* Tests for framing and overlap add bits

* remove build folder caching as a bad job 

(failing forever once cache goes bad)

* Test/sc ports/slicers (#91)

* Working port of SC NoveltySlice tests

* formatting and constifying

* use generated path for test signal loading

* update testsignals header and cmake

* Add TestOnsetSegmention, update TestNoveltySeg for new resource loading

* Add Onsets and update novelty in CMake

* Add EnvelopeSeg tests and some missing headers

* Add EnvelopeGate tests

* Add TransientSlice tests

* update location of audio files

* add missing function to signals.cpp.in

* Fix test signal for AmpSlice test

* try and speed up test run

* FluidSource test blackholed on MSVC

It doesn't like GENERATE_REF nested in GENERATE. Nosir.

* ignore all build folders for a quieter life

* bump Eigen version (#93)

* bump Eigen version

* note new Eigen version in readme

* add mammoth dataset

* OnsetSlice and NoveltySlice clients: fix block size dependency (#96)

Makes tracking of `frameOffset` stateful across calls to `process` so that odd hop sizes are handled correctly

* `SliceIterator::end()` fix (#97)

* fix problem with 0-size slices and end() sentinels

* adds basic test for slice ietrator fix

* annotate datasets

* add mfcc for fluid_corpus

* update mfcc dataset

* bump version to beta5 (#101)

* Add pointwise inversion to PCA

* Enhance `ParameterSet` (#103)

* Meta: Add HO function to apply function only to select indicies of a tuple

* ParameterSet: Easier application of functions by type with lambdas + discovering the count of params by type

* BufStats: Weights should be an input buffer

* [Fix] Make error language more consistent (#118)

* replace incorrect use of label where identifier is intended

* dont shorten identifier to id

* rename DuplicateLabel to DuplicateIdentifier

* Enhance/slicer detection curves (#114)

* EnvelopeSegmentation: refactor into feature curve + detector

* NoveltySegementation: refactor into feature curve + detector

* OnsetSegmentation: refactor into feature curve + detector

* Add OnsetFeatureClient

* Add NoveltyFeatureClient

* Add AmpFeatureClient

* correct novelty and onset curves for nrt

* fix longstanding assumption in NRT wrapper that client latency == window size

* Update NoveltyFeatureClient to new analysisSettings method

* remove old FIXME comment

* fix cout call killing test on windows

* Missing update change to OnsetFeatureClient::analysisSettings()

* algorithms: NoveltyCurve -> NoveltyFeature

* Novelty: Update algorihtm class name, and change 'feature' param to algorithm

* Also update names in NovletySegmentation

* BufOnsetFeature correct output buffer name

* Novelty / OnsetFeature - cache descriptor values for when sigvs < hop

* more information on failing test thx

Co-authored-by: Owen Green <[email protected]>
Co-authored-by: tremblap <[email protected]>
Co-authored-by: g-roma <[email protected]>
Co-authored-by: James Bradbury <[email protected]>
Co-authored-by: Ted Moore <[email protected]>

* Update FlucomaVersion.cmake

* Enhance/fewer warnings (#85)

* excess semicolons

* unused variables

* type narrowing / signed-unsigned

* integer conversions: new Eigen::Array alias for index rather than int

* json: stop embedding nlohmann library and instead fetch at configure time (#105)

* ParameterDescriptors: make more composable by adding insert function (#107)

* FluidJSON: Avoid some implicit conversion on import that could confuse compiler

* Deal with some warnings

* EnvelopeSegmentation: pass correct params to Envelope

* update with new FluidTensorView copying ops

* Use Windows 2019 in CI

* Parallel tests seem unreliable on windows

Co-authored-by: James Bradbury <[email protected]>
Co-authored-by: tremblap <[email protected]>
Co-authored-by: g-roma <[email protected]>
Co-authored-by: Ted Moore <[email protected]>
Co-authored-by: James Bradbury <[email protected]>
jamesb93 pushed a commit that referenced this pull request Jun 14, 2022
* Add pointwise inversion to PCA

* batchsize was not capped down, leading to hilarious crashes (#63)

* updating credits with the new team

* Include SHAs for flucoma-core and current project in version string

* Conform version string with SHAs to semantic versioning spec

* add chroma feature to NoveltySlice

* Toggle BLAS settings for compiling on APPLE (#67)

* disable blas for compiling on macos

* remove line according to O's suggestion

* error in the client of (buf)noveltyslice since introducing chroma as feature

* Enhance/versioning (#75)

* Remove old header template

* Add in TU template and declaration header

* update CMake to new version scheme

* Get SHA from top level source folder

* ensure git is found

* fix issue #23 - zeroing the output vector in the mTracker loop (#82)

* fix issue #23 - zeroing the output vector in the mTracker loop

* now really corrected thanks to @weefuzzy

* Initial unit tests for `include/data` (#83)

* initial FluidTensor tests

* add assert death test to cmake

* more assert death

* fix compile tests

* Working assertion tests, it seems

* Add first FluidTensorView tests

* tidy up cmake a bit

* factor out EqualRange matcher to own header

* Add FluidTensorSupport tests

* rollback to Catch2 

for compatability with approvaltests.cpp

* add tests for FluidDataSet

bubba's first approval test ✨

* test print for bigger range as well

* tidy cmake

* make building tests optional

* remove spurious files from tracking

* add workflow for CI

* make workflow manually triggerable

* correct workflow file extention

* pleading and bargaining with github

* getting event name right

* FluidTensorSlice: fix terrible and aged typename mistake

* workflow: try and cache whole build folder

* wotkflow: unbreak yaml

* workflow: disable fail-fast

* Amend upper frequency limit of mel bands in NoveltySlice to 20kHz

* [Enhance] FluCoMa-wide DataSets as a resource (#88)

* treat wav files as binary

* move audio files to resources folder

* add datasets

* add pre-trained neural networks

* add flucoma corpus

* move datasets to data

* BufAudioTransport now has A-B based arguments

* fix mistakenly fixed type signature in FluidSink

* Tests for framing and overlap add bits

* remove build folder caching as a bad job 

(failing forever once cache goes bad)

* Test/sc ports/slicers (#91)

* Working port of SC NoveltySlice tests

* formatting and constifying

* use generated path for test signal loading

* update testsignals header and cmake

* Add TestOnsetSegmention, update TestNoveltySeg for new resource loading

* Add Onsets and update novelty in CMake

* Add EnvelopeSeg tests and some missing headers

* Add EnvelopeGate tests

* Add TransientSlice tests

* update location of audio files

* add missing function to signals.cpp.in

* Fix test signal for AmpSlice test

* try and speed up test run

* FluidSource test blackholed on MSVC

It doesn't like GENERATE_REF nested in GENERATE. Nosir.

* ignore all build folders for a quieter life

* bump Eigen version (#93)

* bump Eigen version

* note new Eigen version in readme

* add mammoth dataset

* OnsetSlice and NoveltySlice clients: fix block size dependency (#96)

Makes tracking of `frameOffset` stateful across calls to `process` so that odd hop sizes are handled correctly

* Use `operator<<=` for copy to / from FluidTensorView

* update all instances of FluidTensorView copying

* Signals.cpp.in fix lingering copy assignment

* Add conventional, shallow copy / move assignment to FluidTensorView

* `SliceIterator::end()` fix (#97)

* fix problem with 0-size slices and end() sentinels

* adds basic test for slice ietrator fix

* annotate datasets

* add mfcc for fluid_corpus

* update mfcc dataset

* bump version to beta5 (#101)

* Add pointwise inversion to PCA

* Enhance `ParameterSet` (#103)

* Meta: Add HO function to apply function only to select indicies of a tuple

* ParameterSet: Easier application of functions by type with lambdas + discovering the count of params by type

* BufStats: Weights should be an input buffer

* [Fix] Make error language more consistent (#118)

* replace incorrect use of label where identifier is intended

* dont shorten identifier to id

* rename DuplicateLabel to DuplicateIdentifier

* Enhance/slicer detection curves (#114)

* EnvelopeSegmentation: refactor into feature curve + detector

* NoveltySegementation: refactor into feature curve + detector

* OnsetSegmentation: refactor into feature curve + detector

* Add OnsetFeatureClient

* Add NoveltyFeatureClient

* Add AmpFeatureClient

* correct novelty and onset curves for nrt

* fix longstanding assumption in NRT wrapper that client latency == window size

* Update NoveltyFeatureClient to new analysisSettings method

* remove old FIXME comment

* fix cout call killing test on windows

* Missing update change to OnsetFeatureClient::analysisSettings()

* algorithms: NoveltyCurve -> NoveltyFeature

* Novelty: Update algorihtm class name, and change 'feature' param to algorithm

* Also update names in NovletySegmentation

* BufOnsetFeature correct output buffer name

* Novelty / OnsetFeature - cache descriptor values for when sigvs < hop

* more information on failing test thx

* Enhance/fewer warnings (#85)

* excess semicolons

* unused variables

* type narrowing / signed-unsigned

* integer conversions: new Eigen::Array alias for index rather than int

* json: stop embedding nlohmann library and instead fetch at configure time (#105)

* ParameterDescriptors: make more composable by adding insert function (#107)

* FluidJSON: Avoid some implicit conversion on import that could confuse compiler

* Deal with some warnings

* EnvelopeSegmentation: pass correct params to Envelope

* FluidTensorView deep copy gets distinct operator (#100)

* Add pointwise inversion to PCA

* Use `operator<<=` for copy to / from FluidTensorView

* update all instances of FluidTensorView copying

* Signals.cpp.in fix lingering copy assignment

* Add conventional, shallow copy / move assignment to FluidTensorView

* `SliceIterator::end()` fix (#97)

* fix problem with 0-size slices and end() sentinels

* adds basic test for slice ietrator fix

* annotate datasets

* add mfcc for fluid_corpus

* update mfcc dataset

* bump version to beta5 (#101)

* [Release] 1.0.0-beta5 (#102)

* batchsize was not capped down, leading to hilarious crashes (#63)

* updating credits with the new team

* Include SHAs for flucoma-core and current project in version string

* Conform version string with SHAs to semantic versioning spec

* add chroma feature to NoveltySlice

* Toggle BLAS settings for compiling on APPLE (#67)

* disable blas for compiling on macos

* remove line according to O's suggestion

* error in the client of (buf)noveltyslice since introducing chroma as feature

* Enhance/versioning (#75)

* Remove old header template

* Add in TU template and declaration header

* update CMake to new version scheme

* Get SHA from top level source folder

* ensure git is found

* fix issue #23 - zeroing the output vector in the mTracker loop (#82)

* fix issue #23 - zeroing the output vector in the mTracker loop

* now really corrected thanks to @weefuzzy

* Initial unit tests for `include/data` (#83)

* initial FluidTensor tests

* add assert death test to cmake

* more assert death

* fix compile tests

* Working assertion tests, it seems

* Add first FluidTensorView tests

* tidy up cmake a bit

* factor out EqualRange matcher to own header

* Add FluidTensorSupport tests

* rollback to Catch2 

for compatability with approvaltests.cpp

* add tests for FluidDataSet

bubba's first approval test ✨

* test print for bigger range as well

* tidy cmake

* make building tests optional

* remove spurious files from tracking

* add workflow for CI

* make workflow manually triggerable

* correct workflow file extention

* pleading and bargaining with github

* getting event name right

* FluidTensorSlice: fix terrible and aged typename mistake

* workflow: try and cache whole build folder

* wotkflow: unbreak yaml

* workflow: disable fail-fast

* Amend upper frequency limit of mel bands in NoveltySlice to 20kHz

* [Enhance] FluCoMa-wide DataSets as a resource (#88)

* treat wav files as binary

* move audio files to resources folder

* add datasets

* add pre-trained neural networks

* add flucoma corpus

* move datasets to data

* BufAudioTransport now has A-B based arguments

* fix mistakenly fixed type signature in FluidSink

* Tests for framing and overlap add bits

* remove build folder caching as a bad job 

(failing forever once cache goes bad)

* Test/sc ports/slicers (#91)

* Working port of SC NoveltySlice tests

* formatting and constifying

* use generated path for test signal loading

* update testsignals header and cmake

* Add TestOnsetSegmention, update TestNoveltySeg for new resource loading

* Add Onsets and update novelty in CMake

* Add EnvelopeSeg tests and some missing headers

* Add EnvelopeGate tests

* Add TransientSlice tests

* update location of audio files

* add missing function to signals.cpp.in

* Fix test signal for AmpSlice test

* try and speed up test run

* FluidSource test blackholed on MSVC

It doesn't like GENERATE_REF nested in GENERATE. Nosir.

* ignore all build folders for a quieter life

* bump Eigen version (#93)

* bump Eigen version

* note new Eigen version in readme

* add mammoth dataset

* OnsetSlice and NoveltySlice clients: fix block size dependency (#96)

Makes tracking of `frameOffset` stateful across calls to `process` so that odd hop sizes are handled correctly

* `SliceIterator::end()` fix (#97)

* fix problem with 0-size slices and end() sentinels

* adds basic test for slice ietrator fix

* annotate datasets

* add mfcc for fluid_corpus

* update mfcc dataset

* bump version to beta5 (#101)

Co-authored-by: tremblap <[email protected]>
Co-authored-by: weefuzzy <[email protected]>
Co-authored-by: g-roma <[email protected]>
Co-authored-by: Ted Moore <[email protected]>

* Add pointwise inversion to PCA

* Enhance `ParameterSet` (#103)

* Meta: Add HO function to apply function only to select indicies of a tuple

* ParameterSet: Easier application of functions by type with lambdas + discovering the count of params by type

* BufStats: Weights should be an input buffer

* [Fix] Make error language more consistent (#118)

* replace incorrect use of label where identifier is intended

* dont shorten identifier to id

* rename DuplicateLabel to DuplicateIdentifier

* Enhance/slicer detection curves (#114)

* EnvelopeSegmentation: refactor into feature curve + detector

* NoveltySegementation: refactor into feature curve + detector

* OnsetSegmentation: refactor into feature curve + detector

* Add OnsetFeatureClient

* Add NoveltyFeatureClient

* Add AmpFeatureClient

* correct novelty and onset curves for nrt

* fix longstanding assumption in NRT wrapper that client latency == window size

* Update NoveltyFeatureClient to new analysisSettings method

* remove old FIXME comment

* fix cout call killing test on windows

* Missing update change to OnsetFeatureClient::analysisSettings()

* algorithms: NoveltyCurve -> NoveltyFeature

* Novelty: Update algorihtm class name, and change 'feature' param to algorithm

* Also update names in NovletySegmentation

* BufOnsetFeature correct output buffer name

* Novelty / OnsetFeature - cache descriptor values for when sigvs < hop

* more information on failing test thx

* [Release] 1.0.0-beta6 (#126)

* Add pointwise inversion to PCA

* batchsize was not capped down, leading to hilarious crashes (#63)

* updating credits with the new team

* Include SHAs for flucoma-core and current project in version string

* Conform version string with SHAs to semantic versioning spec

* add chroma feature to NoveltySlice

* Toggle BLAS settings for compiling on APPLE (#67)

* disable blas for compiling on macos

* remove line according to O's suggestion

* error in the client of (buf)noveltyslice since introducing chroma as feature

* Enhance/versioning (#75)

* Remove old header template

* Add in TU template and declaration header

* update CMake to new version scheme

* Get SHA from top level source folder

* ensure git is found

* fix issue #23 - zeroing the output vector in the mTracker loop (#82)

* fix issue #23 - zeroing the output vector in the mTracker loop

* now really corrected thanks to @weefuzzy

* Initial unit tests for `include/data` (#83)

* initial FluidTensor tests

* add assert death test to cmake

* more assert death

* fix compile tests

* Working assertion tests, it seems

* Add first FluidTensorView tests

* tidy up cmake a bit

* factor out EqualRange matcher to own header

* Add FluidTensorSupport tests

* rollback to Catch2 

for compatability with approvaltests.cpp

* add tests for FluidDataSet

bubba's first approval test ✨

* test print for bigger range as well

* tidy cmake

* make building tests optional

* remove spurious files from tracking

* add workflow for CI

* make workflow manually triggerable

* correct workflow file extention

* pleading and bargaining with github

* getting event name right

* FluidTensorSlice: fix terrible and aged typename mistake

* workflow: try and cache whole build folder

* wotkflow: unbreak yaml

* workflow: disable fail-fast

* Amend upper frequency limit of mel bands in NoveltySlice to 20kHz

* [Enhance] FluCoMa-wide DataSets as a resource (#88)

* treat wav files as binary

* move audio files to resources folder

* add datasets

* add pre-trained neural networks

* add flucoma corpus

* move datasets to data

* BufAudioTransport now has A-B based arguments

* fix mistakenly fixed type signature in FluidSink

* Tests for framing and overlap add bits

* remove build folder caching as a bad job 

(failing forever once cache goes bad)

* Test/sc ports/slicers (#91)

* Working port of SC NoveltySlice tests

* formatting and constifying

* use generated path for test signal loading

* update testsignals header and cmake

* Add TestOnsetSegmention, update TestNoveltySeg for new resource loading

* Add Onsets and update novelty in CMake

* Add EnvelopeSeg tests and some missing headers

* Add EnvelopeGate tests

* Add TransientSlice tests

* update location of audio files

* add missing function to signals.cpp.in

* Fix test signal for AmpSlice test

* try and speed up test run

* FluidSource test blackholed on MSVC

It doesn't like GENERATE_REF nested in GENERATE. Nosir.

* ignore all build folders for a quieter life

* bump Eigen version (#93)

* bump Eigen version

* note new Eigen version in readme

* add mammoth dataset

* OnsetSlice and NoveltySlice clients: fix block size dependency (#96)

Makes tracking of `frameOffset` stateful across calls to `process` so that odd hop sizes are handled correctly

* `SliceIterator::end()` fix (#97)

* fix problem with 0-size slices and end() sentinels

* adds basic test for slice ietrator fix

* annotate datasets

* add mfcc for fluid_corpus

* update mfcc dataset

* bump version to beta5 (#101)

* Add pointwise inversion to PCA

* Enhance `ParameterSet` (#103)

* Meta: Add HO function to apply function only to select indicies of a tuple

* ParameterSet: Easier application of functions by type with lambdas + discovering the count of params by type

* BufStats: Weights should be an input buffer

* [Fix] Make error language more consistent (#118)

* replace incorrect use of label where identifier is intended

* dont shorten identifier to id

* rename DuplicateLabel to DuplicateIdentifier

* Enhance/slicer detection curves (#114)

* EnvelopeSegmentation: refactor into feature curve + detector

* NoveltySegementation: refactor into feature curve + detector

* OnsetSegmentation: refactor into feature curve + detector

* Add OnsetFeatureClient

* Add NoveltyFeatureClient

* Add AmpFeatureClient

* correct novelty and onset curves for nrt

* fix longstanding assumption in NRT wrapper that client latency == window size

* Update NoveltyFeatureClient to new analysisSettings method

* remove old FIXME comment

* fix cout call killing test on windows

* Missing update change to OnsetFeatureClient::analysisSettings()

* algorithms: NoveltyCurve -> NoveltyFeature

* Novelty: Update algorihtm class name, and change 'feature' param to algorithm

* Also update names in NovletySegmentation

* BufOnsetFeature correct output buffer name

* Novelty / OnsetFeature - cache descriptor values for when sigvs < hop

* more information on failing test thx

Co-authored-by: Owen Green <[email protected]>
Co-authored-by: tremblap <[email protected]>
Co-authored-by: g-roma <[email protected]>
Co-authored-by: James Bradbury <[email protected]>
Co-authored-by: Ted Moore <[email protected]>

* Update FlucomaVersion.cmake

* Enhance/fewer warnings (#85)

* excess semicolons

* unused variables

* type narrowing / signed-unsigned

* integer conversions: new Eigen::Array alias for index rather than int

* json: stop embedding nlohmann library and instead fetch at configure time (#105)

* ParameterDescriptors: make more composable by adding insert function (#107)

* FluidJSON: Avoid some implicit conversion on import that could confuse compiler

* Deal with some warnings

* EnvelopeSegmentation: pass correct params to Envelope

* update with new FluidTensorView copying ops

* Use Windows 2019 in CI

* Parallel tests seem unreliable on windows

Co-authored-by: James Bradbury <[email protected]>
Co-authored-by: tremblap <[email protected]>
Co-authored-by: g-roma <[email protected]>
Co-authored-by: Ted Moore <[email protected]>
Co-authored-by: James Bradbury <[email protected]>

* Enhance/const correct(er) dataobjects (#115)

* Const correct arguments for data object messages; actually const object refs for RT usage

* MLP const update

* SharedClient const updates

* workflow: Disable parallel test runner and turn up verbosity

* remove std::cout access from segfaulting test (just in case)

* NoveltySlice: ensure frame offset is reset when win / hop changes

* correcting the long definition for novelty clients

* NoveltySegmentation: Correct order of arguments in constructor

* Assign2D: Make UNASSIGNED constexpr to solve strange linker error

* Assign2D: still needs out-of-class declaration for UNASSIGNED to link reliably

* corrected and augmented the credits/info of Data

* flucoma_corpus_files: typo in the file names

* Sound bank change (#135)

* removed redundant files and added constanzo

* new dataset to load in help files

* saved norm

* BufFlatten: Workaround PD-release builds problem with temporary buffer views

* add pca whitening (#98)

* add pca whitening

* actually add pca whitening

* PCA: add de-whitening to inverseTransformPoint

* PCAClient: update call to inverseTransformPoint

Co-authored-by: weefuzzy <[email protected]>

* Enhance/optional message args (#106)

* Add dependency for Sy Brand's `optional` backport

* include optional in MessageSet

add alias (in case we need to switch between `std::` and `tl::`)

* try out optional arg in `KDTreeClient::kNearest`

* compile-time enforce that optional args must follow mandatory ones

* stop tl:optional doing its tests

* PoC: Enhance/choices param (#108)

* Add ChoiceT parameter type

* Add `select` control to `BufStatsClient` to road test `ChoicesParam`

* Choices params: Don't use a set because it breaks ordering

* SpectralShape: Add select param

* add dataset version of inverse PCA (#125)

* add dataset version of inverse PCA

* PCA: Add whitening to batch inverse transform

* Enhance/max params (#132)

* CMake: Centralise C++ version and set to 17

* Introduce long param type with a user-defined maximum + 'primary' params
 – e.g. max coeffs for MFCC)
 - decoupling Max/PD arguments from 'fixed' params
–

* MFCC: Proof of concept for new way of expressing runtime max for certain params

* CMake: Missing C++ version adjustments

* CMake: Another rogue C++ version flag

* Try to get catch to build on OS 12 whilst targetting 10.8

* NMFClient: Add resynth mode to de-magic interface (#133)

Also allow resynth from fixed bases + activations

* All Scalers: Replace `invert` parameter with `inverseTransform` messages

* Stop being too clever in LongRuntimeMaxParam 

(thought I'd already done this...)

* Convert remaining `max<X>` parameters and `maxFFTsize` to new order of things

* SpectralShape: Ensure output channel count responds to select param

* MLPClassifier: Missing const in type alias

* MLP clients: change 'hidden' to 'hiddenlayers'. fixes #143

to work around name clash with special attribute in Max

* [Enhance] ChoicesParam for LoudnessClient and PitchClient (#141)

* update loudness client to have a ChoicesParam

* rename truepeak selection to peak

* replace mMaxOutPutSize with fixed value of 2

* Add / fix select for Loudness and Pitch clients

Harmonize SpectralShape code
Adjust FluidBufLoudness hack in NRT wrapper

* adds a patch to redo the included demo dataset (in pd)

* MaxParams: toughen up

* dealing with scaler range near 0 (#144)

* makes a function that compares the range to 10*lambda - in line with SciKit Learn

* aesthetic include order to be like the other 2 scalers

* NRTWrapper: Fix for multichannel behaviour with @select

* OnsetSliceClient: Reset frame offset when FFT params change, fixes #145

* CMake: Make version data globally available via properties

* CMake: add the big ol list of core clients plus support code

* Add new features to central CMake, plus small improvements and version bump

* CMake: Turn down the volume for FetchContent

* CMake: Get rid of old diagnostic messages

* CMake: quote module path

* CMake: Set module path correctly when there is parent project

* CMake: Debug module path logic

* CMake: Superstitous attempt to fix 403 errors when cloning eigen on CI

* zap typo Maxiumm

* fised typo Magnitdue

* MaxParam: correct initialization order

* RunningStats: change `size` to `history`

* CMake: We need to be able to declare IO properties of clients up front

* MLP* camel case hiddenLayers

* NMFCrossClient: Prevent buffer overrun crashes by ensuring polyphony <= rank

* Chroma: Fix Eigen variable aliasing causing UB

* NMFMorph: avoid crash

if OptimalTransport fails to segment spectrum

* CMake: Enable PIC to make Linux CI happier.

I hope

* BufNNDSVD -> BufNMFSeed (#173)

* change the client name - kept the algo name as it does what it says

* algo name confounded with client name in the code

* change parameter name in client to interpolation (#174)

* Feature/skmeans (#99)

* add pca whitening

* actually add pca whitening

* add spherical kmeans

* actually add spherical kmeans

* SKMeans fixes, change KMeans getDistances to transform

* adding RT query class

* <fit>transform<point> -> <fit>encode<point>

Co-authored-by: tremblap <[email protected]>

* ChoicesT: Correct for faulty use of `static`

fixes #175

* `(S)KMeansClient`: Track `numClusters` and clear if it changes before fitting

fixes #176

* KMeansClient: Work around over agressive optimisation

* bump flucoma version
jamesb93 pushed a commit that referenced this pull request Jun 24, 2022
* Add pointwise inversion to PCA

* batchsize was not capped down, leading to hilarious crashes (#63)

* updating credits with the new team

* Include SHAs for flucoma-core and current project in version string

* Conform version string with SHAs to semantic versioning spec

* add chroma feature to NoveltySlice

* Toggle BLAS settings for compiling on APPLE (#67)

* disable blas for compiling on macos

* remove line according to O's suggestion

* error in the client of (buf)noveltyslice since introducing chroma as feature

* Enhance/versioning (#75)

* Remove old header template

* Add in TU template and declaration header

* update CMake to new version scheme

* Get SHA from top level source folder

* ensure git is found

* fix issue #23 - zeroing the output vector in the mTracker loop (#82)

* fix issue #23 - zeroing the output vector in the mTracker loop

* now really corrected thanks to @weefuzzy

* Initial unit tests for `include/data` (#83)

* initial FluidTensor tests

* add assert death test to cmake

* more assert death

* fix compile tests

* Working assertion tests, it seems

* Add first FluidTensorView tests

* tidy up cmake a bit

* factor out EqualRange matcher to own header

* Add FluidTensorSupport tests

* rollback to Catch2 

for compatability with approvaltests.cpp

* add tests for FluidDataSet

bubba's first approval test ✨

* test print for bigger range as well

* tidy cmake

* make building tests optional

* remove spurious files from tracking

* add workflow for CI

* make workflow manually triggerable

* correct workflow file extention

* pleading and bargaining with github

* getting event name right

* FluidTensorSlice: fix terrible and aged typename mistake

* workflow: try and cache whole build folder

* wotkflow: unbreak yaml

* workflow: disable fail-fast

* Amend upper frequency limit of mel bands in NoveltySlice to 20kHz

* [Enhance] FluCoMa-wide DataSets as a resource (#88)

* treat wav files as binary

* move audio files to resources folder

* add datasets

* add pre-trained neural networks

* add flucoma corpus

* move datasets to data

* BufAudioTransport now has A-B based arguments

* fix mistakenly fixed type signature in FluidSink

* Tests for framing and overlap add bits

* remove build folder caching as a bad job 

(failing forever once cache goes bad)

* Test/sc ports/slicers (#91)

* Working port of SC NoveltySlice tests

* formatting and constifying

* use generated path for test signal loading

* update testsignals header and cmake

* Add TestOnsetSegmention, update TestNoveltySeg for new resource loading

* Add Onsets and update novelty in CMake

* Add EnvelopeSeg tests and some missing headers

* Add EnvelopeGate tests

* Add TransientSlice tests

* update location of audio files

* add missing function to signals.cpp.in

* Fix test signal for AmpSlice test

* try and speed up test run

* FluidSource test blackholed on MSVC

It doesn't like GENERATE_REF nested in GENERATE. Nosir.

* ignore all build folders for a quieter life

* bump Eigen version (#93)

* bump Eigen version

* note new Eigen version in readme

* add mammoth dataset

* OnsetSlice and NoveltySlice clients: fix block size dependency (#96)

Makes tracking of `frameOffset` stateful across calls to `process` so that odd hop sizes are handled correctly

* Use `operator<<=` for copy to / from FluidTensorView

* update all instances of FluidTensorView copying

* Signals.cpp.in fix lingering copy assignment

* Add conventional, shallow copy / move assignment to FluidTensorView

* `SliceIterator::end()` fix (#97)

* fix problem with 0-size slices and end() sentinels

* adds basic test for slice ietrator fix

* annotate datasets

* add mfcc for fluid_corpus

* update mfcc dataset

* bump version to beta5 (#101)

* Add pointwise inversion to PCA

* Enhance `ParameterSet` (#103)

* Meta: Add HO function to apply function only to select indicies of a tuple

* ParameterSet: Easier application of functions by type with lambdas + discovering the count of params by type

* BufStats: Weights should be an input buffer

* [Fix] Make error language more consistent (#118)

* replace incorrect use of label where identifier is intended

* dont shorten identifier to id

* rename DuplicateLabel to DuplicateIdentifier

* Enhance/slicer detection curves (#114)

* EnvelopeSegmentation: refactor into feature curve + detector

* NoveltySegementation: refactor into feature curve + detector

* OnsetSegmentation: refactor into feature curve + detector

* Add OnsetFeatureClient

* Add NoveltyFeatureClient

* Add AmpFeatureClient

* correct novelty and onset curves for nrt

* fix longstanding assumption in NRT wrapper that client latency == window size

* Update NoveltyFeatureClient to new analysisSettings method

* remove old FIXME comment

* fix cout call killing test on windows

* Missing update change to OnsetFeatureClient::analysisSettings()

* algorithms: NoveltyCurve -> NoveltyFeature

* Novelty: Update algorihtm class name, and change 'feature' param to algorithm

* Also update names in NovletySegmentation

* BufOnsetFeature correct output buffer name

* Novelty / OnsetFeature - cache descriptor values for when sigvs < hop

* more information on failing test thx

* Enhance/fewer warnings (#85)

* excess semicolons

* unused variables

* type narrowing / signed-unsigned

* integer conversions: new Eigen::Array alias for index rather than int

* json: stop embedding nlohmann library and instead fetch at configure time (#105)

* ParameterDescriptors: make more composable by adding insert function (#107)

* FluidJSON: Avoid some implicit conversion on import that could confuse compiler

* Deal with some warnings

* EnvelopeSegmentation: pass correct params to Envelope

* FluidTensorView deep copy gets distinct operator (#100)

* Add pointwise inversion to PCA

* Use `operator<<=` for copy to / from FluidTensorView

* update all instances of FluidTensorView copying

* Signals.cpp.in fix lingering copy assignment

* Add conventional, shallow copy / move assignment to FluidTensorView

* `SliceIterator::end()` fix (#97)

* fix problem with 0-size slices and end() sentinels

* adds basic test for slice ietrator fix

* annotate datasets

* add mfcc for fluid_corpus

* update mfcc dataset

* bump version to beta5 (#101)

* [Release] 1.0.0-beta5 (#102)

* batchsize was not capped down, leading to hilarious crashes (#63)

* updating credits with the new team

* Include SHAs for flucoma-core and current project in version string

* Conform version string with SHAs to semantic versioning spec

* add chroma feature to NoveltySlice

* Toggle BLAS settings for compiling on APPLE (#67)

* disable blas for compiling on macos

* remove line according to O's suggestion

* error in the client of (buf)noveltyslice since introducing chroma as feature

* Enhance/versioning (#75)

* Remove old header template

* Add in TU template and declaration header

* update CMake to new version scheme

* Get SHA from top level source folder

* ensure git is found

* fix issue #23 - zeroing the output vector in the mTracker loop (#82)

* fix issue #23 - zeroing the output vector in the mTracker loop

* now really corrected thanks to @weefuzzy

* Initial unit tests for `include/data` (#83)

* initial FluidTensor tests

* add assert death test to cmake

* more assert death

* fix compile tests

* Working assertion tests, it seems

* Add first FluidTensorView tests

* tidy up cmake a bit

* factor out EqualRange matcher to own header

* Add FluidTensorSupport tests

* rollback to Catch2 

for compatability with approvaltests.cpp

* add tests for FluidDataSet

bubba's first approval test ✨

* test print for bigger range as well

* tidy cmake

* make building tests optional

* remove spurious files from tracking

* add workflow for CI

* make workflow manually triggerable

* correct workflow file extention

* pleading and bargaining with github

* getting event name right

* FluidTensorSlice: fix terrible and aged typename mistake

* workflow: try and cache whole build folder

* wotkflow: unbreak yaml

* workflow: disable fail-fast

* Amend upper frequency limit of mel bands in NoveltySlice to 20kHz

* [Enhance] FluCoMa-wide DataSets as a resource (#88)

* treat wav files as binary

* move audio files to resources folder

* add datasets

* add pre-trained neural networks

* add flucoma corpus

* move datasets to data

* BufAudioTransport now has A-B based arguments

* fix mistakenly fixed type signature in FluidSink

* Tests for framing and overlap add bits

* remove build folder caching as a bad job 

(failing forever once cache goes bad)

* Test/sc ports/slicers (#91)

* Working port of SC NoveltySlice tests

* formatting and constifying

* use generated path for test signal loading

* update testsignals header and cmake

* Add TestOnsetSegmention, update TestNoveltySeg for new resource loading

* Add Onsets and update novelty in CMake

* Add EnvelopeSeg tests and some missing headers

* Add EnvelopeGate tests

* Add TransientSlice tests

* update location of audio files

* add missing function to signals.cpp.in

* Fix test signal for AmpSlice test

* try and speed up test run

* FluidSource test blackholed on MSVC

It doesn't like GENERATE_REF nested in GENERATE. Nosir.

* ignore all build folders for a quieter life

* bump Eigen version (#93)

* bump Eigen version

* note new Eigen version in readme

* add mammoth dataset

* OnsetSlice and NoveltySlice clients: fix block size dependency (#96)

Makes tracking of `frameOffset` stateful across calls to `process` so that odd hop sizes are handled correctly

* `SliceIterator::end()` fix (#97)

* fix problem with 0-size slices and end() sentinels

* adds basic test for slice ietrator fix

* annotate datasets

* add mfcc for fluid_corpus

* update mfcc dataset

* bump version to beta5 (#101)

Co-authored-by: tremblap <[email protected]>
Co-authored-by: weefuzzy <[email protected]>
Co-authored-by: g-roma <[email protected]>
Co-authored-by: Ted Moore <[email protected]>

* Add pointwise inversion to PCA

* Enhance `ParameterSet` (#103)

* Meta: Add HO function to apply function only to select indicies of a tuple

* ParameterSet: Easier application of functions by type with lambdas + discovering the count of params by type

* BufStats: Weights should be an input buffer

* [Fix] Make error language more consistent (#118)

* replace incorrect use of label where identifier is intended

* dont shorten identifier to id

* rename DuplicateLabel to DuplicateIdentifier

* Enhance/slicer detection curves (#114)

* EnvelopeSegmentation: refactor into feature curve + detector

* NoveltySegementation: refactor into feature curve + detector

* OnsetSegmentation: refactor into feature curve + detector

* Add OnsetFeatureClient

* Add NoveltyFeatureClient

* Add AmpFeatureClient

* correct novelty and onset curves for nrt

* fix longstanding assumption in NRT wrapper that client latency == window size

* Update NoveltyFeatureClient to new analysisSettings method

* remove old FIXME comment

* fix cout call killing test on windows

* Missing update change to OnsetFeatureClient::analysisSettings()

* algorithms: NoveltyCurve -> NoveltyFeature

* Novelty: Update algorihtm class name, and change 'feature' param to algorithm

* Also update names in NovletySegmentation

* BufOnsetFeature correct output buffer name

* Novelty / OnsetFeature - cache descriptor values for when sigvs < hop

* more information on failing test thx

* [Release] 1.0.0-beta6 (#126)

* Add pointwise inversion to PCA

* batchsize was not capped down, leading to hilarious crashes (#63)

* updating credits with the new team

* Include SHAs for flucoma-core and current project in version string

* Conform version string with SHAs to semantic versioning spec

* add chroma feature to NoveltySlice

* Toggle BLAS settings for compiling on APPLE (#67)

* disable blas for compiling on macos

* remove line according to O's suggestion

* error in the client of (buf)noveltyslice since introducing chroma as feature

* Enhance/versioning (#75)

* Remove old header template

* Add in TU template and declaration header

* update CMake to new version scheme

* Get SHA from top level source folder

* ensure git is found

* fix issue #23 - zeroing the output vector in the mTracker loop (#82)

* fix issue #23 - zeroing the output vector in the mTracker loop

* now really corrected thanks to @weefuzzy

* Initial unit tests for `include/data` (#83)

* initial FluidTensor tests

* add assert death test to cmake

* more assert death

* fix compile tests

* Working assertion tests, it seems

* Add first FluidTensorView tests

* tidy up cmake a bit

* factor out EqualRange matcher to own header

* Add FluidTensorSupport tests

* rollback to Catch2 

for compatability with approvaltests.cpp

* add tests for FluidDataSet

bubba's first approval test ✨

* test print for bigger range as well

* tidy cmake

* make building tests optional

* remove spurious files from tracking

* add workflow for CI

* make workflow manually triggerable

* correct workflow file extention

* pleading and bargaining with github

* getting event name right

* FluidTensorSlice: fix terrible and aged typename mistake

* workflow: try and cache whole build folder

* wotkflow: unbreak yaml

* workflow: disable fail-fast

* Amend upper frequency limit of mel bands in NoveltySlice to 20kHz

* [Enhance] FluCoMa-wide DataSets as a resource (#88)

* treat wav files as binary

* move audio files to resources folder

* add datasets

* add pre-trained neural networks

* add flucoma corpus

* move datasets to data

* BufAudioTransport now has A-B based arguments

* fix mistakenly fixed type signature in FluidSink

* Tests for framing and overlap add bits

* remove build folder caching as a bad job 

(failing forever once cache goes bad)

* Test/sc ports/slicers (#91)

* Working port of SC NoveltySlice tests

* formatting and constifying

* use generated path for test signal loading

* update testsignals header and cmake

* Add TestOnsetSegmention, update TestNoveltySeg for new resource loading

* Add Onsets and update novelty in CMake

* Add EnvelopeSeg tests and some missing headers

* Add EnvelopeGate tests

* Add TransientSlice tests

* update location of audio files

* add missing function to signals.cpp.in

* Fix test signal for AmpSlice test

* try and speed up test run

* FluidSource test blackholed on MSVC

It doesn't like GENERATE_REF nested in GENERATE. Nosir.

* ignore all build folders for a quieter life

* bump Eigen version (#93)

* bump Eigen version

* note new Eigen version in readme

* add mammoth dataset

* OnsetSlice and NoveltySlice clients: fix block size dependency (#96)

Makes tracking of `frameOffset` stateful across calls to `process` so that odd hop sizes are handled correctly

* `SliceIterator::end()` fix (#97)

* fix problem with 0-size slices and end() sentinels

* adds basic test for slice ietrator fix

* annotate datasets

* add mfcc for fluid_corpus

* update mfcc dataset

* bump version to beta5 (#101)

* Add pointwise inversion to PCA

* Enhance `ParameterSet` (#103)

* Meta: Add HO function to apply function only to select indicies of a tuple

* ParameterSet: Easier application of functions by type with lambdas + discovering the count of params by type

* BufStats: Weights should be an input buffer

* [Fix] Make error language more consistent (#118)

* replace incorrect use of label where identifier is intended

* dont shorten identifier to id

* rename DuplicateLabel to DuplicateIdentifier

* Enhance/slicer detection curves (#114)

* EnvelopeSegmentation: refactor into feature curve + detector

* NoveltySegementation: refactor into feature curve + detector

* OnsetSegmentation: refactor into feature curve + detector

* Add OnsetFeatureClient

* Add NoveltyFeatureClient

* Add AmpFeatureClient

* correct novelty and onset curves for nrt

* fix longstanding assumption in NRT wrapper that client latency == window size

* Update NoveltyFeatureClient to new analysisSettings method

* remove old FIXME comment

* fix cout call killing test on windows

* Missing update change to OnsetFeatureClient::analysisSettings()

* algorithms: NoveltyCurve -> NoveltyFeature

* Novelty: Update algorihtm class name, and change 'feature' param to algorithm

* Also update names in NovletySegmentation

* BufOnsetFeature correct output buffer name

* Novelty / OnsetFeature - cache descriptor values for when sigvs < hop

* more information on failing test thx

Co-authored-by: Owen Green <[email protected]>
Co-authored-by: tremblap <[email protected]>
Co-authored-by: g-roma <[email protected]>
Co-authored-by: James Bradbury <[email protected]>
Co-authored-by: Ted Moore <[email protected]>

* Update FlucomaVersion.cmake

* Enhance/fewer warnings (#85)

* excess semicolons

* unused variables

* type narrowing / signed-unsigned

* integer conversions: new Eigen::Array alias for index rather than int

* json: stop embedding nlohmann library and instead fetch at configure time (#105)

* ParameterDescriptors: make more composable by adding insert function (#107)

* FluidJSON: Avoid some implicit conversion on import that could confuse compiler

* Deal with some warnings

* EnvelopeSegmentation: pass correct params to Envelope

* update with new FluidTensorView copying ops

* Use Windows 2019 in CI

* Parallel tests seem unreliable on windows

Co-authored-by: James Bradbury <[email protected]>
Co-authored-by: tremblap <[email protected]>
Co-authored-by: g-roma <[email protected]>
Co-authored-by: Ted Moore <[email protected]>
Co-authored-by: James Bradbury <[email protected]>

* Enhance/const correct(er) dataobjects (#115)

* Const correct arguments for data object messages; actually const object refs for RT usage

* MLP const update

* SharedClient const updates

* workflow: Disable parallel test runner and turn up verbosity

* remove std::cout access from segfaulting test (just in case)

* NoveltySlice: ensure frame offset is reset when win / hop changes

* correcting the long definition for novelty clients

* NoveltySegmentation: Correct order of arguments in constructor

* Assign2D: Make UNASSIGNED constexpr to solve strange linker error

* Assign2D: still needs out-of-class declaration for UNASSIGNED to link reliably

* corrected and augmented the credits/info of Data

* flucoma_corpus_files: typo in the file names

* Sound bank change (#135)

* removed redundant files and added constanzo

* new dataset to load in help files

* saved norm

* BufFlatten: Workaround PD-release builds problem with temporary buffer views

* add pca whitening (#98)

* add pca whitening

* actually add pca whitening

* PCA: add de-whitening to inverseTransformPoint

* PCAClient: update call to inverseTransformPoint

Co-authored-by: weefuzzy <[email protected]>

* Enhance/optional message args (#106)

* Add dependency for Sy Brand's `optional` backport

* include optional in MessageSet

add alias (in case we need to switch between `std::` and `tl::`)

* try out optional arg in `KDTreeClient::kNearest`

* compile-time enforce that optional args must follow mandatory ones

* stop tl:optional doing its tests

* PoC: Enhance/choices param (#108)

* Add ChoiceT parameter type

* Add `select` control to `BufStatsClient` to road test `ChoicesParam`

* Choices params: Don't use a set because it breaks ordering

* SpectralShape: Add select param

* add dataset version of inverse PCA (#125)

* add dataset version of inverse PCA

* PCA: Add whitening to batch inverse transform

* Enhance/max params (#132)

* CMake: Centralise C++ version and set to 17

* Introduce long param type with a user-defined maximum + 'primary' params
 – e.g. max coeffs for MFCC)
 - decoupling Max/PD arguments from 'fixed' params
–

* MFCC: Proof of concept for new way of expressing runtime max for certain params

* CMake: Missing C++ version adjustments

* CMake: Another rogue C++ version flag

* Try to get catch to build on OS 12 whilst targetting 10.8

* NMFClient: Add resynth mode to de-magic interface (#133)

Also allow resynth from fixed bases + activations

* All Scalers: Replace `invert` parameter with `inverseTransform` messages

* Stop being too clever in LongRuntimeMaxParam 

(thought I'd already done this...)

* Convert remaining `max<X>` parameters and `maxFFTsize` to new order of things

* SpectralShape: Ensure output channel count responds to select param

* MLPClassifier: Missing const in type alias

* MLP clients: change 'hidden' to 'hiddenlayers'. fixes #143

to work around name clash with special attribute in Max

* [Enhance] ChoicesParam for LoudnessClient and PitchClient (#141)

* update loudness client to have a ChoicesParam

* rename truepeak selection to peak

* replace mMaxOutPutSize with fixed value of 2

* Add / fix select for Loudness and Pitch clients

Harmonize SpectralShape code
Adjust FluidBufLoudness hack in NRT wrapper

* adds a patch to redo the included demo dataset (in pd)

* MaxParams: toughen up

* dealing with scaler range near 0 (#144)

* makes a function that compares the range to 10*lambda - in line with SciKit Learn

* aesthetic include order to be like the other 2 scalers

* NRTWrapper: Fix for multichannel behaviour with @select

* OnsetSliceClient: Reset frame offset when FFT params change, fixes #145

* CMake: Make version data globally available via properties

* CMake: add the big ol list of core clients plus support code

* Add new features to central CMake, plus small improvements and version bump

* CMake: Turn down the volume for FetchContent

* CMake: Get rid of old diagnostic messages

* CMake: quote module path

* CMake: Set module path correctly when there is parent project

* CMake: Debug module path logic

* CMake: Superstitous attempt to fix 403 errors when cloning eigen on CI

* zap typo Maxiumm

* fised typo Magnitdue

* MaxParam: correct initialization order

* RunningStats: change `size` to `history`

* CMake: We need to be able to declare IO properties of clients up front

* MLP* camel case hiddenLayers

* NMFCrossClient: Prevent buffer overrun crashes by ensuring polyphony <= rank

* Chroma: Fix Eigen variable aliasing causing UB

* NMFMorph: avoid crash

if OptimalTransport fails to segment spectrum

* CMake: Enable PIC to make Linux CI happier.

I hope

* BufNNDSVD -> BufNMFSeed (#173)

* change the client name - kept the algo name as it does what it says

* algo name confounded with client name in the code

* change parameter name in client to interpolation (#174)

* Feature/skmeans (#99)

* add pca whitening

* actually add pca whitening

* add spherical kmeans

* actually add spherical kmeans

* SKMeans fixes, change KMeans getDistances to transform

* adding RT query class

* <fit>transform<point> -> <fit>encode<point>

Co-authored-by: tremblap <[email protected]>

* ChoicesT: Correct for faulty use of `static`

fixes #175

* `(S)KMeansClient`: Track `numClusters` and clear if it changes before fitting

fixes #176

* KMeansClient: Work around over agressive optimisation

* bump flucoma version

* make capitalisation consistent

* SKMeans: Apply same fix as 1e668d5

* update version to 1.0.0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants