flext  0.6.0
flsndobj.h
Go to the documentation of this file.
1 /*
2 flext - C++ layer for Max and Pure Data externals
3 
4 Copyright (c) 2001-2015 Thomas Grill (gr@grrrr.org)
5 For information on usage and redistribution, and for a DISCLAIMER OF ALL
6 WARRANTIES, 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 
40 public:
41  flext_sndobj();
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 
52 protected:
53  virtual bool Init();
54  virtual void Exit();
55 
56 private:
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
flext.h
This is the main flext include file.
flext_sndobj::outobjs
int outobjs
Definition: flsndobj.h:92
flext_sndobj::Outlet::SetBuf
void SetBuf(t_sample *b)
Definition: flsndobj.h:81
flext_base::Init
virtual bool Init()
Set up inlets and outlets, method and attribute lists.
Definition: flext.cpp:62
flext_sndobj::NewObjs
virtual bool NewObjs()
Definition: flsndobj.h:44
flext_dsp::CbDsp
virtual bool CbDsp()
Called on every dsp init.
Definition: fldsp.cpp:139
flext_sndobj::FreeObjs
virtual void FreeObjs()
Definition: flsndobj.h:45
flpopns.h
flext_sndobj::Inlet
SndObj for reading from inlet buffer.
Definition: flsndobj.h:60
flext_sndobj::blsz
int blsz
Definition: flsndobj.h:98
flext_sndobj::inobj
Inlet ** inobj
Definition: flsndobj.h:94
flext_sndobj::tmpobj
SndObj ** tmpobj
Definition: flsndobj.h:93
flext_sndobj::Outlet::buf
t_sample * buf
Definition: flsndobj.h:84
flext_dsp
Flext dsp enabled base object.
Definition: fldsp.h:33
flext_dsp::CbSignal
virtual void CbSignal()
Called with every signal vector - here you do the dsp calculation flext_dsp::CbSignal fills all outpu...
Definition: fldsp.cpp:153
flext_sndobj::outobj
Outlet ** outobj
Definition: flsndobj.h:95
flext_sndobj::Outlet
SndObj for writing to outlet buffer.
Definition: flsndobj.h:75
flext_sndobj::ProcessObjs
virtual void ProcessObjs()
Definition: flsndobj.h:46
FLEXT_SHARE
#define FLEXT_SHARE
Definition: flprefix.h:425
flext_sndobj::smprt
float smprt
Definition: flsndobj.h:97
flpushns.h
flext_sndobj::OutObj
SndIO & OutObj(int i)
Definition: flsndobj.h:50
flsndobj.cpp
flext_sndobj::InObj
SndObj & InObj(int i)
Definition: flsndobj.h:49
flext_dsp::Exit
virtual void Exit()
Deallocate all kinds of stuff.
Definition: fldsp.cpp:44
FLEXT_HEADER
#define FLEXT_HEADER(NEW_CLASS, PARENT_CLASS)
Plain flext class header.
Definition: fldefs_hdr.h:29
flext_sndobj
Definition: flsndobj.h:37
flext_sndobj::Inlet::SetBuf
void SetBuf(const t_sample *b)
Definition: flsndobj.h:66
flext_sndobj::Inlet::buf
const t_sample * buf
Definition: flsndobj.h:69