[PD-cvs] externals/chaos/src Makefile.am,1.1.1.1,1.2 chaos.hpp,1.2,1.3 chaos_base.hpp,1.2,1.3 chaos_dsp.cpp,1.1.1.1,1.2 chaos_dsp.hpp,1.1.1.1,1.2 logistic_map.hpp,1.2,1.3 lorenz.hpp,1.2,1.3 main.cpp,1.1.1.1,1.2 ode_base.cpp,1.1.1.1,1.2 ode_base.hpp,1.1.1.1,1.2
Tim Blechmann
timblech at users.sourceforge.net
Fri Dec 24 16:31:16 CET 2004
- Previous message: [PD-cvs] externals/chaos/src bernoulli_map.hpp,1.1.1.1,1.2 bungalow_tent_map.hpp,1.1.1.1,1.2 chaos.hpp,1.1.1.1,1.2 chaos_base.hpp,1.1.1.1,1.2 circle_map.hpp,1.1.1.1,1.2 gauss_map.hpp,1.1.1.1,1.2 henon_map.hpp,1.1.1.1,1.2 ikeda_laser_map.hpp,1.1.1.1,1.2 logistic_map.hpp,1.1.1.1,1.2 lorenz.hpp,1.1.1.1,1.2 lozi_map.hpp,1.1.1.1,1.2 sine_map.hpp,1.1.1.1,1.2 standard_map.hpp,1.1.1.1,1.2 tent_map.hpp,1.1.1.1,1.2
- Next message: [PD-cvs] externals/chaos configure.ac,1.1.1.1,1.2
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/pure-data/externals/chaos/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21585
Modified Files:
Makefile.am chaos.hpp chaos_base.hpp chaos_dsp.cpp
chaos_dsp.hpp logistic_map.hpp lorenz.hpp main.cpp
ode_base.cpp ode_base.hpp
Log Message:
xmas's changes
Index: ode_base.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/chaos/src/ode_base.hpp,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** ode_base.hpp 21 Dec 2004 09:22:10 -0000 1.1.1.1
--- ode_base.hpp 24 Dec 2004 15:31:14 -0000 1.2
***************
*** 25,29 ****
class ode_base
! : protected chaos_base
{
public:
--- 25,29 ----
class ode_base
! : public chaos_base
{
public:
***************
*** 32,36 ****
if (i >=0 && i <4)
m_method = (unsigned char) i;
! post("no such method");
}
--- 32,37 ----
if (i >=0 && i <4)
m_method = (unsigned char) i;
! else
! post("no such method");
}
***************
*** 40,66 ****
}
! void set_dt(t_float f)
! {
! if (f >= 0)
! m_dt = (data_t)f;
! else
! post("invalid value for dt: %f", f);
! }
!
! t_float get_dt()
{
! return (t_float) m_dt;
}
! void m_step();
protected:
unsigned char m_method; /* 0: rk1, 1: rk2, 3: rk4 */
- data_t m_dt; /* step width */
data_t* m_k[3]; /* temporary arrays for runge kutta */
data_t* m_tmp;
! virtual void m_system (data_t* deriv, data_t* data);
void rk1 ();
--- 41,62 ----
}
! CHAOS_SYSPAR_FUNCS_PRED(dt, m_pred_dt);
!
! bool m_pred_dt(t_float f)
{
! return (f >= 0);
}
! virtual void m_step();
protected:
unsigned char m_method; /* 0: rk1, 1: rk2, 3: rk4 */
data_t* m_k[3]; /* temporary arrays for runge kutta */
data_t* m_tmp;
! virtual void m_system (data_t* deriv, data_t* data)
! {
! }
void rk1 ();
***************
*** 69,81 ****
};
! #define ODE_CALLBACKS \
! CHAOS_CALLBACKS; \
! FLEXT_CALLVAR_I(m_system->get_method, m_system->set_method); \
! FLEXT_CALLVAR_F(m_system->get_dt, m_system->set_dt);
! #define ODE_ATTRIBUTES \
! CHAOS_ATTRIBUTES; \
! FLEXT_ADDATTR_VAR("method", m_system->get_method, m_system->set_method); \
! FLEXT_ADDATTR_VAR("dt",m_system->get_dt, m_system->set_dt);
--- 65,77 ----
};
! #define ODE_CALLBACKS \
! CHAOS_CALLBACKS; \
! CHAOS_SYS_CALLBACKS_I(method); \
! CHAOS_SYS_CALLBACKS(dt);
! #define ODE_ATTRIBUTES \
! CHAOS_ATTRIBUTES; \
! CHAOS_SYS_ATTRIBUTE(method); \
! CHAOS_SYS_ATTRIBUTE(dt);
Index: main.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/chaos/src/main.cpp,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** main.cpp 21 Dec 2004 09:22:10 -0000 1.1.1.1
--- main.cpp 24 Dec 2004 15:31:14 -0000 1.2
***************
*** 24,29 ****
void chaos_library_setup()
{
! post("chaos~ version"PACKAGE_VERSION"\n");
}
!
FLEXT_LIB_SETUP(chaos, chaos_library_setup);
--- 24,31 ----
void chaos_library_setup()
{
! post("chaos~ version "PACKAGE_VERSION"\n");
!
! FLEXT_DSP_SETUP(lorenz_dsp);
}
!
FLEXT_LIB_SETUP(chaos, chaos_library_setup);
Index: logistic_map.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/chaos/src/logistic_map.hpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** logistic_map.hpp 23 Dec 2004 10:07:17 -0000 1.2
--- logistic_map.hpp 24 Dec 2004 15:31:14 -0000 1.3
***************
*** 55,59 ****
}
! CHAOS_SYSVAR_FUNCS_PRED(x, m_pred_x);
bool m_pred_x(t_float f)
--- 55,59 ----
}
! CHAOS_SYSVAR_FUNCS_PRED(x, 0, m_pred_x);
bool m_pred_x(t_float f)
Index: lorenz.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/chaos/src/lorenz.hpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** lorenz.hpp 23 Dec 2004 10:07:17 -0000 1.2
--- lorenz.hpp 24 Dec 2004 15:31:14 -0000 1.3
***************
*** 27,38 ****
class lorenz
! : protected ode_base
{
public:
! logistic()
{
m_num_eq = 3;
m_data = new data_t[3];
CHAOS_SYS_INIT(x1,0.8);
CHAOS_SYS_INIT(x2,0.8);
--- 27,40 ----
class lorenz
! : public ode_base
{
public:
! lorenz()
{
m_num_eq = 3;
m_data = new data_t[3];
+ CHAOS_SYS_INIT(method,0);
+ CHAOS_SYS_INIT(dt,1);
CHAOS_SYS_INIT(x1,0.8);
CHAOS_SYS_INIT(x2,0.8);
***************
*** 45,49 ****
}
! ~logistic()
{
delete m_data;
--- 47,51 ----
}
! ~lorenz()
{
delete m_data;
Index: chaos_base.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/chaos/src/chaos_base.hpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** chaos_base.hpp 23 Dec 2004 10:07:17 -0000 1.2
--- chaos_base.hpp 24 Dec 2004 15:31:14 -0000 1.3
***************
*** 1,3 ****
! a//
//
// chaos~
--- 1,3 ----
! //
//
// chaos~
***************
*** 22,25 ****
--- 22,26 ----
#include "chaos.hpp"
+ #include "chaos_defs.hpp"
class chaos_base
***************
*** 37,41 ****
}
! virtual void m_step();
data_t * m_data; // state of the system
--- 38,44 ----
}
! virtual void m_step()
! {
! }
data_t * m_data; // state of the system
***************
*** 46,141 ****
#define CHAOS_CALLBACKS \
- FLEXT_CALLGET_F(m_system->get_num_eq);
-
- #define CHAOS_ATTRIBUTES \
- FLEXT_ADDATTR_GET("dimension",m_system->get_num_eq);
-
-
-
- // macros for simplified system state functions
- #define CHAOS_SYS_SETFUNC(NAME, NR) \
- void set_##NAME(t_float f) \
- { \
- m_data[NR] = (data_t) f; \
- }
-
- #define CHAOS_SYS_SETFUNC_PRED(NAME, NR, PRED) \
- void set_##NAME(t_float f) \
- { \
- if ( PRED(f) ) \
- m_data[NR] = (data_t) f; \
- else \
- post("value for dimension " #NAME " %f out of range", f); \
- }
-
- #define CHAOS_SYS_GETFUNC(NAME, NR) \
- t_float get_##NAME() \
- { \
- return (t_float)m_data[NR]; \
- }
-
- /* to be called in the public part */
- #define CHAOS_SYSVAR_FUNCS_PRED(NAME, NR, PRED) \
- public: \
- CHAOS_SYS_SETFUNC_PRED(NAME, NR, PRED) \
- CHAOS_SYS_GETFUNC(NAME, NR)
-
- #define CHAOS_SYSVAR_FUNCS(NAME, NR) \
public: \
! CHAOS_SYS_SETFUNC(NAME, NR) \
! CHAOS_SYS_GETFUNC(NAME, NR)
!
!
!
! // macros for simplified system parameter functions
! #define CHAOS_PAR_SETFUNC(NAME) \
! void set_##NAME(t_float f) \
! { \
! m_##NAME = (data_t) f; \
! }
!
! #define CHAOS_PAR_SETFUNC_PRED(NAME, PRED) \
! void set_##NAME(t_float f) \
! { \
! if ( PRED(f) ) \
! m_##NAME = (data_t) f; \
! else \
! post("value for parameter " #NAME " %f out of range", f); \
! }
!
! #define CHAOS_PAR_GETFUNC(NAME) \
! t_float get_##NAME() \
! { \
! return (t_float)m_##NAME; \
! }
!
!
! #define CHAOS_SYSPAR_FUNCS_PRED(NAME, PRED) \
! public: \
! CHAOS_PAR_SETFUNC_PRED(NAME, PRED) \
! CHAOS_PAR_GETFUNC(NAME) \
! private: \
! data_t m_##NAME; \
! public:
!
! #define CHAOS_SYSPAR_FUNCS(NAME) \
! public: \
! CHAOS_PAR_SETFUNC(NAME) \
! CHAOS_PAR_GETFUNC(NAME) \
! private: \
! data_t m_##NAME; \
! public:
!
!
! #define CHAOS_SYS_CALLBACKS(NAME) \
! FLEXT_CALLVAR_F(m_system->get_##NAME, m_system->set_##NAME);
!
! #define CHAOS_SYS_ATTRIBUTE(NAME) \
! FLEXT_ADDATTR_VAR(#NAME,m_system->get_##NAME, m_system->set_##NAME);
! #define CHAOS_SYS_INIT(NAME, VALUE) \
! set_##NAME(VALUE);
- #define CHAOS_PARAMETER(NAME) m_##NAME
--- 49,62 ----
#define CHAOS_CALLBACKS \
public: \
! void get_dimension(int &i) \
! { \
! i = m_system->get_num_eq(); \
! } \
! FLEXT_CALLGET_I(get_dimension);
! #define CHAOS_ATTRIBUTES \
! FLEXT_ADDATTR_GET("dimension",get_dimension);
Index: chaos.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/chaos/src/chaos.hpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** chaos.hpp 23 Dec 2004 10:07:17 -0000 1.2
--- chaos.hpp 24 Dec 2004 15:31:14 -0000 1.3
***************
*** 23,27 ****
#define FLEXT_ATTRIBUTES 1
! //#include "flext.h"
/* internal we can work with a higher precision than pd */
--- 23,27 ----
#define FLEXT_ATTRIBUTES 1
! #include "flext.h"
/* internal we can work with a higher precision than pd */
***************
*** 32,35 ****
--- 32,36 ----
#endif
+
#define __chaos_hpp
#endif /* __chaos_hpp */
Index: chaos_dsp.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/chaos/src/chaos_dsp.cpp,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** chaos_dsp.cpp 21 Dec 2004 09:22:10 -0000 1.1.1.1
--- chaos_dsp.cpp 24 Dec 2004 15:31:14 -0000 1.2
***************
*** 21,193 ****
#include "chaos_dsp.hpp"
-
- void chaos_dsp::m_signal(int n, t_sample *const *insigs,
- t_sample *const *outsigs)
- {
- if (m_freq >= m_sr * 0.5)
- {
- m_signal_(n, insigs, outsigs);
- return;
- }
-
- switch (m_method)
- {
- case 0:
- m_signal_n(n, insigs, outsigs);
- return;
- case 1:
- m_signal_l(n, insigs, outsigs);
- return;
- case 2:
- m_signal_c(n, insigs, outsigs);
- return;
- }
- }
-
- void chaos_dsp::m_signal_(int n, t_sample *const *insigs,
- t_sample *const *outsigs)
- {
- int outlets = m_system->get_num_eq();
-
- for (int i = 0; i!=n; ++i)
- {
- m_system->m_step();
- for (int j = 0; j != outlets; ++j)
- {
- outsigs[j][i] = m_system->get_data(j);
- }
- }
-
- }
-
- void chaos_dsp::m_signal_n(int n, t_sample *const *insigs,
- t_sample *const *outsigs)
- {
- int outlets = m_system->get_num_eq();
-
- int phase = m_phase;
-
- int i = 0;
-
- while (n)
- {
- if (m_phase == 0)
- {
- m_system->m_step();
- phase = int (m_sr / m_freq);
- }
-
- int next = (phase < n) ? phase : n;
- n -= next;
- phase -=next;
-
- while (next--)
- {
- for (int j = 0; j != outlets; ++j)
- {
- outsigs[j][i] = m_system->get_data(j);
- }
- ++i;
- }
- }
- m_phase = phase;
- }
-
-
- /* linear and cubic interpolation adapted from supercollider by James McCartney */
-
- void chaos_dsp::m_signal_l(int n, t_sample *const *insigs,
- t_sample *const *outsigs)
- {
- int outlets = m_system->get_num_eq();
-
- int phase = m_phase;
-
- int i = 0;
-
- while (n)
- {
- if (m_phase == 0)
- {
- m_system->m_step();
- phase = int (m_sr / m_freq);
-
- for (int j = 0; j != outlets; ++j)
- m_slopes[j] = (m_system->get_data(j) - m_values[j]) / phase;
- }
-
- int next = (phase < n) ? phase : n;
- n -= next;
- phase -=next;
-
- while (next--)
- {
- for (int j = 0; j != outlets; ++j)
- {
- outsigs[j][i] = m_values[j];
- m_values[j]+=m_slopes[j];
- }
- ++i;
- }
- }
- m_phase = phase;
- }
-
-
- void chaos_dsp::m_signal_c(int n, t_sample *const *insigs,
- t_sample *const *outsigs)
- {
- int outlets = m_system->get_num_eq();
-
- int phase = m_phase;
-
- int i = 0;
-
- while (n)
- {
- if (m_phase == 0)
- {
- m_system->m_step();
- phase = int (m_sr / m_freq);
- phase = (phase > 2) ? phase : 2;
-
- for (int j = 0; j != outlets; ++j)
- {
- t_sample value = m_nextvalues[j];
- m_nextvalues[j]= m_system->get_data(j);
-
- m_values[j] = m_nextmidpts[j];
- m_nextmidpts[j] = (m_values[j] + value) * 0.5f;
-
- float fseglen = (float)phase;
- m_curves[j] = 2.f * (m_nextmidpts[j] - m_values[j] - fseglen * m_slopes[j])
- / (fseglen * fseglen + fseglen);
-
- m_values[j] = value;
- }
- }
-
- int next = (phase < n) ? phase : n;
- n -= next;
- phase -=next;
-
- while (next--)
- {
- for (int j = 0; j != outlets; ++j)
- {
- outsigs[j][i] = m_values[j];
- m_slopes[j]+=m_curves[j];
- m_values[j]+=m_slopes[j];
- }
- ++i;
- }
- }
- m_phase = phase;
- }
-
-
- void chaos_dsp::m_dsp(int n, t_sample *const *insigs,
- t_sample *const *outsigs)
- {
- m_sr = Samplerate();
- }
--- 21,22 ----
Index: Makefile.am
===================================================================
RCS file: /cvsroot/pure-data/externals/chaos/src/Makefile.am,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** Makefile.am 21 Dec 2004 09:22:10 -0000 1.1.1.1
--- Makefile.am 24 Dec 2004 15:31:14 -0000 1.2
***************
*** 1,5 ****
! NAME = chaos~
! BUILT_SOURCES = main.cpp ode_base.cpp chaos_base.cpp chaos_dsp.cpp
--- 1,6 ----
! NAME = chaos
! BUILT_SOURCES = main.cpp ode_base.cpp chaos_base.cpp chaos_dsp.cpp \
! lorenz_dsp.cpp
***************
*** 18,22 ****
TARGET =$(NAME). at EXTENSION@
! OBJECTS = $(patsubst %.cpp,./%. at OBJEXT@,$(BUILT_SOURCES))
SYSDIR = @SYSDIR@
--- 19,23 ----
TARGET =$(NAME). at EXTENSION@
! OBJECTS = $(patsubst %.cpp,%. at OBJEXT@,$(BUILT_SOURCES))
SYSDIR = @SYSDIR@
***************
*** 27,34 ****
all-local: $(OBJECTS)
! $(CXX) $(LDFLAGS) -shared ./*. at OBJEXT@ $(LIBS) -o ../$(TARGET)
strip --strip-unneeded ../$(TARGET)
! ./%. at OBJEXT@ : %.cpp
$(CXX) -c $(CXXFLAGS) $< -o $@
--- 28,35 ----
all-local: $(OBJECTS)
! $(CXX) $(LDFLAGS) -shared $^ $(LIBS) -o ../$(TARGET)
strip --strip-unneeded ../$(TARGET)
! %. at OBJEXT@ : %.cpp
$(CXX) -c $(CXXFLAGS) $< -o $@
***************
*** 39,43 ****
clean-local:
rm -f ../$(TARGET)
! rm -f ../obj/*
install-exec-local:
--- 40,44 ----
clean-local:
rm -f ../$(TARGET)
! rm -f ./*. at OBJEXT@
install-exec-local:
Index: ode_base.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/chaos/src/ode_base.cpp,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** ode_base.cpp 21 Dec 2004 09:22:10 -0000 1.1.1.1
--- ode_base.cpp 24 Dec 2004 15:31:14 -0000 1.2
***************
*** 84,88 ****
break;
case 2:
! rk3();
break;
}
--- 84,88 ----
break;
case 2:
! rk4();
break;
}
Index: chaos_dsp.hpp
===================================================================
RCS file: /cvsroot/pure-data/externals/chaos/src/chaos_dsp.hpp,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** chaos_dsp.hpp 21 Dec 2004 09:22:10 -0000 1.1.1.1
--- chaos_dsp.hpp 24 Dec 2004 15:31:14 -0000 1.2
***************
*** 21,30 ****
#include "chaos_base.hpp"
! class chaos_dsp
: public flext_dsp
{
FLEXT_HEADER(chaos_dsp, flext_dsp);
! protected:
/* signal functions: */
--- 21,30 ----
#include "chaos_base.hpp"
! template <class system> class chaos_dsp
: public flext_dsp
{
FLEXT_HEADER(chaos_dsp, flext_dsp);
! public:
/* signal functions: */
***************
*** 39,47 ****
virtual void m_signal(int n, t_sample *const *insigs,t_sample *const *outsigs);
- virtual void m_dsp(int n, t_sample *const *insigs,t_sample *const *outsigs);
-
/* local data for system, output and interpolation */
! chaos_base * m_system; /* the system */
t_sample * m_values; /* actual value */
--- 39,51 ----
virtual void m_signal(int n, t_sample *const *insigs,t_sample *const *outsigs);
+ virtual void m_dsp(int n, t_sample *const *insigs,t_sample *const *outsigs)
+ {
+ m_sr = Samplerate();
+ }
+
+
/* local data for system, output and interpolation */
! system * m_system; /* the system */
t_sample * m_values; /* actual value */
***************
*** 60,61 ****
--- 64,274 ----
};
+
+
+ /* create constructor / destructor */ \
+ #define CHAOS_DSP_INIT(SYSTEM, ATTRIBUTES) \
+ FLEXT_HEADER(SYSTEM##_dsp, chaos_dsp<SYSTEM>) \
+ \
+ SYSTEM##_dsp(int argc, t_atom* argv ) \
+ { \
+ m_system = new SYSTEM; \
+ \
+ int size = m_system->get_num_eq(); \
+ \
+ for (int i = 0; i != size; ++i) \
+ AddOutSignal(); \
+ \
+ m_values = new t_float[size]; \
+ m_slopes = new t_float[size]; \
+ m_nextvalues = new t_float[size]; \
+ m_nextmidpts = new t_float[size]; \
+ m_curves = new t_float[size]; \
+ \
+ m_freq = GetAFloat(argv[0]); \
+ m_method = (char)GetAFloat(argv[1]); \
+ m_phase = 0; \
+ \
+ ATTRIBUTES; \
+ } \
+ \
+ ~SYSTEM##_dsp() \
+ { \
+ delete m_system; \
+ delete m_values; \
+ delete m_slopes; \
+ delete m_nextvalues; \
+ delete m_nextmidpts; \
+ delete m_curves; \
+ }
+
+
+
+
+ template <class system>
+ void chaos_dsp<system>::m_signal(int n, t_sample *const *insigs,
+ t_sample *const *outsigs)
+ {
+ if (m_freq >= m_sr * 0.5)
+ {
+ m_signal_(n, insigs, outsigs);
+ return;
+ }
+
+ switch (m_method)
+ {
+ case 0:
+ m_signal_n(n, insigs, outsigs);
+ return;
+ case 1:
+ m_signal_l(n, insigs, outsigs);
+ return;
+ case 2:
+ m_signal_c(n, insigs, outsigs);
+ return;
+ }
+ }
+
+ template <class system>
+ void chaos_dsp<system>::m_signal_(int n, t_sample *const *insigs,
+ t_sample *const *outsigs)
+ {
+ int outlets = m_system->get_num_eq();
+
+ for (int i = 0; i!=n; ++i)
+ {
+ m_system->m_step();
+ for (int j = 0; j != outlets; ++j)
+ {
+ outsigs[j][i] = m_system->get_data(j);
+ }
+ }
+
+ }
+
+ template <class system>
+ void chaos_dsp<system>::m_signal_n(int n, t_sample *const *insigs,
+ t_sample *const *outsigs)
+ {
+ int outlets = m_system->get_num_eq();
+
+ int phase = m_phase;
+
+ int i = 0;
+
+ while (n)
+ {
+ if (m_phase == 0)
+ {
+ m_system->m_step();
+ phase = int (m_sr / m_freq);
+ }
+
+ int next = (phase < n) ? phase : n;
+ n -= next;
+ phase -=next;
+
+ while (next--)
+ {
+ for (int j = 0; j != outlets; ++j)
+ {
+ outsigs[j][i] = m_system->get_data(j);
+ }
+ ++i;
+ }
+ }
+ m_phase = phase;
+ }
+
+
+ /* linear and cubic interpolation adapted from supercollider by James McCartney */
+
+ template <class system>
+ void chaos_dsp<system>::m_signal_l(int n, t_sample *const *insigs,
+ t_sample *const *outsigs)
+ {
+ int outlets = m_system->get_num_eq();
+
+ int phase = m_phase;
+
+ int i = 0;
+
+ while (n)
+ {
+ if (m_phase == 0)
+ {
+ m_system->m_step();
+ phase = int (m_sr / m_freq);
+
+ for (int j = 0; j != outlets; ++j)
+ m_slopes[j] = (m_system->get_data(j) - m_values[j]) / phase;
+ }
+
+ int next = (phase < n) ? phase : n;
+ n -= next;
+ phase -=next;
+
+ while (next--)
+ {
+ for (int j = 0; j != outlets; ++j)
+ {
+ outsigs[j][i] = m_values[j];
+ m_values[j]+=m_slopes[j];
+ }
+ ++i;
+ }
+ }
+ m_phase = phase;
+ }
+
+
+ template <class system>
+ void chaos_dsp<system>::m_signal_c(int n, t_sample *const *insigs,
+ t_sample *const *outsigs)
+ {
+ int outlets = m_system->get_num_eq();
+
+ int phase = m_phase;
+
+ int i = 0;
+
+ while (n)
+ {
+ if (m_phase == 0)
+ {
+ m_system->m_step();
+ phase = int (m_sr / m_freq);
+ phase = (phase > 2) ? phase : 2;
+
+ for (int j = 0; j != outlets; ++j)
+ {
+ t_sample value = m_nextvalues[j];
+ m_nextvalues[j]= m_system->get_data(j);
+
+ m_values[j] = m_nextmidpts[j];
+ m_nextmidpts[j] = (m_values[j] + value) * 0.5f;
+
+ float fseglen = (float)phase;
+ m_curves[j] = 2.f * (m_nextmidpts[j] - m_values[j] - fseglen * m_slopes[j])
+ / (fseglen * fseglen + fseglen);
+
+ m_values[j] = value;
+ }
+ }
+
+ int next = (phase < n) ? phase : n;
+ n -= next;
+ phase -=next;
+
+ while (next--)
+ {
+ for (int j = 0; j != outlets; ++j)
+ {
+ outsigs[j][i] = m_values[j];
+ m_slopes[j]+=m_curves[j];
+ m_values[j]+=m_slopes[j];
+ }
+ ++i;
+ }
+ }
+ m_phase = phase;
+ }
- Previous message: [PD-cvs] externals/chaos/src bernoulli_map.hpp,1.1.1.1,1.2 bungalow_tent_map.hpp,1.1.1.1,1.2 chaos.hpp,1.1.1.1,1.2 chaos_base.hpp,1.1.1.1,1.2 circle_map.hpp,1.1.1.1,1.2 gauss_map.hpp,1.1.1.1,1.2 henon_map.hpp,1.1.1.1,1.2 ikeda_laser_map.hpp,1.1.1.1,1.2 logistic_map.hpp,1.1.1.1,1.2 lorenz.hpp,1.1.1.1,1.2 lozi_map.hpp,1.1.1.1,1.2 sine_map.hpp,1.1.1.1,1.2 standard_map.hpp,1.1.1.1,1.2 tent_map.hpp,1.1.1.1,1.2
- Next message: [PD-cvs] externals/chaos configure.ac,1.1.1.1,1.2
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Pd-cvs
mailing list