// bang.c -- A very simple Max external object. // Outputs a bang when a bang is received. #include "ext.h" // Required for all Max external objects void *this_class; // Required. Global pointing to this class typedef struct _bang // Data structure for this object { t_object b_ob; // Must always be the first field; used by Max void *b_out; // Pointer to outlet, need one for each outlet } t_bang; // Prototypes for methods: need a method for each incoming message void *bang_new(void); // object creation method void bang_bang(t_bang *bang); // method for bang message int main(void) { // set up our class: create a class definition setup((t_messlist**) &this_class, (method)bang_new, 0L, (short)sizeof(t_bang), 0L, 0); addbang((method)bang_bang); // bind method "bang_bang" to the "bang" message return (0); } void *bang_new(void) { t_bang *bang; // create the new instance and return a pointer to it bang = (t_bang *)newobject(this_class); bang->b_out = bangout(bang); // create a bang outlet return(bang); // must return a pointer to the new instance } void bang_bang(t_bang *bang) { outlet_bang(bang->b_out); // send a bang to the outlet bang->b_out }