aboutsummaryrefslogtreecommitdiff
path: root/src/iem_dp.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/iem_dp.c')
-rwxr-xr-xsrc/iem_dp.c127
1 files changed, 127 insertions, 0 deletions
diff --git a/src/iem_dp.c b/src/iem_dp.c
new file mode 100755
index 0000000..5b238b2
--- /dev/null
+++ b/src/iem_dp.c
@@ -0,0 +1,127 @@
+/* For information on usage and redistribution, and for a DISCLAIMER OF ALL
+ * WARRANTIES, see the file, "LICENSE.txt," in this distribution.
+
+ * iem_dp written by IOhannes m zmoelnig, Thomas Musil,
+ * Copyright (c) IEM KUG Graz Austria 2000 - 2008 */
+
+/* iem_dp means double precision, it is a library of external pd objects */
+/* which deal with array access and delay lines */
+/* the way how objects comunicate with other objects in double precision is, */
+/* to send two values on two different outputs to two different inputs */
+/* one value is the float casted value of the original double value */
+/* the other value is the difference in double of the original minus the float casted value */
+/* the receiving inlets only cast them to double and add them */
+
+
+#include "m_pd.h"
+#include "iemlib.h"
+
+//static int delread_zero = 0; /* four bytes of zero for delread~, vd~ */
+
+t_float iem_dp_cast_to_float(double d)
+{
+ return((t_float)d);
+}
+
+double iem_dp_cast_to_double(t_float f)
+{
+ return((double)f);
+}
+
+t_float iem_dp_calc_residual(double d, t_float f)
+{
+ return(iem_dp_cast_to_float(d - iem_dp_cast_to_double(f)));
+}
+
+double iem_dp_calc_sum(t_float f, t_float r)
+{
+ return(iem_dp_cast_to_double(f) + iem_dp_cast_to_double(r));
+}
+
+static t_class *iem_dp_class;
+
+static void *iem_dp_new(void)
+{
+ t_object *x = (t_object *)pd_new(iem_dp_class);
+
+ return (x);
+}
+
+
+void ftohex_setup(void);
+void symtodp_setup(void);
+void dptosym_setup(void);
+void dptohex_setup(void);
+void vline_tilde_tilde_setup(void);
+void samphold_tilde_tilde_setup(void);
+void wrap_tilde_tilde_setup(void);
+void phasor_tilde_tilde_setup(void);
+void print_tilde_tilde_setup(void);
+void add___setup(void);
+void sub___setup(void);
+void mul___setup(void);
+void div___setup(void);
+void add_tilde_tilde_setup(void);
+void sub_tilde_tilde_setup(void);
+void mul_tilde_tilde_setup(void);
+void div_tilde_tilde_setup(void);
+void tabwrite_dp_setup(void);
+void tabread_dp_setup(void);
+void tabread4_dp_setup(void);
+void tabwrite_tilde_tilde_setup(void);
+void tabread_tilde_tilde_setup(void);
+void tabread4_tilde_tilde_setup(void);
+void max_dp_setup(void);
+void min_dp_setup(void);
+void max_tilde_tilde_setup(void);
+void min_tilde_tilde_setup(void);
+void random_dp_setup(void);
+void delay_tilde_tilde_setup(void);
+//void listtodp_setup(void);
+//void dqnsymtodp_setup(void);
+//void dptodqnsym_setup(void);
+
+/* ------------------------ setup routine ------------------------- */
+
+void iem_dp_setup(void)
+{
+ iem_dp_class = class_new(gensym("iem_dp"), iem_dp_new, 0,
+ sizeof(t_object), CLASS_NOINLET, 0);
+
+ ftohex_setup();
+ symtodp_setup();
+ dptosym_setup();
+ dptohex_setup();
+ vline_tilde_tilde_setup();
+ samphold_tilde_tilde_setup();
+ wrap_tilde_tilde_setup();
+ phasor_tilde_tilde_setup();
+ print_tilde_tilde_setup();
+ add___setup();
+ sub___setup();
+ mul___setup();
+ div___setup();
+ add_tilde_tilde_setup();
+ sub_tilde_tilde_setup();
+ mul_tilde_tilde_setup();
+ div_tilde_tilde_setup();
+ tabwrite_dp_setup();
+ tabread_dp_setup();
+ tabread4_dp_setup();
+ tabwrite_tilde_tilde_setup();
+ tabread_tilde_tilde_setup();
+ tabread4_tilde_tilde_setup();
+ max_dp_setup();
+ min_dp_setup();
+ max_tilde_tilde_setup();
+ min_tilde_tilde_setup();
+ random_dp_setup();
+ delay_tilde_tilde_setup();
+// listtodp_setup();
+// dqnsymtodp_setup();
+// dptodqnsym_setup();
+
+ post("iem_dp (R-1.19) library loaded! (c) IOhannes m zmoelnig, Thomas Musil 06.2013");
+ post(" zmoelnig%ciem.at iem KUG Graz Austria", '@');
+ post(" musil%ciem.at iem KUG Graz Austria", '@');
+}