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
+
+