21 typedef struct DCBlock {
24 TTPtr audioGraphOutlet;
27 typedef DCBlock* DCBlockPtr;
31 DCBlockPtr DCBlockNew(t_symbol* msg,
long argc, t_atom* argv);
32 void DCBlockFree(DCBlockPtr
self);
33 void DCBlockAssist(DCBlockPtr
self,
void* b,
long msg,
long arg,
char* dst);
34 void DCBlockClear(DCBlockPtr
self);
35 TTErr DCBlockReset(DCBlockPtr
self);
36 TTErr DCBlockSetup(DCBlockPtr
self);
38 t_max_err DCBlockSetBypass(DCBlockPtr
self,
void* attr,
long argc, t_atom* argv);
42 static t_class* sDCBlockClass;
53 common_symbols_init();
55 c = class_new(
"j.dcblock=", (method)DCBlockNew, (method)DCBlockFree,
sizeof(DCBlock), (method)0L, A_GIMME, 0);
57 class_addmethod(c, (method)DCBlockClear,
"clear", 0);
58 class_addmethod(c, (method)DCBlockReset,
"audio.reset", A_CANT, 0);
59 class_addmethod(c, (method)DCBlockSetup,
"audio.setup", A_CANT, 0);
60 class_addmethod(c, (method)DCBlockConnect,
"audio.connect", A_OBJ, A_LONG, 0);
63 class_addmethod(c, (method)DCBlockAssist,
"assist", A_CANT, 0);
64 class_addmethod(c, (method)object_obex_dumpout,
"dumpout", A_CANT, 0);
66 CLASS_ATTR_LONG(c,
"bypass", 0, DCBlock, attrBypass);
67 CLASS_ATTR_STYLE(c,
"bypass", 0,
"onoff");
68 CLASS_ATTR_ACCESSORS(c,
"bypass", NULL, DCBlockSetBypass);
70 class_register(_sym_box, c);
79 DCBlockPtr DCBlockNew(t_symbol* msg,
long argc, t_atom* argv)
85 self = (DCBlockPtr)object_alloc(sDCBlockClass);
87 object_obex_store((
void*)
self, _sym_dumpout, (t_object*)outlet_new(
self, NULL));
88 self->audioGraphOutlet = outlet_new(
self,
"audio.connect");
97 if (!self->audioGraphObject->getUnitGenerator().valid()) {
98 object_error(SELF,
"cannot load JamomaDSP object");
102 attr_args_process(
self, argc, argv);
108 void DCBlockFree(DCBlockPtr
self)
110 if (self->audioGraphObject)
119 void DCBlockAssist(DCBlockPtr
self,
void* b,
long msg,
long arg,
char* dst)
122 strcpy(dst,
"multichannel input and control messages");
125 strcpy(dst,
"multichannel output");
127 strcpy(dst,
"dumpout");
132 void DCBlockClear(DCBlockPtr
self)
134 self->audioGraphObject->getUnitGenerator().send(
"clear");
140 TTErr DCBlockReset(DCBlockPtr
self)
142 return self->audioGraphObject->resetAudio();
146 TTErr DCBlockSetup(DCBlockPtr
self)
150 atom_setobj(a+0, (t_object*)(self->audioGraphObject));
151 atom_setlong(a+1, 0);
152 outlet_anything(self->audioGraphOutlet, gensym(
"audio.connect"), 2, a);
159 return self->audioGraphObject->connectAudio(audioSourceObject, sourceOutletNumber);
165 t_max_err DCBlockSetBypass(DCBlockPtr
self,
void* attr,
long argc, t_atom* argv)
168 self->attrBypass = atom_getlong(argv);
169 self->audioGraphObject->getUnitGenerator().set(
"bypass", (
TTBoolean)self->attrBypass);
bool TTBoolean
Boolean flag, same as Boolean on the Mac.
TTErr TTObjectBaseRelease(TTObjectBasePtr *anObject)
DEPRECATED.
Base class for all first-class Jamoma objects.
#define TT
This macro is defined as a shortcut for doing a lookup in the symbol table.
void * TTPtr
A generic pointer.
TTErr TTObjectBaseInstantiate(const TTSymbol className, TTObjectBasePtr *returnedObjectPtr, const TTValue arguments)
DEPRECATED.
A thin wrapper of Jamoma AudioGraph for use in the Cycling '74 Max/MSP environment.
TTErr MaxAudioGraphObject(t_object *x, TTAudioGraphObjectBasePtr *returnedAudioGraphObject)
Returns a pointer to the Jamoma Audio Graph object that is wrapped by this Max object.
int C74_EXPORT main(void)
Set up this class as a Max external the first time an object of this kind is instantiated.
TTErr
Jamoma Error Codes Enumeration of error codes that might be returned by any of the TTBlue functions a...
The TTAudioGraphObjectBase wraps a TTDSP object such that it is possible to build a dynamic graph of ...
TTErr MaxAudioGraphDrop(t_object *x, long inletNumber, t_object *sourceMaxObject, long sourceOutletNumber)
Method called when a connection from an upstream node is dropped.
void resize(size_type n)
Change the number of elements.
[doxygenAppendixC_copyExample]