flext 0.6.2
flsndobj.h
Go to the documentation of this file.
1/*
2flext - C++ layer for Max and Pure Data externals
3
4Copyright (c) 2001-2015 Thomas Grill (gr@grrrr.org)
5For information on usage and redistribution, and for a DISCLAIMER OF ALL
6WARRANTIES, see the file, "license.txt," in this distribution.
7*/
8
9#ifndef __FLEXT_SNDOBJ_H
10#define __FLEXT_SNDOBJ_H
11
12#include "flext.h"
13
14// PI is defined in the Max/MSP SDK, but clashes with SndObj.h
15#ifdef PI
16#undef PI
17#endif
18
19// SndObj needs WIN symbol when compiled under Windows
20#if FLEXT_OS == FLEXT_OS_WIN && !defined(WIN)
21#define WIN
22#endif
23
24#ifndef FLEXT_THREADS
25#define NOPTHREAD
26#endif
27
28#include <SndObj/SndObj.h>
29#include <SndObj/SndIO.h>
30
31#undef NOPTHREAD
32
33#include "flpushns.h"
34
36 public flext_dsp
37{
39
40public:
42
43 // these have to be overridden in child classes
44 virtual bool NewObjs() { return true; }
45 virtual void FreeObjs() {}
46 virtual void ProcessObjs() {}
47
48 // inputs and outputs
49 SndObj &InObj(int i) { return *tmpobj[i]; }
50 SndIO &OutObj(int i) { return *outobj[i]; }
51
52protected:
53 virtual bool Init();
54 virtual void Exit();
55
56private:
58 class Inlet:
59 public SndIO
60 {
61 public:
62 Inlet(const t_sample *b,int vecsz,float sr);
63 virtual short Read();
64 virtual short Write();
65
66 void SetBuf(const t_sample *b) { buf = b; }
67
68 private:
69 const t_sample *buf;
70 };
71
73 class Outlet:
74 public SndIO
75 {
76 public:
77 Outlet(t_sample *b,int vecsz,float sr);
78 virtual short Read();
79 virtual short Write();
80
81 void SetBuf(t_sample *b) { buf = b; }
82
83 private:
84 t_sample *buf;
85 };
86
87 virtual bool CbDsp();
88 virtual void CbSignal();
89
90 void ClearObjs();
91
92 int inobjs,outobjs;
93 SndObj **tmpobj;
96
97 float smprt;
98 int blsz;
99};
100
101#include "flpopns.h"
102
103#ifdef FLEXT_INLINE
104# include "flsndobj.cpp"
105#endif
106
107#endif
virtual bool Init()
Set up inlets and outlets, method and attribute lists.
Definition: flext.cpp:62
Flext dsp enabled base object.
Definition: fldsp.h:33
virtual void Exit()
Deallocate all kinds of stuff.
Definition: fldsp.cpp:44
SndObj for reading from inlet buffer.
Definition: flsndobj.h:60
const t_sample * buf
Definition: flsndobj.h:69
void SetBuf(const t_sample *b)
Definition: flsndobj.h:66
SndObj for writing to outlet buffer.
Definition: flsndobj.h:75
t_sample * buf
Definition: flsndobj.h:84
void SetBuf(t_sample *b)
Definition: flsndobj.h:81
Definition: flsndobj.h:37
SndObj & InObj(int i)
Definition: flsndobj.h:49
SndIO & OutObj(int i)
Definition: flsndobj.h:50
virtual bool NewObjs()
Definition: flsndobj.h:44
SndObj ** tmpobj
Definition: flsndobj.h:93
int blsz
Definition: flsndobj.h:98
Outlet ** outobj
Definition: flsndobj.h:95
virtual void FreeObjs()
Definition: flsndobj.h:45
Inlet ** inobj
Definition: flsndobj.h:94
float smprt
Definition: flsndobj.h:97
virtual void ProcessObjs()
Definition: flsndobj.h:46
int inobjs
Definition: flsndobj.h:92
This is the main flext include file.
#define FLEXT_SHARE
Definition: flprefix.h:425
virtual bool CbDsp()
Called on every dsp init.
Definition: fldsp.cpp:139
virtual void CbSignal()
Called with every signal vector - here you do the dsp calculation flext_dsp::CbSignal fills all outpu...
Definition: fldsp.cpp:153
#define FLEXT_HEADER(NEW_CLASS, PARENT_CLASS)
Plain flext class header.
Definition: fldefs_hdr.h:29