17 #include "TTClassWrapperMax.h"
20 #include "ext_strings.h"
21 #include "commonsyms.h"
28 typedef struct _ramp {
39 void* ramp_new(t_symbol *msg,
short argc, t_atom *argv);
40 void ramp_free(t_ramp *x);
41 void ramp_assist(t_ramp *x,
void *b,
long msg,
long arg,
char *dst);
42 t_int* ramp_perform(t_int *w);
43 void ramp_dsp(t_ramp *x, t_signal **sp,
short *count);
44 void ramp_dsp64(t_ramp *x, t_object *dsp64,
short *count,
double samplerate,
long maxvectorsize,
long flags);
46 void ramp_int(t_ramp *x,
long newCurrentValue);
47 void ramp_float(t_ramp *x,
double newCurrentValue);
48 void ramp_list(t_ramp *x,
double endValue,
double time);
49 t_max_err ramp_setMode(t_ramp *x,
void *attr,
long argc, t_atom *argv);
66 common_symbols_init();
68 c = class_new(
"j.ramp~",(method)ramp_new, (method)ramp_free, (
short)
sizeof(t_ramp),
69 (method)0L, A_GIMME, 0);
71 class_addmethod(c, (method)
ramp_int,
"int", A_FLOAT, 0L);
72 class_addmethod(c, (method)
ramp_float,
"float", A_FLOAT, 0L);
73 class_addmethod(c, (method)
ramp_list,
"list", A_FLOAT, A_FLOAT);
74 class_addmethod(c, (method)
ramp_stop,
"stop", 0L);
75 class_addmethod(c, (method)ramp_dsp,
"dsp", A_CANT, 0L);
76 class_addmethod(c, (method)ramp_dsp64,
"dsp64", A_CANT, 0);
77 class_addmethod(c, (method)
ramp_assist,
"assist", A_CANT, 0L);
78 class_addmethod(c, (method)object_obex_dumpout,
"dumpout", A_CANT, 0);
80 attr = attr_offset_new(
"mode", _sym_symbol, attrflags,
81 (method)0L, (method)ramp_setMode, calcoffset(t_ramp, attrMode));
82 class_addattr(c, attr);
85 class_register(CLASS_BOX, c);
94 void* ramp_new(t_symbol *msg,
short argc, t_atom *argv)
98 long attrstart = attr_args_offset(argc, argv);
101 x = (t_ramp *)object_alloc(ramp_class);
103 x->maxNumChannels = 2;
104 if (attrstart && argv)
105 x->maxNumChannels = atom_getlong(argv);
112 attr_args_process(x,argc,argv);
114 object_obex_store((
void *)x, _sym_dumpout, (
object *)outlet_new(x,NULL));
115 dsp_setup((t_pxobject *)x, x->maxNumChannels);
116 for (i=0; i < x->maxNumChannels; i++)
117 outlet_new((t_pxobject *)x,
"signal");
119 x->obj.z_misc = Z_NO_INPLACE;
125 void ramp_free(t_ramp *x)
127 dsp_free((t_pxobject *)x);
137 void ramp_assist(t_ramp *x,
void *b,
long msg,
long arg,
char *dst)
141 strcpy(dst,
"(signal) input 1, control messages");
143 snprintf(dst, 256,
"(signal) input %ld", arg+1);
146 if (arg == x->maxNumChannels)
147 strcpy(dst,
"dumpout");
149 snprintf(dst, 256,
"(signal) Filtered output %ld", arg+1);
156 x->ramp->sendMessage(
TT(
"stop"));
160 void ramp_int(t_ramp *x,
long newCurrentValue)
165 void ramp_float(t_ramp *x,
double newCurrentValue)
167 x->ramp->setAttributeValue(
TT(
"startValue"), newCurrentValue);
170 void ramp_list(t_ramp *x,
double endValue,
double time)
172 x->ramp->setAttributeValue(
TT(
"destinationValue"), endValue);
173 x->ramp->setAttributeValue(
TT(
"rampTime"), time);
178 t_int *ramp_perform(t_int *w)
180 t_ramp *x = (t_ramp *)(w[1]);
182 if (!(x->obj.z_disabled))
183 x->ramp->process(*x->audioOut);
186 x->audioOut->getVector(0, x->vs, (t_float *)(w[2]));
193 void ramp_dsp(t_ramp *x, t_signal **sp,
short *count)
195 x->ramp->setAttributeValue(
TT(
"sampleRate"), sp[0]->s_sr);
198 x->audioOut->setAttributeValue(
TT(
"numChannels"), x->maxNumChannels);
199 x->audioOut->setAttributeValue(
TT(
"vectorSize"),
TTUInt16(sp[0]->s_n));
200 x->audioOut->sendMessage(
TT(
"alloc"));
202 dsp_add(ramp_perform, 2, x, sp[0]->s_vec);
206 t_max_err ramp_setMode(t_ramp *x,
void *attr,
long argc, t_atom *argv)
209 x->attrMode = atom_getsym(argv);
210 if (x->attrMode == gensym(
"sample_accurate"))
211 x->ramp->setAttributeValue(
TT(
"mode"),
TT(
"sample"));
212 else if (x->attrMode == gensym(
"vector_accurate"))
213 x->ramp->setAttributeValue(
TT(
"mode"),
TT(
"vector"));
218 void ramp_perform64(t_ramp *x, t_object *dsp64,
double **ins,
long numins,
double **outs,
long numouts,
long sampleframes,
long flags,
void *userparam)
220 x->ramp->process(*x->audioOut);
221 x->audioOut->getVector(0, x->vs, (t_float *)(outs[0]));
224 void ramp_dsp64(t_ramp *x, t_object *dsp64,
short *count,
double samplerate,
long maxvectorsize,
long flags)
226 x->ramp->setAttributeValue(
TT(
"sampleRate"), samplerate);
227 x->vs = maxvectorsize;
229 x->audioOut->setAttributeValue(
TT(
"numChannels"), x->maxNumChannels);
230 x->audioOut->setAttributeValue(
TT(
"vectorSize"), (
TTUInt16) maxvectorsize);
231 x->audioOut->sendMessage(
TT(
"alloc"));
232 object_method(dsp64, gensym(
"dsp_add64"), x, ramp_perform64, 0, NULL);
std::uint16_t TTUInt16
16 bit unsigned integer
TTErr TTObjectBaseRelease(TTObjectBasePtr *anObject)
DEPRECATED.
TTFOUNDATION_EXPORT TTEnvironment * ttEnvironment
The environment object has one instance, which is global in scope.
TTAudioObjectBase is the base class for all audio generating and processing objects in Jamoma DSP...
void ramp_stop(TTPtr self)
Stop ongoing ramp.
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.
TTErr TTObjectBaseInstantiate(const TTSymbol className, TTObjectBasePtr *returnedObjectPtr, const TTValue arguments)
DEPRECATED.
The TTAudioSignal class represents N vectors of audio samples for M channels.
void TTDSP_EXPORT TTDSPInit(const char *pathToBinaries=NULL)
Initialise the Jamoma DSP library, as well as Jamoma Foundation foundation if needed.
int C74_EXPORT main(void)
Set up this class as a Max external the first time an object of this kind is instantiated.
void ramp_int(TTPtr self, long n)
Method for int input, instantly updates current value of the object.
void ramp_list(TTPtr self, t_symbol *msg, long argc, t_atom *argv)
Method for list input
void ramp_float(TTPtr self, double f)
Method for float input, instantly updates current value of the object.
void ramp_assist(TTPtr self, void *b, long msg, long arg, char *dst)
Method for Assistance Messages.
[doxygenAppendixC_copyExample]