Update of /cvsroot/pure-data/externals/sc4pd/source In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29224/source
Modified Files: ClipNoise.cpp ExpRand.cpp main.cpp support.cpp Added Files: LFClipNoise.cpp LFNoise0.cpp Log Message: the work of this evening ...
Index: main.cpp =================================================================== RCS file: /cvsroot/pure-data/externals/sc4pd/source/main.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** main.cpp 15 Jul 2004 19:05:05 -0000 1.4 --- main.cpp 15 Jul 2004 21:34:12 -0000 1.5 *************** *** 57,61 **** "PinkNoise(~), \n Crackle(~), Rand(~), TRand(~), " "TExpRand(~), IRand(~), TIRand(~),\n CoinGate, " ! "LinRand(~), NRand(~), ExpRand(~)\n");
//initialize objects --- 57,62 ---- "PinkNoise(~), \n Crackle(~), Rand(~), TRand(~), " "TExpRand(~), IRand(~), TIRand(~),\n CoinGate, " ! "LinRand(~), NRand(~), ExpRand(~), LFClipNoise(~),\n" ! " LFNoise0(~)\n");
//initialize objects *************** *** 118,121 **** --- 119,128 ---- FLEXT_DSP_SETUP(ExpRand_ar); FLEXT_SETUP(ExpRand_kr); + + FLEXT_DSP_SETUP(LFClipNoise_ar); + FLEXT_SETUP(LFClipNoise_kr); + + FLEXT_DSP_SETUP(LFNoise0_ar); + FLEXT_SETUP(LFNoise0_kr); }
Index: ExpRand.cpp =================================================================== RCS file: /cvsroot/pure-data/externals/sc4pd/source/ExpRand.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** ExpRand.cpp 15 Jul 2004 19:05:05 -0000 1.1 --- ExpRand.cpp 15 Jul 2004 21:34:12 -0000 1.2 *************** *** 98,102 **** { float ratio = hi / lo; ! m_sample = pow(ratio,rgen.frand()) * lo); }
--- 98,102 ---- { float ratio = hi / lo; ! m_sample = pow(ratio,rgen.frand()) * lo; }
--- NEW FILE: LFNoise0.cpp --- /* sc4pd LFNoise0, LFNoise0~
Copyright (c) 2004 Tim Blechmann.
This code is derived from: SuperCollider real time audio synthesis system Copyright (c) 2002 James McCartney. All rights reserved. http://www.audiosynth.com
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Based on: PureData by Miller Puckette and others. http://www.crca.ucsd.edu/~msp/software.html FLEXT by Thomas Grill http://www.parasitaere-kapazitaeten.net/ext SuperCollider by James McCartney http://www.audiosynth.com
Coded while listening to: Elliott Sharp: Revenge Of The Stuttering Child
*/
#include <flext.h> #include "SC_PlugIn.h" #include "support.hpp"
#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 406) #error You need at least FLEXT version 0.4.6 #endif
/* ------------------------ LFNoise0~ -------------------------------*/
class LFNoise0_ar: public flext_dsp { FLEXT_HEADER(LFNoise0_ar,flext_dsp);
public: LFNoise0_ar(int argc, t_atom *argv);
protected: virtual void m_signal(int n, t_sample *const *in, t_sample *const *out); virtual void m_dsp(int n, t_sample *const *in, t_sample *const *out);
void m_seed(int i) { rgen.init(i); }
void m_set(float f) { m_freq = f; }
private: RGen rgen; float m_freq; float m_level; int m_counter; int m_sr; FLEXT_CALLBACK_I(m_seed); FLEXT_CALLBACK_F(m_set); };
FLEXT_LIB_DSP_V("LFNoise0~",LFNoise0_ar);
LFNoise0_ar::LFNoise0_ar(int argc, t_atom *argv) { FLEXT_ADDMETHOD_(0,"seed",m_seed); FLEXT_ADDMETHOD_(0,"set",m_set);
//parse arguments AtomList Args(argc,argv);
m_freq = sc_getfloatarg(Args,0);
m_counter=0; m_level=0;
rgen.init(timeseed());
AddOutSignal(); }
void LFNoise0_ar::m_dsp(int n, t_sample *const *in, t_sample *const *out) { m_sr = Samplerate(); }
void LFNoise0_ar::m_signal(int n, t_sample *const *in, t_sample *const *out) { t_sample *nout = *out;
float level = m_level; int32 counter = m_counter;
RGET;
int remain = n; do { if (counter<=0) { counter = (int)(m_sr / sc_max(m_freq, .001f)); counter = sc_max(1, counter); level = frand2(s1,s2,s3); } int nsmps = sc_min(remain, counter); remain -= nsmps; counter -= nsmps; for (int i = 0; i!= nsmps;++i) { (*(nout)++)=level; } } while(remain);
m_level = level; m_counter = counter;
RPUT; }
/* ------------------------ LFNoise0 ---------------------------------*/
class LFNoise0_kr: public flext_base { FLEXT_HEADER(LFNoise0_kr,flext_base);
public: LFNoise0_kr(int argc, t_atom *argv);
protected: void m_perform();
void m_seed(int i) { rgen.init(i); }
void m_set(float f) { double dt = sc_min(1/f, .001f); m_timer.Reset(); m_timer.Periodic(1000*dt); }
private: RGen rgen; Timer m_timer; FLEXT_CALLBACK_I(m_seed); FLEXT_CALLBACK_T(m_perform); FLEXT_CALLBACK_F(m_set); };
FLEXT_LIB_V("LFNoise0",LFNoise0_kr);
LFNoise0_kr::LFNoise0_kr(int argc, t_atom *argv) { FLEXT_ADDMETHOD_(0,"seed",m_seed); FLEXT_ADDMETHOD_(0,"set",m_set); FLEXT_ADDTIMER(m_timer,m_perform);
//parse arguments AtomList Args(argc,argv);
double dt = sc_min(1/sc_getfloatarg(Args,0), .001f);
rgen.init(timeseed());
m_timer.Periodic(1000*dt);
AddOutFloat(); }
void LFNoise0_kr::m_perform() { ToOutFloat(0,rgen.frand2()); }
--- NEW FILE: LFClipNoise.cpp --- /* sc4pd LFClipNoise, LFClipNoise~
Copyright (c) 2004 Tim Blechmann.
This code is derived from: SuperCollider real time audio synthesis system Copyright (c) 2002 James McCartney. All rights reserved. http://www.audiosynth.com
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Based on: PureData by Miller Puckette and others. http://www.crca.ucsd.edu/~msp/software.html FLEXT by Thomas Grill http://www.parasitaere-kapazitaeten.net/ext SuperCollider by James McCartney http://www.audiosynth.com
Coded while listening to: Elliott Sharp: Revenge Of The Stuttering Child
*/
#include <flext.h> #include "SC_PlugIn.h" #include "support.hpp"
#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 406) #error You need at least FLEXT version 0.4.6 #endif
/* ------------------------ LFClipNoise~ -------------------------------*/
class LFClipNoise_ar: public flext_dsp { FLEXT_HEADER(LFClipNoise_ar,flext_dsp);
public: LFClipNoise_ar(int argc, t_atom *argv);
protected: virtual void m_signal(int n, t_sample *const *in, t_sample *const *out); virtual void m_dsp(int n, t_sample *const *in, t_sample *const *out);
void m_seed(int i) { rgen.init(i); }
void m_set(float f) { m_freq = f; }
private: RGen rgen; float m_freq; float m_level; int m_counter; int m_sr; FLEXT_CALLBACK_I(m_seed); FLEXT_CALLBACK_F(m_set); };
FLEXT_LIB_DSP_V("LFClipNoise~",LFClipNoise_ar);
LFClipNoise_ar::LFClipNoise_ar(int argc, t_atom *argv) { FLEXT_ADDMETHOD_(0,"seed",m_seed); FLEXT_ADDMETHOD_(0,"set",m_set);
//parse arguments AtomList Args(argc,argv);
m_freq = sc_getfloatarg(Args,0);
m_counter=0; m_level=0;
rgen.init(timeseed());
AddOutSignal(); }
void LFClipNoise_ar::m_dsp(int n, t_sample *const *in, t_sample *const *out) { m_sr = Samplerate(); }
void LFClipNoise_ar::m_signal(int n, t_sample *const *in, t_sample *const *out) { t_sample *nout = *out;
float level = m_level; int32 counter = m_counter;
RGET;
int remain = n; do { if (counter<=0) { counter = (int)(m_sr / sc_max(m_freq, .001f)); counter = sc_max(1, counter); level = fcoin(s1,s2,s3); } int nsmps = sc_min(remain, counter); remain -= nsmps; counter -= nsmps; for (int i = 0; i!= nsmps;++i) { (*(nout)++)=level; } } while(remain);
m_level = level; m_counter = counter;
RPUT; }
/* ------------------------ LFClipNoise ---------------------------------*/
class LFClipNoise_kr: public flext_base { FLEXT_HEADER(LFClipNoise_kr,flext_base);
public: LFClipNoise_kr(int argc, t_atom *argv);
protected: void m_perform();
void m_seed(int i) { rgen.init(i); }
void m_set(float f) { double dt = sc_min(1/f, .001f); m_timer.Reset(); m_timer.Periodic(1000*dt); }
private: RGen rgen; Timer m_timer; FLEXT_CALLBACK_I(m_seed); FLEXT_CALLBACK_T(m_perform); FLEXT_CALLBACK_F(m_set); };
FLEXT_LIB_V("LFClipNoise",LFClipNoise_kr);
LFClipNoise_kr::LFClipNoise_kr(int argc, t_atom *argv) { FLEXT_ADDMETHOD_(0,"seed",m_seed); FLEXT_ADDMETHOD_(0,"set",m_set); FLEXT_ADDTIMER(m_timer,m_perform);
//parse arguments AtomList Args(argc,argv);
double dt = sc_min(1/sc_getfloatarg(Args,0), .001f);
rgen.init(timeseed());
m_timer.Periodic(1000*dt);
AddOutFloat(); }
void LFClipNoise_kr::m_perform() { ToOutFloat(0,rgen.fcoin()); }
Index: support.cpp =================================================================== RCS file: /cvsroot/pure-data/externals/sc4pd/source/support.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** support.cpp 15 Jul 2004 19:03:22 -0000 1.1 --- support.cpp 15 Jul 2004 21:34:12 -0000 1.2 *************** *** 36,42 ****
#include <flext.h> #include "SC_PlugIn.h"
- #include <sys/time.h>
#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 406) --- 36,42 ----
#include <flext.h> + #include <flsupport.h> #include "SC_PlugIn.h"
#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 406) *************** *** 44,48 **** #endif
- bool sc_add (flext::AtomList a) { --- 44,47 ---- *************** *** 97,102 **** { static int32 count = 0; ! struct timeval tv; ! gettimeofday(&tv, 0); ! return (int32)tv.tv_sec ^ (int32)tv.tv_usec ^ count--; } --- 96,110 ---- { static int32 count = 0; ! ! double time = flext::GetOSTime(); ! ! double sec = trunc(time); ! double usec = (time-sec)*1e6; ! ! time_t tsec = sec; ! suseconds_t tusec =usec; /* not exacty the way, it's calculated ! in SuperCollider, but it's only ! the seed */ ! ! return (int32)tsec ^ (int32)tusec ^ count--; }
Index: ClipNoise.cpp =================================================================== RCS file: /cvsroot/pure-data/externals/sc4pd/source/ClipNoise.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** ClipNoise.cpp 15 Jul 2004 19:05:05 -0000 1.2 --- ClipNoise.cpp 15 Jul 2004 21:34:12 -0000 1.3 *************** *** 135,143 **** rgen.init(timeseed());
! AddOutFloat(); }
void ClipNoise_kr::m_perform() { ! ToOutFloat(0,rgen.fcoin()); } --- 135,143 ---- rgen.init(timeseed());
! AddOutInt(); }
void ClipNoise_kr::m_perform() { ! ToOutInt(0,rgen.fcoin()); }