/usr/include/flext/fldsp.h is in pd-flext-dev 0.6.0+git20161101.1.01318a94-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 | /*
flext - C++ layer for Max and Pure Data externals
Copyright (c) 2001-2015 Thomas Grill (gr@grrrr.org)
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "license.txt," in this distribution.
*/
/*! \file fldsp.h
\brief Declares the flext dsp class
*/
#ifndef __FLDSP_H
#define __FLDSP_H
// include the header file declaring the base classes
#include "flext.h"
#include "flpushns.h"
// === flext_dsp ==================================================
FLEXT_TEMPLATE class FLEXT_SHARE FLEXT_CLASSDEF(flext_dsp);
typedef FLEXT_SHARE FLEXT_TEMPINST(FLEXT_CLASSDEF(flext_dsp)) flext_dsp;
/*! \brief Flext dsp enabled base object
*/
FLEXT_TEMPLATE
class FLEXT_SHARE FLEXT_CLASSDEF(flext_dsp):
public flext_base
{
FLEXT_HEADER_S(FLEXT_CLASSDEF(flext_dsp),flext_base,Setup)
friend class FLEXT_SHARE FLEXT_TEMPINST(FLEXT_CLASSDEF(flext_base));
public:
/*! \defgroup FLEXT_DSP Flext dsp class
@{
*/
/*! \defgroup FLEXT_C_DSP Basic dsp functionality
@{
*/
//! returns current sample rate
float Samplerate() const { return srate; }
//! returns current block (aka vector) size
int Blocksize() const { return blksz; }
//! returns array of input vectors (CntInSig() vectors)
t_sample *const *InSig() const { return vecs; }
//! returns input vector
t_sample *InSig(int i) const { return InSig()[i]; }
//! returns array of output vectors (CntOutSig() vectors)
// \todo cache that returned pointer
t_sample *const *OutSig() const
{
int i = CntInSig();
// in PD we have at least one actual dsp in vector
#if FLEXT_SYS == FLEXT_SYS_PD
return vecs+(i?i:1);
#elif FLEXT_SYS == FLEXT_SYS_MAX
return vecs+i;
#else
#error
#endif
}
//! returns output vector
t_sample *OutSig(int i) const { return OutSig()[i]; }
//! typedef describing a signal vector
typedef t_sample *t_signalvec;
//! @}
// --- inheritable virtual methods --------------------------------
/*! \defgroup FLEXT_C_DSP_VIRTUAL Flext virtual dsp functions
@{
*/
/*! \brief Called on every dsp init.
\note Don't expect any valid data in the signal vectors!
flext_dsp::CbDsp should not be called by the derived class
\return true (default)... use DSP, false, don't use DSP
*/
virtual bool CbDsp();
/*! \brief Called with every signal vector - here you do the dsp calculation
flext_dsp::CbSignal fills all output vectors with silence
*/
virtual void CbSignal();
/*! \brief Deprecated method for CbSignal
\deprecated
\param n: frames (aka samples) in one signal vector
\param insigs: array of input vectors (get number with function CntInSig())
\param outsigs: array of output vectors (get number with function CntOutSig())
*/
virtual void m_dsp(int n,t_signalvec const *insigs,t_signalvec const *outsigs);
/*! \brief Deprecated method for CbSignal
\deprecated
\param n: frames (aka samples) in one signal vector
\param insigs: array of input vectors (get number with function CntInSig())
\param outsigs: array of output vectors (get number with function CntOutSig())
*/
virtual void m_signal(int n,t_sample *const *insigs,t_sample *const *outsigs);
//! @}
/*! \defgroup FLEXT_C_DSP_INOUT Flext dsp in-/outlet functions
\note These must be called in the class' constructor
@{
*/
// --- inlet/outlet stuff -----------------------------------------
/*! \brief Add signal inlet(s)
\param m Number of inlets to add
*/
void AddInSignal(int m = 1) { AddInlet(xlet_sig,m); }
/*! \brief Add signal inlet (with description)
\param desc Description of inlet
*/
void AddInSignal(const char *desc) { AddInlet(xlet_sig,1,desc); }
/*! \brief Add signal outlet(s)
\param m Number of inlets to add
*/
void AddOutSignal(int m = 1) { AddOutlet(xlet_sig,m); }
/*! \brief Add signal outlet (with description)
\param desc Description of outlet
*/
void AddOutSignal(const char *desc) { AddOutlet(xlet_sig,1,desc); }
//! @}
//! @}
protected:
FLEXT_CLASSDEF(flext_dsp)();
virtual void Exit();
private:
// not static, could be different in different patchers..
float srate;
int blksz;
t_signalvec *vecs;
// setup function
static void Setup(t_classid c);
#if FLEXT_SYS == FLEXT_SYS_PD
static bool cb_enable(flext_base *c,float &on);
bool dspon;
#endif
static inline flext_dsp *thisObject(flext_hdr *c) { return FLEXT_CAST<flext_dsp *>(c->data); }
void SetupDsp(t_signal **sp);
// dsp stuff
static t_int *dspmeth(t_int *w);
};
#include "flpopns.h"
#endif
|