static PyObject * LFO_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { int i; PyObject *freqtmp=NULL, *sharptmp=NULL, *multmp=NULL, *addtmp=NULL; LFO *self; self = (LFO *)type->tp_alloc(type, 0); self->freq = PyFloat_FromDouble(100); self->sharp = PyFloat_FromDouble(0.5); self->oneOverPiOverTwo = 1.0 / (PI / 2.0); self->wavetype = 0; self->pointerPos = 0.0; self->sahPointerPos = 0.0; self->modPointerPos = 0.0; self->modebuffer[0] = 0; self->modebuffer[1] = 0; self->modebuffer[2] = 0; self->modebuffer[3] = 0; INIT_OBJECT_COMMON self->oneOverSr = 1.0 / (MYFLT)self->sr; self->srOverFour = (MYFLT)self->sr * 0.25; self->srOverEight = (MYFLT)self->sr * 0.125; Stream_setFunctionPtr(self->stream, LFO_compute_next_data_frame); self->mode_func_ptr = LFO_setProcMode; static char *kwlist[] = {"freq", "sharp", "type", "mul", "add", NULL}; if (! PyArg_ParseTupleAndKeywords(args, kwds, "|OOiOO", kwlist, &freqtmp, &sharptmp, &self->wavetype, &multmp, &addtmp)) Py_RETURN_NONE; if (freqtmp) { PyObject_CallMethod((PyObject *)self, "setFreq", "O", freqtmp); } if (sharptmp) { PyObject_CallMethod((PyObject *)self, "setSharp", "O", sharptmp); } if (multmp) { PyObject_CallMethod((PyObject *)self, "setMul", "O", multmp); } if (addtmp) { PyObject_CallMethod((PyObject *)self, "setAdd", "O", addtmp); } PyObject_CallMethod(self->server, "addStream", "O", self->stream); Server_generateSeed((Server *)self->server, LFO_ID); self->sahCurrentValue = self->sahLastValue = RANDOM_UNIFORM * 2.0 - 1.0; (*self->mode_func_ptr)(self); return (PyObject *)self; }
static PyObject * OscBank_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { int i; PyObject *tabletmp, *freqtmp=NULL, *spreadtmp=NULL, *slopetmp=NULL, *frndftmp=NULL, *frndatmp=NULL, *arndftmp=NULL, *arndatmp=NULL, *multmp=NULL, *addtmp=NULL; OscBank *self; self = (OscBank *)type->tp_alloc(type, 0); self->freq = PyFloat_FromDouble(100.0); self->spread = PyFloat_FromDouble(1.0); self->slope = PyFloat_FromDouble(0.9); self->frndf = PyFloat_FromDouble(1.0); self->frnda = PyFloat_FromDouble(0.0); self->arndf = PyFloat_FromDouble(1.0); self->arnda = PyFloat_FromDouble(0.0); self->stages = 24; self->fjit = 0; self->lastFreq = self->lastSpread = -1.0; self->lastFjit = -1; self->ftime = 1.0; self->finc = 0.0; self->atime = 1.0; self->ainc = 0.0; self->modebuffer[0] = 0; self->modebuffer[1] = 0; self->modebuffer[2] = 0; self->modebuffer[3] = 0; self->modebuffer[4] = 0; self->modebuffer[5] = 0; self->modebuffer[6] = 0; self->modebuffer[7] = 0; self->modebuffer[8] = 0; INIT_OBJECT_COMMON Stream_setFunctionPtr(self->stream, OscBank_compute_next_data_frame); self->mode_func_ptr = OscBank_setProcMode; static char *kwlist[] = {"table", "freq", "spread", "slope", "frndf", "frnda", "arndf", "arnda", "num", "fjit", "mul", "add", NULL}; if (! PyArg_ParseTupleAndKeywords(args, kwds, "O|OOOOOOOiiOO", kwlist, &tabletmp, &freqtmp, &spreadtmp, &slopetmp, &frndftmp, &frndatmp, &arndftmp, &arndatmp, &self->stages, &self->fjit, &multmp, &addtmp)) Py_RETURN_NONE; if ( PyObject_HasAttrString((PyObject *)tabletmp, "getTableStream") == 0 ) { PyErr_SetString(PyExc_TypeError, "\"table\" argument of OscBank must be a PyoTableObject.\n"); Py_RETURN_NONE; } Py_XDECREF(self->table); self->table = PyObject_CallMethod((PyObject *)tabletmp, "getTableStream", ""); if (freqtmp) { PyObject_CallMethod((PyObject *)self, "setFreq", "O", freqtmp); } if (spreadtmp) { PyObject_CallMethod((PyObject *)self, "setSpread", "O", spreadtmp); } if (slopetmp) { PyObject_CallMethod((PyObject *)self, "setSlope", "O", slopetmp); } if (frndftmp) { PyObject_CallMethod((PyObject *)self, "setFrndf", "O", frndftmp); } if (frndatmp) { PyObject_CallMethod((PyObject *)self, "setFrnda", "O", frndatmp); } if (arndftmp) { PyObject_CallMethod((PyObject *)self, "setArndf", "O", arndftmp); } if (arndatmp) { PyObject_CallMethod((PyObject *)self, "setArnda", "O", arndatmp); } if (multmp) { PyObject_CallMethod((PyObject *)self, "setMul", "O", multmp); } if (addtmp) { PyObject_CallMethod((PyObject *)self, "setAdd", "O", addtmp); } PyObject_CallMethod(self->server, "addStream", "O", self->stream); (*self->mode_func_ptr)(self); self->pointerPos = (MYFLT *)realloc(self->pointerPos, self->stages * sizeof(MYFLT)); self->frequencies = (MYFLT *)realloc(self->frequencies, self->stages * sizeof(MYFLT)); self->fOldValues = (MYFLT *)realloc(self->fOldValues, self->stages * sizeof(MYFLT)); self->fValues = (MYFLT *)realloc(self->fValues, self->stages * sizeof(MYFLT)); self->fDiffs = (MYFLT *)realloc(self->fDiffs, self->stages * sizeof(MYFLT)); self->aOldValues = (MYFLT *)realloc(self->aOldValues, self->stages * sizeof(MYFLT)); self->aValues = (MYFLT *)realloc(self->aValues, self->stages * sizeof(MYFLT)); self->aDiffs = (MYFLT *)realloc(self->aDiffs, self->stages * sizeof(MYFLT)); for (i=0; i<self->stages; i++) { self->pointerPos[i] = self->frequencies[i] = self->fOldValues[i] = self->fValues[i] = self->fDiffs[i] = self->aOldValues[i] = self->aValues[i] = self->aDiffs[i] = 0.0; } self->amplitude = 1. / self->stages; Server_generateSeed((Server *)self->server, OSCBANK_ID); return (PyObject *)self; }