Skip to content

Commit 322c445

Browse files
author
James Bradbury
authored
[Release] 1.0.1 (#125)
* ignore more varieties of build folder * deal with some warnings * FluidWaveform 'lineWidth' argument now also affects feature lines * add back the nmf-jit-classifier example * novelty interface change in example * resizable and layoutable guis (#83) * resizable and layoutable guis * FluidWaveform: rename 'win' to 'parent' * FluidWaveform/FluidPlotter: update help * FluidWaveform/Plotter: make views before forking This way views are immediately available upon creation, for example to be added to layouts. Views are still correctly updated with data from within the fork, whenever they are ready. * Thanks @elgiano! + a few small edits Co-authored-by: Ted Moore <[email protected]> * slicers: add enums for algorithms (#86) * typo * FluidBufNMF class: add resynthMode argument * add PCA whitening parameter (#65) * add PCA whitening parameter * FluidPCA: Ensure whiten parameter is sent to kr query UGen Co-authored-by: Gerard <[email protected]> Co-authored-by: weefuzzy <[email protected]> * Enhance/optional message args (#77) * optional args: sc wrapper updates * optional args: KDTree try out * Enhance/choices param (#78) * NRTWrapper: Add choices param (long <-> bitset) * Update `FluidBufStats` with `select` control * BufStats class: Fix bitfield for `select` and warn on duplicate items * Update SpectralShape classes for new param * `PCA.sc`: add batch `inverseTranform` method * Wrapper: integer sign warnings * Enhance/max params (#93) * CMake: Centralise C++ version and set to 17 * Wrapper: handle new LongRuntimeMax param type * POC for new LongRuntimeMax param with MFCC numCoeffs * Wrapper: Make MSVC happy about constexpr lambda capture * All scalers: replace 'invert' parameter with `inverseTransform` messages * Wrapper: Work around 32 char limit for plugin commands If too long, remove vowels. Sorry. Better ideas welcome * fix #96 * typo * Update SC classes for new style `max<X>` parameters * SpectralShape SC class: maxFFT * RealTime wrapper: play it safer with output channel count This really relies on the SC class being correct, but then everything ultimately does... * RT FFT Object SC Classes: Provide maxFFTSize default * BufSTFT SC class: Add maxFFT (now needed due to core type change) * Add select param to Loudness and Pitch SC clases (#101) * Wrapper: workaround scsynth 32 char cmd length limit with extra dispatch layer also avoids need for formerly truncated plugin names in some cases * removed invert from scalers class definitions (#102) * Enhance/generate stubs (#104) * CMake: generate .cpp stubs * Remove old cpp stubs * Ensure correct MSVC runtime by default * CMake: invoke docs properly * CMake: Tidy up * CMake: Tidy up * CMake: typo * CI: Update nightly * CI: remove lingering references to docs job * CMake: belatedly add branch selection for flucoma deps upon which CI relies * CMake: Actually commit important code for best collaborative results * CMake: This file is now redundant, in fact * cmake: missing slash in install * bufnmf: added the maxFFTsize parameter in the server call * FluidStats: Change where output Array reshape happens to keep SynthDescLib happy * FluidBufNNDSVD: maxfftsize now needed in server call, or booooom fixes #161 * BufNMFCross: Needs MaxFFTSize * BufNNDSVD: Ensure activations buffer is queried at finish * FluidBufToKr ensure that numFrames is an int (not a float) * Added *(Buf)Feature objects to guide (and deleted old guide) NNDSVD --> NMFSeed in Guide fixed bad links in Guide * change interface and file name (#113) * hidden --> hiddenLayers in class definition (#114) * reordered some max<X> arguments * change interp to interpolation in nmfmorph class (#115) * Feature/skmeans (#66) * add PCA whitening parameter * add FluidSKMeans * SKMeans correction * added RT query * <fit>transform<point> -> <fit>encode<point> * added to overview Co-authored-by: Gerard <[email protected]> Co-authored-by: tremblap <[email protected]> * [CI] Update Release Workflow (#118) * cleanup nightly.yaml * use new release style * refactor release * remove workflow dispatch variables * interface changes in 8c * knearest interface change in 10a * waveform help nmf interface change * capitalise beatRemember * two more changes of interface * typo * sign binaries * add -nightly affix * sign releases too * enforce concurrency of jobs * UMAP kr method should not allow user to pass numDimensions * slicers: change algo/metric select to symbols (#103) * slicers: change algo/metric selection to symbols * slicers: algo/metric accept UGen * FluidDataSetWr example code (#124)
1 parent 3fd541f commit 322c445

22 files changed

+263
-156
lines changed

.github/workflows/nightly.yaml

Lines changed: 34 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,48 @@
1-
name: Nightly Releases
1+
name: nightly
22

33
on:
4-
54
workflow_dispatch:
65
push:
76
branches: [ dev, ci/** ]
87

8+
concurrency:
9+
group: environment-${{ github.ref }}
10+
cancel-in-progress: true
11+
912
jobs:
1013
macbuild:
11-
runs-on: macos-11
14+
runs-on: macos-latest
1215
steps:
13-
- uses: actions/checkout@v2
14-
- uses: flucoma/actions/env@v5
15-
- uses: flucoma/actions/sc@v5
16+
- uses: actions/checkout@v3
17+
- uses: flucoma/actions/env@main
18+
- uses: flucoma/actions/sc@main
1619
with:
1720
branch: origin/dev
1821

19-
- name: compress archive
20-
run: zip -r FluCoMa-SC-Mac-nightly.zip FluidCorpusManipulation
21-
working-directory: install
22-
23-
- uses: actions/upload-artifact@v2
22+
- name: sign binaries
23+
uses: flucoma/actions/distribution@main
2424
with:
25-
name: macbuild
26-
path: install/FluCoMa-SC-Mac-nightly.zip
25+
glob: '-e scx'
26+
package: 'install'
27+
output_type: 'dmg'
28+
output: FluCoMa-SC-Mac-nightly
29+
cert: ${{ secrets.CERT }}
30+
certpwd: ${{ secrets.CERTPWD }}
31+
teamid: ${{ secrets.WWDRTEAMID }}
32+
apppwd: ${{ secrets.APPSTORECONNECTPWD }}
33+
appusr: ${{ secrets.APPSTORECONNECTUSERNAME }}
2734

35+
- uses: actions/upload-artifact@v3
36+
with:
37+
name: macbuild
38+
path: install/FluCoMa-SC-Mac-nightly.dmg
2839

2940
winbuild:
3041
runs-on: windows-latest
3142
steps:
32-
- uses: actions/checkout@v2
33-
- uses: flucoma/actions/env@v5
34-
- uses: flucoma/actions/sc@v5
43+
- uses: actions/checkout@v3
44+
- uses: flucoma/actions/env@main
45+
- uses: flucoma/actions/sc@main
3546
with:
3647
branch: origin/dev
3748

@@ -42,25 +53,25 @@ jobs:
4253
run: 7z a FluCoMa-SC-Windows-nightly.zip FluidCorpusManipulation
4354
working-directory: install
4455

45-
- uses: actions/upload-artifact@v2
56+
- uses: actions/upload-artifact@v3
4657
with:
4758
name: winbuild
4859
path: install/FluCoMa-SC-Windows-nightly.zip
4960

5061

5162
linuxbuild:
52-
runs-on: ubuntu-18.04
63+
runs-on: ubuntu-latest
5364
steps:
54-
- uses: actions/checkout@v2
55-
- uses: flucoma/actions/env@v5
56-
- uses: flucoma/actions/sc@v5
65+
- uses: actions/checkout@v3
66+
- uses: flucoma/actions/env@main
67+
- uses: flucoma/actions/sc@main
5768
with:
5869
branch: origin/dev
5970

6071
- name: compress archive
6172
run: tar -zcvf FluCoMa-SC-Linux-nightly.tar.gz FluidCorpusManipulation
6273
working-directory: install
63-
- uses: actions/upload-artifact@v2
74+
- uses: actions/upload-artifact@v3
6475
with:
6576
name: linuxbuild
6677
path: install/FluCoMa-SC-Linux-nightly.tar.gz
@@ -94,7 +105,7 @@ jobs:
94105
with:
95106
name: FluCoMa SuperCollider Nightly Release
96107
body: "This is a nightly build of the FluCoMa SuperCollider package. As such, be warned there may be bugs or other unexpected behaviour. The build hash is ${{ github.sha }}"
97-
files: FluCoMa-SC-*
108+
files: FluCoMa*
98109
prerelease: true
99110
tag_name: nightly
100111
draft: false

.github/workflows/release.yml

Lines changed: 28 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,42 @@
1-
name: Release
1+
name: release
22

33
on:
44
workflow_dispatch:
55

66
jobs:
77
macbuild:
8-
runs-on: macos-11
8+
runs-on: macos-latest
99
steps:
10-
- uses: actions/checkout@v2
11-
- uses: flucoma/actions/env@v5
12-
- uses: flucoma/actions/sc@v5
10+
- uses: actions/checkout@v3
11+
- uses: flucoma/actions/env@main
12+
- uses: flucoma/actions/sc@main
1313
with:
1414
branch: origin/main
1515

16-
- name: compress archive
17-
run: zip -r FluCoMa-SC-Mac.zip FluidCorpusManipulation
18-
working-directory: install
16+
- name: sign binaries
17+
uses: flucoma/actions/distribution@main
18+
with:
19+
glob: '-e scx'
20+
package: 'install'
21+
output_type: 'dmg'
22+
output: FluCoMa-SC-Mac
23+
cert: ${{ secrets.CERT }}
24+
certpwd: ${{ secrets.CERTPWD }}
25+
teamid: ${{ secrets.WWDRTEAMID }}
26+
apppwd: ${{ secrets.APPSTORECONNECTPWD }}
27+
appusr: ${{ secrets.APPSTORECONNECTUSERNAME }}
1928

20-
- uses: actions/upload-artifact@v2
29+
- uses: actions/upload-artifact@v3
2130
with:
2231
name: macbuild
23-
path: install/FluCoMa-SC-Mac.zip
32+
path: install/FluCoMa-SC-Mac.dmg
2433

2534
winbuild:
2635
runs-on: windows-latest
2736
steps:
28-
- uses: actions/checkout@v2
29-
- uses: flucoma/actions/env@v5
30-
- uses: flucoma/actions/sc@v5
37+
- uses: actions/checkout@v3
38+
- uses: flucoma/actions/env@main
39+
- uses: flucoma/actions/sc@main
3140
with:
3241
branch: origin/main
3342

@@ -38,27 +47,27 @@ jobs:
3847
run: 7z a FluCoMa-SC-Windows.zip FluidCorpusManipulation
3948
working-directory: install
4049

41-
- uses: actions/upload-artifact@v2
50+
- uses: actions/upload-artifact@v3
4251
with:
4352
name: winbuild
4453
path: install/FluCoMa-SC-Windows.zip
4554

4655
linuxbuild:
47-
runs-on: ubuntu-18.04
56+
runs-on: ubuntu-latest
4857
outputs:
4958
version: ${{ steps.get-version.outputs.version }}
5059
steps:
51-
- uses: actions/checkout@v2
52-
- uses: flucoma/actions/env@v5
53-
- uses: flucoma/actions/sc@v5
60+
- uses: actions/checkout@v3
61+
- uses: flucoma/actions/env@main
62+
- uses: flucoma/actions/sc@main
5463
with:
5564
branch: origin/main
5665

5766
- name: compress archive
5867
run: tar -zcvf FluCoMa-SC-Linux.tar.gz FluidCorpusManipulation
5968
working-directory: install
6069

61-
- uses: actions/upload-artifact@v2
70+
- uses: actions/upload-artifact@v3
6271
with:
6372
name: linuxbuild
6473
path: install/FluCoMa-SC-Linux.tar.gz

release-packaging/Classes/FluidBufNoveltyFeature.sc

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ FluidBufNoveltyFeature : FluidBufProcessor {
66

77
source = source.asUGenInput;
88
features = features.asUGenInput;
9+
algorithm = FluidNoveltySlice.prSelectAlgorithm(algorithm) ?? {
10+
("FluidBufNoveltySlice: % is not a recognised algorithm")
11+
.format(algorithm).throw;
12+
};
913

1014
source.isNil.if {"FluidBufNoveltyFeature: Invalid source buffer".throw};
1115
features.isNil.if {"FluidBufNoveltyFeature: Invalid features buffer".throw};
@@ -20,6 +24,11 @@ FluidBufNoveltyFeature : FluidBufProcessor {
2024

2125
source = source.asUGenInput;
2226
features = features.asUGenInput;
27+
algorithm = FluidNoveltySlice.prSelectAlgorithm(algorithm);
28+
if (algorithm.isNil or: algorithm.isUGen) {
29+
("FluidBufNoveltySlice: % is not a recognised algorithm")
30+
.format(algorithm).throw;
31+
};
2332

2433
source.isNil.if {"FluidBufNoveltyFeature: Invalid source buffer".throw};
2534
features.isNil.if {"FluidBufNoveltyFeature: Invalid features buffer".throw};
@@ -40,6 +49,11 @@ FluidBufNoveltyFeature : FluidBufProcessor {
4049

4150
source.isNil.if {"FluidBufNoveltyFeature: Invalid source buffer".throw};
4251
features.isNil.if {"FluidBufNoveltyFeature: Invalid features buffer".throw};
52+
algorithm = FluidNoveltySlice.prSelectAlgorithm(algorithm);
53+
if (algorithm.isNil or: algorithm.isUGen) {
54+
("FluidBufNoveltySlice: % is not a recognised algorithm")
55+
.format(algorithm).throw;
56+
};
4357

4458
^this.new(
4559
server, nil, [features]

release-packaging/Classes/FluidBufNoveltySlice.sc

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
FluidBufNoveltySlice : FluidBufProcessor {
22

3-
*kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, algorithm = 0, kernelSize = 3, threshold = 0.5, filterSize = 1, minSliceLength = 2, windowSize = 1024, hopSize = -1, fftSize = -1, trig = 1 , blocking = 0|
3+
*kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, algorithm = 0, kernelSize = 3, threshold = 0.5, filterSize = 1, minSliceLength = 2, windowSize = 1024, hopSize = -1, fftSize = -1, trig = 1 , blocking = 0|
44

55
var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize};
66

77
source = source.asUGenInput;
88
indices = indices.asUGenInput;
9+
algorithm = FluidNoveltySlice.prSelectAlgorithm(algorithm) ?? {
10+
("FluidBufNoveltySlice: % is not a recognised algorithm")
11+
.format(algorithm).throw;
12+
};
913

1014
source.isNil.if {"FluidBufNoveltySlice: Invalid source buffer".throw};
1115
indices.isNil.if {"FluidBufNoveltySlice: Invalid features buffer".throw};
@@ -15,15 +19,20 @@ FluidBufNoveltySlice : FluidBufProcessor {
1519
}
1620

1721
*process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, algorithm= 0, kernelSize = 3, threshold = 0.5, filterSize = 1, minSliceLength = 2, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone = true, action |
18-
22+
1923
var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize};
2024

2125
source = source.asUGenInput;
2226
indices = indices.asUGenInput;
27+
algorithm = FluidNoveltySlice.prSelectAlgorithm(algorithm);
28+
if (algorithm.isNil or: algorithm.isUGen) {
29+
("FluidBufNoveltySlice: % is not a recognised algorithm")
30+
.format(algorithm).throw;
31+
};
2332

2433
source.isNil.if {"FluidBufNoveltySlice: Invalid source buffer".throw};
2534
indices.isNil.if {"FluidBufNoveltySlice: Invalid features buffer".throw};
26-
35+
2736
^this.new(
2837
server, nil, [indices]
2938
).processList(
@@ -32,15 +41,20 @@ FluidBufNoveltySlice : FluidBufProcessor {
3241
}
3342

3443
*processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, algorithm= 0, kernelSize = 3, threshold = 0.5, filterSize = 1, minSliceLength = 2, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone = true, action |
35-
44+
3645
var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize};
3746

3847
source = source.asUGenInput;
3948
indices = indices.asUGenInput;
49+
algorithm = FluidNoveltySlice.prSelectAlgorithm(algorithm);
50+
if (algorithm.isNil or: algorithm.isUGen) {
51+
("FluidBufNoveltySlice: % is not a recognised algorithm")
52+
.format(algorithm).throw;
53+
};
4054

4155
source.isNil.if {"FluidBufNoveltySlice: Invalid source buffer".throw};
4256
indices.isNil.if {"FluidBufNoveltySlice: Invalid features buffer".throw};
43-
57+
4458
^this.new(
4559
server, nil, [indices]
4660
).processList(

release-packaging/Classes/FluidBufOnsetFeature.sc

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ FluidBufOnsetFeature : FluidBufProcessor {
55

66
source = source.asUGenInput;
77
features = features.asUGenInput;
8+
metric = FluidOnsetSlice.prSelectMetric(metric) ?? {
9+
("FluidBufOnsetSlice: % is not a recognised metric")
10+
.format(metric).throw;
11+
};
812

913
source.isNil.if {"FluidBufOnsetFeature: Invalid source buffer".throw};
1014
features.isNil.if {"FluidBufOnsetFeature: Invalid features buffer".throw};
@@ -18,6 +22,11 @@ FluidBufOnsetFeature : FluidBufProcessor {
1822

1923
source = source.asUGenInput;
2024
features = features.asUGenInput;
25+
metric = FluidOnsetSlice.prSelectMetric(metric);
26+
if (metric.isNil or: metric.isUGen) {
27+
("FluidBufOnsetSlice: % is not a recognised metric")
28+
.format(metric).throw;
29+
};
2130

2231
source.isNil.if {"FluidBufOnsetFeature: Invalid source buffer".throw};
2332
features.isNil.if {"FluidBufOnsetFeature: Invalid features buffer".throw};
@@ -35,6 +44,11 @@ FluidBufOnsetFeature : FluidBufProcessor {
3544

3645
source = source.asUGenInput;
3746
features = features.asUGenInput;
47+
metric = FluidOnsetSlice.prSelectMetric(metric);
48+
if (metric.isNil or: metric.isUGen) {
49+
("FluidBufOnsetSlice: % is not a recognised metric")
50+
.format(metric).throw;
51+
};
3852

3953
source.isNil.if {"FluidBufOnsetFeature: Invalid source buffer".throw};
4054
features.isNil.if {"FluidBufOnsetFeature: Invalid features buffer".throw};

release-packaging/Classes/FluidBufOnsetSlice.sc

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,37 @@
11
FluidBufOnsetSlice : FluidBufProcessor {
2-
*kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, metric = 0, threshold = 0.5, minSliceLength = 2, filterSize = 5, frameDelta = 0, windowSize = 1024, hopSize = -1, fftSize = -1, trig = 1, blocking = 0|
3-
2+
3+
*kr { |source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, metric = 0, threshold = 0.5, minSliceLength = 2, filterSize = 5, frameDelta = 0, windowSize = 1024, hopSize = -1, fftSize = -1, trig = 1, blocking = 0|
4+
45
var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize};
56

67
source = source.asUGenInput;
78
indices = indices.asUGenInput;
9+
metric = FluidOnsetSlice.prSelectMetric(metric) ?? {
10+
("FluidBufOnsetSlice: % is not a recognised metric")
11+
.format(metric).throw;
12+
};
813

914
source.isNil.if {"FluidBufOnsetSlice: Invalid source buffer".throw};
1015
indices.isNil.if {"FluidBufOnsetSlice: Invalid features buffer".throw};
11-
16+
1217
^FluidProxyUgen.kr(\FluidBufOnsetSliceTrigger, -1, source, startFrame, numFrames, startChan, numChans, indices, metric, threshold, minSliceLength, filterSize, frameDelta, windowSize, hopSize, fftSize, maxFFTSize, trig, blocking);
1318
}
1419

1520
*process { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, metric = 0, threshold = 0.5, minSliceLength = 2, filterSize = 5, frameDelta = 0, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone = true, action|
16-
21+
1722
var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize};
1823

1924
source = source.asUGenInput;
2025
indices = indices.asUGenInput;
26+
metric = FluidOnsetSlice.prSelectMetric(metric);
27+
if (metric.isNil or: metric.isUGen) {
28+
("FluidBufOnsetSlice: % is not a recognised metric")
29+
.format(metric).throw;
30+
};
2131

2232
source.isNil.if {"FluidBufOnsetSlice: Invalid source buffer".throw};
2333
indices.isNil.if {"FluidBufOnsetSlice: Invalid features buffer".throw};
24-
34+
2535
^this.new(
2636
server, nil, [indices]
2737
).processList(
@@ -30,15 +40,20 @@ FluidBufOnsetSlice : FluidBufProcessor {
3040
}
3141

3242
*processBlocking { |server, source, startFrame = 0, numFrames = -1, startChan = 0, numChans = -1, indices, metric = 0, threshold = 0.5, minSliceLength = 2, filterSize = 5, frameDelta = 0, windowSize = 1024, hopSize = -1, fftSize = -1, freeWhenDone = true, action|
33-
43+
3444
var maxFFTSize = if (fftSize == -1) {windowSize.nextPowerOfTwo} {fftSize};
3545

3646
source = source.asUGenInput;
3747
indices = indices.asUGenInput;
48+
metric = FluidOnsetSlice.prSelectMetric(metric);
49+
if (metric.isNil or: metric.isUGen) {
50+
("FluidBufOnsetSlice: % is not a recognised metric")
51+
.format(metric).throw;
52+
};
3853

3954
source.isNil.if {"FluidBufOnsetSlice: Invalid source buffer".throw};
4055
indices.isNil.if {"FluidBufOnsetSlice: Invalid features buffer".throw};
41-
56+
4257
^this.new(
4358
server, nil, [indices]
4459
).processList(

0 commit comments

Comments
 (0)