Mercurial > hg > pub > prymula > com
diff CloneChannel/plugins/common/gen_dsp/genlib_common.h @ 12:24d60bdea349
ClonneChannel
author | prymula <prymula76@outlook.com> |
---|---|
date | Thu, 08 Feb 2024 20:24:27 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CloneChannel/plugins/common/gen_dsp/genlib_common.h Thu Feb 08 20:24:27 2024 +0100 @@ -0,0 +1,106 @@ +/******************************************************************************************************************* +Copyright (c) 2012 Cycling '74 + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies +or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*******************************************************************************************************************/ + + +#ifndef GENLIB_COMMON_H +#define GENLIB_COMMON_H 1 + +//////////// genlib_common.h //////////// +// common data structure header file -- this is the stuff required by the +// common code and accessed by the export and max code + +#define DSP_GEN_MAX_SIGNALS 16 + +typedef float t_sample; +typedef float t_param; +typedef char *t_ptr; + +typedef long t_genlib_err; +typedef enum { + GENLIB_ERR_NONE = 0, ///< No error + GENLIB_ERR_GENERIC = -1, ///< Generic error + GENLIB_ERR_INVALID_PTR = -2, ///< Invalid Pointer + GENLIB_ERR_DUPLICATE = -3, ///< Duplicate + GENLIB_ERR_OUT_OF_MEM = -4, ///< Out of memory + + GENLIB_ERR_LOOP_OVERFLOW = 100, // too many iterations of loops in perform() + GENLIB_ERR_NULL_BUFFER = 101 // missing signal data in perform() + +} e_genlib_errorcodes; + +typedef enum { + GENLIB_PARAMTYPE_FLOAT = 0, + GENLIB_PARAMTYPE_SYM = 1 +} e_genlib_paramtypes; + +struct ParamInfo +{ + t_param defaultvalue; + void * defaultref; + char hasinputminmax; + char hasminmax; + t_param inputmin, inputmax; + t_param outputmin, outputmax; + const char *name; + const char *units; + int paramtype; // 0 -> float64, 1 -> symbol (table name) + t_param exp; // future, for scaling +}; + +struct CommonState +{ + t_sample sr; + int vs; + int numins; + int numouts; + const char **inputnames; + const char **outputnames; + int numparams; + ParamInfo *params; + + void * parammap; // implementation-dependent + void * api; // implementation-dependent +}; + +// opaque interface to float32 buffer: +typedef struct _genlib_buffer t_genlib_buffer; +typedef struct { + char b_name[256]; ///< name of the buffer + float *b_samples; ///< stored with interleaved channels if multi-channel + long b_frames; ///< number of sample frames (each one is sizeof(float) * b_nchans bytes) + long b_nchans; ///< number of channels + long b_size; ///< size of buffer in floats + float b_sr; ///< sampling rate of the buffer + long b_modtime; ///< last modified time ("dirty" method) + long b_rfu[57]; ///< reserved for future use +} t_genlib_buffer_info; + +// opaque interface to float64 buffer: +typedef struct _genlib_data t_genlib_data; +typedef struct { + int dim, channels; + t_sample * data; +} t_genlib_data_info; + +typedef void (*setparameter_method) (CommonState *, long, t_param, void *); +typedef void (*getparameter_method) (CommonState *, long, t_param *); + +#endif // GENLIB_COMMON_H + +