10 #include "PureAudioGraph.h"
15 TTAudioGraphObjectPtr audioGraphObject;
16 _outlet* audioGraphObjectOutlet;
26 extern "C" void setup_jcom_pack0x3d(
void);
27 InPtr InNew(SymbolPtr msg, AtomCount argc, AtomPtr argv);
28 void InFree(InPtr
self);
29 TTErr InReset(InPtr
self,
long vectorSize);
30 TTErr InSetup(InPtr
self);
31 TTErr InObject(InPtr
self, TTAudioGraphObjectPtr audioSourceObject);
32 t_int* InPerform(t_int* w);
33 void InDsp(InPtr
self, t_signal** sp,
short* count);
37 static ClassPtr sInClass;
43 void setup_jcom_pack0x3d(
void)
47 sInClass = class_new(gensym(
"jcom_pack="), (t_newmethod)InNew, (t_method)InFree,
sizeof(In), 0, A_GIMME, 0);
49 CLASS_MAINSIGNALIN(sInClass, In, f);
50 class_addmethod(sInClass, (t_method)InReset, gensym(
"audio.reset"), A_CANT, 0);
51 class_addmethod(sInClass, (t_method)InSetup, gensym(
"audio.setup"), A_CANT, 0);
52 class_addmethod(sInClass, (t_method)InDsp, gensym(
"dsp"), A_CANT, 0);
54 class_sethelpsymbol(sInClass, gensym(
"help-jcom_pack=.pd"));
61 InPtr InNew(SymbolPtr msg, AtomCount argc, AtomPtr argv)
68 self = InPtr(pd_new(sInClass));
70 self->maxNumChannels = 2;
72 self->maxNumChannels = atom_getfloat(argv) + 0.1;
77 v.
set(0,
TT(
"audio.generator"));
80 err = TTObjectInstantiate(
TT(
"audio.object"), (TTObjectPtr*)&self->audioGraphObject, v);
83 if (!self->audioGraphObject->getUnitGenerator()) {
84 error(
"in=: cannot load audio.generator");
88 self->audioGraphObjectOutlet = outlet_new(SELF, gensym(
"audio.connect"));
90 for (
TTUInt16 i=1; i<
self->maxNumChannels; i++)
91 inlet_new(&self->obj, &self->obj.ob_pd, &s_signal, &s_signal);
100 void InFree(InPtr
self)
102 TTObjectRelease((TTObjectPtr*)&self->audioGraphObject);
110 TTErr InReset(InPtr
self,
long vectorSize)
112 return self->audioGraphObject->resetAudio();
116 TTErr InSetup(InPtr
self)
120 a[0].a_type = A_POINTER;
121 a[1].a_type = A_POINTER;
122 a[0].a_w.w_symbol = SymbolPtr(self->audioGraphObject);
123 a[1].a_w.w_symbol = 0;
125 outlet_anything(self->audioGraphObjectOutlet, gensym(
"audio.connect"), 2, a);
131 t_int* InPerform(t_int* w)
133 InPtr
self = (InPtr)(w[1]);
136 for (i=0; i <
self->numChannels; i++)
139 return w + (
self->numChannels+2);
144 void InDsp(InPtr
self, t_signal** sp,
short* count)
147 void **audioVectors = NULL;
149 self->vectorSize = sp[0]->s_n;
152 audioVectors = (
void**)malloc(
sizeof(
void*) * (
self->maxNumChannels + 1));
153 audioVectors[k] =
self;
156 self->numChannels = 0;
157 for (i=0; i <
self->maxNumChannels; i++) {
159 audioVectors[k] = sp[i]->s_vec;
163 self->audioGraphObject->setOutputNumChannels(0, self->maxNumChannels);
164 self->audioGraphObject->getUnitGenerator()->setAttributeValue(
TT(
"VectorSize"), self->vectorSize);
165 self->audioGraphObject->getUnitGenerator()->setAttributeValue(
TT(
"MaxNumChannels"), self->maxNumChannels);
166 self->audioGraphObject->getUnitGenerator()->setAttributeValue(
TT(
"SampleRate"), sp[0]->s_sr);
168 dsp_addv(InPerform, k, (t_int*)audioVectors);
std::uint16_t TTUInt16
16 bit unsigned integer
TTFOUNDATION_EXPORT TTEnvironment * ttEnvironment
The environment object has one instance, which is global in scope.
This object is an audio generator, and do not expect audio input.
TTErr setAttributeValue(const TTSymbol name, TTValue &value)
Set an attribute value for an object.
#define TT
This macro is defined as a shortcut for doing a lookup in the symbol table.
void setSize(const TTUInt16 arg)
DEPRECATED.
TTAudioGraphGenerator * TTAudioGraphGeneratorPtr
Pointer to a TTAudioGraphGenerator.
float TTFloat32
32 bit floating point number
void set(const TTUInt16 index, const T &anElementValue)
DEPRECATED.
TTErr
Jamoma Error Codes Enumeration of error codes that might be returned by any of the TTBlue functions a...
std::uint32_t TTUInt32
32 bit unsigned integer
[doxygenAppendixC_copyExample]