Skip to content

Conversation

@elgiano
Copy link
Contributor

@elgiano elgiano commented Sep 5, 2022

to remove duplicate code scattered over many classes, prProcessSelect becomes FluidProcessSelect, and buffer validation for BufProcessors is now a method inherited from FluidBufProcessor.

FluidProcessSelect usage:

// FluidSpectralShape
const <features=#[\centroid,\spread,\skewness,\kurtosis,\rolloff,\flatness,\crest];
classvar <featuresLookup;
*initClass {
	featuresLookup = FluidProcessSelect(this, this.features);
}
*kr { 
   [...]
   var selectbits = this.featuresLookup.encode(select);
   [...]
}

validateBuffer: converts with .asUGenInput, checks for nil, and throws on error

// e.g FluidBufPitch
*kr {
    [...]
    source = this.validateBuffer(source, "source");
    [...]
}
// example error: the class name and the second argument are used in the error message
// FluidBufPitch:  Invalid source buffer

Let me know if you like it :)

to remove duplicate code, processSelect becomes FluidProcessSelect,
and buffer validation for BufProcessors is now a method inherited from
FluidBufProcessor
@weefuzzy
Copy link
Member

This looks grand. I'll give it an experimental merge and test when I can.

A general sclang question: is there any naming convention for denoting classes as being for internal use, in the absence of namespaces or such like? We've got quite a few little helpers like this that aren't part of the user interface, and I guess it would be useful noise reduction if we could mark them clearly.

@tremblap
Copy link
Member

I just read in the "Writing Classes" tutorial that there is a prefix 'pr' for private methods... but that is a good question, maybe for the sc forum if @elgiano doesn't have the answer - which I doubt :)

@elgiano
Copy link
Contributor Author

elgiano commented Sep 29, 2022 via email

@tremblap tremblap requested a review from weefuzzy December 6, 2022 13:46
@weefuzzy weefuzzy changed the base branch from dev to main February 21, 2023 09:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants