diff --git a/externals/iemlib/Make.include b/externals/iemlib/Make.include index 13c6c2ff791055ddf240e69bc779c797cfcc62c6..aaca607a99c8d58bd28d9224f5294d2effbcd516 100644 --- a/externals/iemlib/Make.include +++ b/externals/iemlib/Make.include @@ -1,25 +1,39 @@ current: all +PD_DEFINES = -DPD -DUNIX + +################################# +# path to private Pd-headers PDSOURCE ?= /usr/local/src/pd/src +# path to iemlib.h +IEMLIB_INCLUDE = ../../include + +#define to true if private Pd-header g_canvas.h is in out search-path +PD_DEFINES += -DHAVE_G_CANVAS_H +################################# + + .SUFFIXES: .pd_linux EXT = pd_linux -LDFLAGS = --export-dynamic -shared -LIB = -ldl -lm -lpthread +STRIP = strip + +PD_LDFLAGS = --export-dynamic -shared $(LD_FLAGS) +PD_LIB = -lm -lc $(LIB) #select either the DBG and OPT compiler flags below: -CFLAGS = -DPD -DUNIX -W -Werror -Wno-unused \ - -Wno-parentheses -Wno-switch -O6 -funroll-loops -fomit-frame-pointer -fno-strict-aliasing \ - -DDL_OPEN -fPIC -fno-stack-protector +DBG_CFLAGS=-W -Wno-parentheses -Wno-switch -Wno-unused +CFLAGS=-O6 -funroll-loops -fomit-frame-pointer -fno-strict-aliasing +PD_CFLAGS = $(PD_DEFINES) -fPIC -fno-stack-protector $(DBG_CFLAGS) $(CFLAGS) -INCLUDE = -I. -I$(PDSOURCE) +PD_INCLUDES = -I. -I$(IEMLIB_INCLUDE) -I$(PDSOURCE) -I../../../../pd/src # the sources -SRC = $(sort $(filter %.c, $(wildcard *.c))) - +#SRC = $(sort $(filter %.c, $(wildcard *.c))) + OBJ = $(SRC:.c=.o) # @@ -27,19 +41,16 @@ OBJ = $(SRC:.c=.o) # clean: - -rm ../../lib/$(TARGET).$(EXT) $(TARGET).$(EXT) - -rm *.o + -rm -f ../../lib/$(TARGET).$(EXT) $(TARGET).$(EXT) + -rm -f *.o all: $(OBJ) @echo :: $(OBJ) - ld $(LDFLAGS) -o $(TARGET).$(EXT) *.o $(LIB) - strip --strip-unneeded $(TARGET).$(EXT) + $(LD) $(PD_LDFLAGS) -o $(TARGET).$(EXT) *.o $(PD_LIB) + $(STRIP) --strip-unneeded $(TARGET).$(EXT) -cp $(TARGET).$(EXT) ../../lib/ $(OBJ) : %.o : %.c touch $*.c - cc $(CFLAGS) $(INCLUDE) -c -o $*.o $*.c - - - + $(CC) $(PD_CFLAGS) $(PD_INCLUDES) -c -o $*.o $*.c diff --git a/externals/iemlib/Makefile b/externals/iemlib/Makefile index ebd1129d2bb632d66ae06f316b2c29350ec3d3ad..37ca2eea1195559d8df35bda371922a5d099dece 100644 --- a/externals/iemlib/Makefile +++ b/externals/iemlib/Makefile @@ -22,22 +22,22 @@ $(IEMLIBS): install: install-bin install-doc install-abs install-bin: - -install -d ${INSTALL_BIN} - -install -m 644 lib/*.* $(INSTALL_BIN) + -install -d $(DESTDIR)$(INSTALL_BIN) + -install -m 644 lib/*.* $(DESTDIR)$(INSTALL_BIN) install-doc: - -install -d ${INSTALL_DOC} - -for d in ${IEMLIBS}; do \ + -install -d $(DESTDIR)$(INSTALL_DOC) + -for d in $(IEMLIBS); do \ for e in pd wav; do \ - install -m644 $$d/*.$$e $(INSTALL_DOC); \ + install -m644 $$d/*.$$e $(DESTDIR)$(INSTALL_DOC); \ done; \ done install-abs: - -install -d ${INSTALL_BIN} - -install -m 644 iemabs/*.pd $(INSTALL_BIN) + -install -d $(DESTDIR)$(INSTALL_BIN) + -install -m 644 iemabs/*.pd $(DESTDIR)$(INSTALL_BIN) clean: - for d in ${IEMLIBS}; do \ - ${MAKE} -C $$d/src clean; \ + for d in $(IEMLIBS); do \ + $(MAKE) -C $$d/src clean; \ done diff --git a/externals/iemlib/alias/ii.c b/externals/iemlib/alias/ii.c new file mode 100644 index 0000000000000000000000000000000000000000..cf959fde62416172e4995baca85883e5dba6c033 --- /dev/null +++ b/externals/iemlib/alias/ii.c @@ -0,0 +1,5 @@ +#include "../iemlib2/src/init.c" +void ii_setup() +{ + init_setup(); +} diff --git a/externals/iemlib/alias/tm.c b/externals/iemlib/alias/tm.c new file mode 100644 index 0000000000000000000000000000000000000000..cfe60989010d59242451b845da8fbfe357d6184b --- /dev/null +++ b/externals/iemlib/alias/tm.c @@ -0,0 +1,5 @@ +#include "../iemlib2/src/toggle_mess.c" +void tm_setup() +{ + toggle_mess_setup(); +} diff --git a/externals/iemlib/alias/unsym.c b/externals/iemlib/alias/unsym.c new file mode 100644 index 0000000000000000000000000000000000000000..19cd0d92fb51ff113a0196c39aa2fcb64452fe9d --- /dev/null +++ b/externals/iemlib/alias/unsym.c @@ -0,0 +1,5 @@ +#include "../iemlib2/src/unsymbol.c" +void unsym_setup() +{ + unsymbol_setup(); +} diff --git a/externals/iemlib/iem_mp3/src/makefile b/externals/iemlib/iem_mp3/src/makefile index 700376d244a88eda9812ec18f4fe44da2df90826..ff92c1fab0ecfd031ae7beedb78aacb8b4beaaeb 100644 --- a/externals/iemlib/iem_mp3/src/makefile +++ b/externals/iemlib/iem_mp3/src/makefile @@ -1,4 +1,8 @@ TARGET = iem_mp3 + +SRC = mp3play~.c \ + $(TARGET).c + include ../../Make.include diff --git a/externals/iemlib/iem_mp3/src/makefile_d_fat b/externals/iemlib/iem_mp3/src/makefile_d_fat index 8d6ef57ac871530a9570faea7cb5e4cbac53eb05..146331771875ca0da2fd747390b35045abb0fe53 100644 --- a/externals/iemlib/iem_mp3/src/makefile_d_fat +++ b/externals/iemlib/iem_mp3/src/makefile_d_fat @@ -1,16 +1,22 @@ -current: all - +current: all + .SUFFIXES: .d_fat -PD_INSTALL_PATH ?= "/Applications/Pd.app/Contents/Resources" - -INCLUDE = -I. -I$(PD_INSTALL_PATH)/src - -CFLAGS =-DPD -O2 -Wall -W -Wshadow -Wstrict-prototypes \ - -Wno-unused -Wno-parentheses -Wno-switch - -LFLAGS = -bundle -undefined suppress -flat_namespace - +PDSOURCE = "/Applications/Pd.app/Contents/Resources/src" + +IEMLIB_INCLUDE = ../../include + +PD_INCLUDES = -I. -I$(IEMLIB_INCLUDE) -I$(PDSOURCE) + +PD_DEFINES = -DPD + +CFLAGS =-O2 -Wall -W -Wshadow -Wstrict-prototypes \ + -Wno-unused -Wno-parentheses -Wno-switch -fPIC + +LFLAGS = -bundle -undefined suppress -flat_namespace + +ARCH_FLAGS=-arch i386 -arch ppc + # the sources SRC = mp3play~.c \ @@ -19,26 +25,23 @@ SRC = mp3play~.c \ TARGET = iem_mp3.d_fat -OBJ = $(SRC:.c=.o) - -# -# ------------------ targets ------------------------------------ -# - -clean: - rm ../$(TARGET) - rm *.o - -all: $(OBJ) - @echo :: $(OBJ) - $(CC) -arch i386 -arch ppc $(LFLAGS) -o $(TARGET) *.o - strip -S -x $(TARGET) - mv $(TARGET) .. - -$(OBJ) : %.o : %.c - touch $*.c - $(CC) -arch i386 -arch ppc $(CFLAGS) $(INCLUDE) -c -o $*.o $*.c +OBJ = $(SRC:.c=.o) + +# +# ------------------ targets ------------------------------------ +# + +clean: + rm -f ../$(TARGET) + rm -f *.o +all: $(OBJ) + @echo :: $(OBJ) + $(CC) $(ARCH_FLAGS) $(LFLAGS) -o $(TARGET) *.o + strip -S -x $(TARGET) + mv $(TARGET) .. +$(OBJ) : %.o : %.c + $(CC) $(ARCH_FLAGS) $(PD_DEFINES) $(CFLAGS) $(PD_INCLUDES) -c -o $*.o $*.c diff --git a/externals/iemlib/iem_mp3/src/makefile_linux b/externals/iemlib/iem_mp3/src/makefile_linux deleted file mode 100644 index 4fe23a43fb4e6994fb15e76b1e4fd65423147264..0000000000000000000000000000000000000000 --- a/externals/iemlib/iem_mp3/src/makefile_linux +++ /dev/null @@ -1,47 +0,0 @@ -current: all - -.SUFFIXES: .pd_linux - -INCLUDE = -I. -I/usr/local/src/pd/src - -LDFLAGS = -export-dynamic -shared -LIB = -ldl -lm -lpthread - -#select either the DBG and OPT compiler flags below: - -CFLAGS = -DPD -DUNIX -W -Werror -Wno-unused \ - -Wno-parentheses -Wno-switch -O6 -funroll-loops -fomit-frame-pointer -fno-strict-aliasing \ - -DDL_OPEN -fPIC - -SYSTEM = $(shell uname -m) - -# the sources - -SRC = mp3play~.c \ - iem_mp3.c - -TARGET = iem_mp3.pd_linux - - -OBJ = $(SRC:.c=.o) - -# -# ------------------ targets ------------------------------------ -# - -clean: - rm ../$(TARGET) - rm *.o - -all: $(OBJ) - @echo :: $(OBJ) - $(LD) $(LDFLAGS) -o $(TARGET) *.o $(LIB) - strip --strip-unneeded $(TARGET) - mv $(TARGET) .. - -$(OBJ) : %.o : %.c - $(CC) $(CFLAGS) $(INCLUDE) -c -o $*.o $*.c - - - - diff --git a/externals/iemlib/iem_t3_lib/src/iemlib.h b/externals/iemlib/iem_t3_lib/src/iemlib.h deleted file mode 100644 index 973bfebcd9f46088839bbf5c7af217bc51714dba..0000000000000000000000000000000000000000 --- a/externals/iemlib/iem_t3_lib/src/iemlib.h +++ /dev/null @@ -1,102 +0,0 @@ -/* For information on usage and redistribution, and for a DISCLAIMER OF ALL -* WARRANTIES, see the file, "LICENSE.txt," in this distribution. - -iemlib written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2007 */ - -#ifndef __IEMLIB_H__ -#define __IEMLIB_H__ - - -#define IS_A_POINTER(atom,index) ((atom+index)->a_type == A_POINTER) -#define IS_A_FLOAT(atom,index) ((atom+index)->a_type == A_FLOAT) -#define IS_A_SYMBOL(atom,index) ((atom+index)->a_type == A_SYMBOL) -#define IS_A_DOLLAR(atom,index) ((atom+index)->a_type == A_DOLLAR) -#define IS_A_DOLLSYM(atom,index) ((atom+index)->a_type == A_DOLLSYM) -#define IS_A_SEMI(atom,index) ((atom+index)->a_type == A_SEMI) -#define IS_A_COMMA(atom,index) ((atom+index)->a_type == A_COMMA) - -/* now miller's code starts : - for 4 point interpolation - for lookup tables - for denormal floats - */ - -#ifdef MSW -int sys_noloadbang; -//t_symbol *iemgui_key_sym=0; -#include <io.h> -#else -extern int sys_noloadbang; -//extern t_symbol *iemgui_key_sym; -#include <unistd.h> -#endif - -#define DEFDELVS 64 -#define XTRASAMPS 4 -#define SAMPBLK 4 - -#define UNITBIT32 1572864. /* 3*2^19; bit 32 has place value 1 */ - - /* machine-dependent definitions. These ifdefs really - should have been by CPU type and not by operating system! */ -#ifdef IRIX - /* big-endian. Most significant byte is at low address in memory */ -#define HIOFFSET 0 /* word offset to find MSB */ -#define LOWOFFSET 1 /* word offset to find LSB */ -#define int32 long /* a data type that has 32 bits */ -#endif /* IRIX */ - -#ifdef MSW - /* little-endian; most significant byte is at highest address */ -#define HIOFFSET 1 -#define LOWOFFSET 0 -#define int32 long -#endif /* MSW */ - -#if defined(__FreeBSD__) || defined(__APPLE__) -#include <machine/endian.h> -#endif - -#ifdef __linux__ -#include <endian.h> -#endif - -#if defined(__unix__) || defined(__APPLE__) -#if !defined(BYTE_ORDER) || !defined(LITTLE_ENDIAN) -#error No byte order defined -#endif - -#if BYTE_ORDER == LITTLE_ENDIAN -#define HIOFFSET 1 -#define LOWOFFSET 0 -#else -#define HIOFFSET 0 /* word offset to find MSB */ -#define LOWOFFSET 1 /* word offset to find LSB */ -#endif /* __BYTE_ORDER */ -#include <sys/types.h> -#define int32 int32_t -#endif /* __unix__ or __APPLE__*/ - -union tabfudge_d -{ - double tf_d; - int32 tf_i[2]; -}; - -union tabfudge_f -{ - float tf_f; - long tf_l; -}; - -#if defined __i386__ || defined __x86_64__ -#define IEM_DENORMAL(f) ((((*(unsigned int*)&(f))&0x60000000)==0) || \ -(((*(unsigned int*)&(f))&0x60000000)==0x60000000)) -/* more stringent test: anything not between 1e-19 and 1e19 in absolute val */ -#else - -#define IEM_DENORMAL(f) 0 - -#endif - -#endif diff --git a/externals/iemlib/iem_t3_lib/src/makefile b/externals/iemlib/iem_t3_lib/src/makefile index 597ccdf680131a4395236d9c734e491c63f7f819..1aff688721f7d691c6d25796122d1c97192755d7 100644 --- a/externals/iemlib/iem_t3_lib/src/makefile +++ b/externals/iemlib/iem_t3_lib/src/makefile @@ -1,4 +1,13 @@ TARGET = iem_t3_lib + +SRC = t3_bpe.c \ + t3_delay.c \ + t3_line~.c \ + t3_metro.c \ + t3_sig~.c \ + t3_timer.c \ + $(TARGET).c + include ../../Make.include diff --git a/externals/iemlib/iem_t3_lib/src/makefile_d_fat b/externals/iemlib/iem_t3_lib/src/makefile_d_fat index 120068b3d7b10c1970e17eca9b8fd92c16759479..8ac96a1eecde1984f2c6ce13e72f19779887bac4 100644 --- a/externals/iemlib/iem_t3_lib/src/makefile_d_fat +++ b/externals/iemlib/iem_t3_lib/src/makefile_d_fat @@ -1,16 +1,22 @@ -current: all - +current: all + .SUFFIXES: .d_fat -PD_INSTALL_PATH ?= "/Applications/Pd.app/Contents/Resources" - -INCLUDE = -I. -I$(PD_INSTALL_PATH)/src - -CFLAGS =-DPD -O2 -Wall -W -Wshadow -Wstrict-prototypes \ - -Wno-unused -Wno-parentheses -Wno-switch - -LFLAGS = -bundle -undefined suppress -flat_namespace - +PDSOURCE = "/Applications/Pd.app/Contents/Resources/src" + +IEMLIB_INCLUDE = ../../include + +PD_INCLUDES = -I. -I$(IEMLIB_INCLUDE) -I$(PDSOURCE) + +PD_DEFINES = -DPD + +CFLAGS =-O2 -Wall -W -Wshadow -Wstrict-prototypes \ + -Wno-unused -Wno-parentheses -Wno-switch -fPIC + +LFLAGS = -bundle -undefined suppress -flat_namespace + +ARCH_FLAGS=-arch i386 -arch ppc + # the sources SRC = t3_bpe.c \ @@ -24,26 +30,23 @@ SRC = t3_bpe.c \ TARGET = iem_t3_lib.d_fat -OBJ = $(SRC:.c=.o) - -# -# ------------------ targets ------------------------------------ -# - -clean: - rm ../$(TARGET) - rm *.o - -all: $(OBJ) - @echo :: $(OBJ) - $(CC) -arch i386 -arch ppc $(LFLAGS) -o $(TARGET) *.o - strip -S -x $(TARGET) - mv $(TARGET) .. - -$(OBJ) : %.o : %.c - touch $*.c - $(CC) -arch i386 -arch ppc $(CFLAGS) $(INCLUDE) -c -o $*.o $*.c +OBJ = $(SRC:.c=.o) + +# +# ------------------ targets ------------------------------------ +# + +clean: + rm -f ../$(TARGET) + rm -f *.o +all: $(OBJ) + @echo :: $(OBJ) + $(CC) $(ARCH_FLAGS) $(LFLAGS) -o $(TARGET) *.o + strip -S -x $(TARGET) + mv $(TARGET) .. +$(OBJ) : %.o : %.c + $(CC) $(ARCH_FLAGS) $(PD_DEFINES) $(CFLAGS) $(PD_INCLUDES) -c -o $*.o $*.c diff --git a/externals/iemlib/iem_t3_lib/src/makefile_linux b/externals/iemlib/iem_t3_lib/src/makefile_linux deleted file mode 100644 index aac782606ec8b24b2175f35564b652cb6d9d0b69..0000000000000000000000000000000000000000 --- a/externals/iemlib/iem_t3_lib/src/makefile_linux +++ /dev/null @@ -1,52 +0,0 @@ -current: all - -.SUFFIXES: .pd_linux - -INCLUDE = -I. -I/usr/local/src/pd/src - -LDFLAGS = -export-dynamic -shared -LIB = -ldl -lm -lpthread - -#select either the DBG and OPT compiler flags below: - -CFLAGS = -DPD -DUNIX -W -Werror -Wno-unused \ - -Wno-parentheses -Wno-switch -O6 -funroll-loops -fomit-frame-pointer -fno-strict-aliasing \ - -DDL_OPEN -fPIC - -SYSTEM = $(shell uname -m) - -# the sources - -SRC = t3_bpe.c \ - t3_delay.c \ - t3_line~.c \ - t3_metro.c \ - t3_sig~.c \ - t3_timer.c \ - iem_t3_lib.c - -TARGET = iem_t3_lib.pd_linux - - -OBJ = $(SRC:.c=.o) - -# -# ------------------ targets ------------------------------------ -# - -clean: - rm ../$(TARGET) - rm *.o - -all: $(OBJ) - @echo :: $(OBJ) - $(LD) $(LDFLAGS) -o $(TARGET) *.o $(LIB) - strip --strip-unneeded $(TARGET) - mv $(TARGET) .. - -$(OBJ) : %.o : %.c - $(CC) $(CFLAGS) $(INCLUDE) -c -o $*.o $*.c - - - - diff --git a/externals/iemlib/iemabs/ap1_dp~-help.pd b/externals/iemlib/iemabs/ap1_dp~-help.pd new file mode 100644 index 0000000000000000000000000000000000000000..7b2db6577474b6b370206e2be46d786f75f66399 --- /dev/null +++ b/externals/iemlib/iemabs/ap1_dp~-help.pd @@ -0,0 +1,62 @@ +#N canvas 375 118 410 467 10; +#X text 3 233 ~signal_in~; +#X text 28 48 dsp ON/OFF; +#X floatatom 79 164 3 15 133 0 - - -; +#X obj 79 185 mtof; +#X floatatom 79 206 9 0 22000 0 - - -; +#X text 149 205 Hz; +#X text 58 262 ~signal_out~; +#X floatatom 45 332 7 0 0 0 - - -; +#X text 203 290 dB; +#X floatatom 110 163 9 0 22000 0 - - -; +#X text 180 163 Hz; +#X floatatom 46 119 3 15 133 0 - - -; +#X floatatom 11 88 5 0 0 0 - - -; +#X text 46 87 % cpu; +#X floatatom 128 227 5 2 9999 0 - - -; +#X text 171 226 ms; +#X obj 11 68 dsp; +#X obj 11 48 tgl 15 0 empty empty empty 8 -8 0 10 -262144 -1 -1 1 1 +; +#X obj 46 309 gainvu~ 300; +#X obj 203 167 vu 15 120 empty empty 8 -8 0 10 -66577 -1 1 0; +#X obj 259 178 vsl 15 128 0 127 0 1 empty empty empty 8 -8 0 10 -262144 +-1 -1 8000 1; +#X obj 46 141 testtone~ 200; +#X obj 115 101 init 69; +#X text 73 120 midi; +#X text 15 362 2.arg:<float> interpolation_time [ms]; +#X text 15 352 1.arg:<float> -90_degree_freq. [Hz]; +#X obj 14 266 +~; +#X obj 14 287 *~ 0.5; +#X text 58 287 (like lp1~); +#X floatatom 234 327 7 0 0 0 - - -; +#X text 291 328 dB; +#X obj 13 19 cnv 8 1 1 empty empty ap1_dp~ 1 2 1 18 -262144 -1109 0 +; +#X text 184 414 IEM KUG; +#X text 162 402 musil; +#X text 198 402 @; +#X text 206 402 iem.at; +#X text 167 424 Graz \, Austria; +#X text 119 391 (c) Thomas Musil 2000 - 2010; +#X text 120 13 allpass 1.order with double precision; +#X obj 46 248 ap1_dp~ 440 200; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 4 0 39 1; +#X connect 11 0 21 0; +#X connect 14 0 39 2; +#X connect 16 0 12 0; +#X connect 17 0 16 0; +#X connect 18 1 29 0; +#X connect 18 2 19 0; +#X connect 19 1 7 0; +#X connect 20 0 18 1; +#X connect 21 0 26 0; +#X connect 21 0 39 0; +#X connect 21 1 9 0; +#X connect 22 0 11 0; +#X connect 26 0 27 0; +#X connect 27 0 18 0; +#X connect 39 0 26 1; diff --git a/externals/iemlib/iemabs/ap1_dp~.pd b/externals/iemlib/iemabs/ap1_dp~.pd new file mode 100644 index 0000000000000000000000000000000000000000..ac9f5aa678c652f2a1a5e6ecd8efc5e7123eaed8 --- /dev/null +++ b/externals/iemlib/iemabs/ap1_dp~.pd @@ -0,0 +1,24 @@ +#N canvas 256 230 453 306 10; +#X obj 22 42 inlet~; +#X obj 52 65 inlet; +#X obj 22 186 outlet~; +#X text 62 42 ~signal_in~; +#X obj 143 100 inlet; +#X text 178 101 <float> interpolation_time [ms]; +#X text 28 157 ~filtered signal_out~; +#X text 89 64 <float> -90_degree_frequency [Hz]; +#X text 84 182 1.arg: <float> -90_degree_frequency [Hz]; +#X text 84 193 2.arg: <float> interpolation_time [ms] (opt.); +#X text 176 245 IEM KUG; +#X text 154 233 musil; +#X text 190 233 @; +#X text 199 233 iem.at; +#X text 159 255 Graz \, Austria; +#X obj 22 133 filter~ dap1 \$1 1 0 \$2; +#X text 11 9 ap1_dp~; +#X text 83 10 allpass 1.order with double precision; +#X text 111 222 (c) Thomas Musil 2000 - 2010; +#X connect 0 0 15 0; +#X connect 1 0 15 1; +#X connect 4 0 15 4; +#X connect 15 0 2 0; diff --git a/externals/iemlib/iemabs/ap2_dp~-help.pd b/externals/iemlib/iemabs/ap2_dp~-help.pd new file mode 100644 index 0000000000000000000000000000000000000000..8a5bbbb8201b26ec2bccde3341643b308f436a2d --- /dev/null +++ b/externals/iemlib/iemabs/ap2_dp~-help.pd @@ -0,0 +1,66 @@ +#N canvas 375 118 402 502 10; +#X text 9 240 ~signal_in~; +#X text 34 40 dsp ON/OFF; +#X floatatom 83 150 3 15 133 0 - - -; +#X obj 83 172 mtof; +#X floatatom 83 193 9 0 22000 0 - - -; +#X text 154 193 Hz; +#X text 55 270 ~signal_out~; +#X floatatom 20 341 7 0 0 0 - - -; +#X text 76 341 dB; +#X floatatom 123 151 9 0 22000 0 - - -; +#X text 194 152 Hz; +#X floatatom 52 111 3 15 133 0 - - -; +#X floatatom 17 80 5 0 0 0 - - -; +#X text 62 80 % cpu; +#X floatatom 145 233 5 2 9999 0 - - -; +#X text 188 233 ms; +#X obj 17 60 dsp; +#X floatatom 114 213 4 0.01 1000 0 - - -; +#X text 154 212 Q; +#X text 57 372 2.arg:<float> Q [-]; +#X text 57 382 3.arg:<float> interpolation_time [ms]; +#X obj 17 40 tgl 15 0 empty empty empty 8 -8 0 10 -262144 -1 -1 1 1 +; +#X obj 20 319 gainvu~ 300; +#X obj 214 194 vu 15 120 empty empty 8 -8 0 10 -66577 -1 1 0; +#X obj 275 188 vsl 15 128 0 127 0 1 empty empty empty 8 -8 0 10 -262144 +-1 -1 8000 1; +#X obj 52 130 testtone~ 200; +#X obj 120 93 init 69; +#X text 79 112 midi; +#X text 57 362 1.arg:<float> -180_degree_freq. [Hz]; +#X obj 20 276 +~; +#X obj 20 298 *~ 0.5; +#X text 64 297 (like bs2~); +#X floatatom 241 337 7 0 0 0 - - -; +#X text 298 338 dB; +#X obj 12 15 cnv 8 1 1 empty empty ap2_dp~ 1 2 1 18 -262144 -1109 0 +; +#X text 184 444 IEM KUG; +#X text 163 432 musil; +#X text 198 432 @; +#X text 205 432 iem.at; +#X text 167 454 Graz \, Austria; +#X text 119 421 (c) Thomas Musil 2000 - 2010; +#X text 98 8 allpass 2.order with double precision; +#X obj 52 255 ap2_dp~ 440 2 200; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 4 0 42 1; +#X connect 11 0 25 0; +#X connect 14 0 42 3; +#X connect 16 0 12 0; +#X connect 17 0 42 2; +#X connect 21 0 16 0; +#X connect 22 1 32 0; +#X connect 22 2 23 0; +#X connect 23 1 7 0; +#X connect 24 0 22 1; +#X connect 25 0 29 0; +#X connect 25 0 42 0; +#X connect 25 1 9 0; +#X connect 26 0 11 0; +#X connect 29 0 30 0; +#X connect 30 0 22 0; +#X connect 42 0 29 1; diff --git a/externals/iemlib/iemabs/ap2_dp~.pd b/externals/iemlib/iemabs/ap2_dp~.pd new file mode 100644 index 0000000000000000000000000000000000000000..a1ab774723cc3bbfd2bee9aaf1d72bd8e0038171 --- /dev/null +++ b/externals/iemlib/iemabs/ap2_dp~.pd @@ -0,0 +1,28 @@ +#N canvas 269 270 379 285 10; +#X obj 22 42 inlet~; +#X obj 53 63 inlet; +#X obj 22 186 outlet~; +#X text 62 42 ~signal_in~; +#X obj 85 88 inlet; +#X text 184 113 <float> interpolation_time [ms]; +#X text 32 153 ~filtered signal_out~; +#X obj 149 113 inlet; +#X text 121 88 <float> quality [-]; +#X text 89 65 <float> -180_degree_frequency [Hz]; +#X text 82 174 1.arg: <float> -180_degree_frequency [Hz]; +#X text 82 183 2.arg: <float> quality [-]; +#X text 82 193 3.arg: <float> interpolation_time [ms] (opt.); +#X text 176 245 IEM KUG; +#X text 153 233 musil; +#X text 190 233 @; +#X text 199 233 iem.at; +#X text 159 255 Graz \, Austria; +#X text 73 10 allpass 2.order with double precision; +#X text 12 9 ap2_dp~; +#X obj 22 134 filter~ dap2 \$1 \$2 1 \$3; +#X text 111 222 (c) Thomas Musil 2000 - 2010; +#X connect 0 0 20 0; +#X connect 1 0 20 1; +#X connect 4 0 20 2; +#X connect 7 0 20 4; +#X connect 20 0 2 0; diff --git a/externals/iemlib/iemabs/bp2_dp~.pd b/externals/iemlib/iemabs/bp2_dp~.pd new file mode 100644 index 0000000000000000000000000000000000000000..3b85ddc93ee0d8d93be49713990fa79af466a2b7 --- /dev/null +++ b/externals/iemlib/iemabs/bp2_dp~.pd @@ -0,0 +1,29 @@ +#N canvas 319 273 417 319 10; +#X obj 22 42 inlet~; +#X obj 55 63 inlet; +#X obj 22 186 outlet~; +#X text 62 42 ~signal_in~; +#X obj 88 89 inlet; +#X text 190 112 <float> interpolation_time [ms]; +#X text 32 153 ~filtered signal_out~; +#X obj 155 112 inlet; +#X text 92 64 <float> center_frequency [Hz]; +#X text 124 89 <float> Q [-]; +#X text 85 176 1.arg: <float> center_frequency [Hz]; +#X text 85 185 2.arg: <float> Q [-]; +#X text 85 194 3.arg: <float> interpolation_time [ms] (opt.); +#X text 176 245 IEM KUG; +#X text 154 233 musil; +#X text 190 233 @; +#X text 199 233 iem.at; +#X text 159 255 Graz \, Austria; +#X obj 22 134 filter~ dbpq2 \$1 \$2 1 \$3; +#X text 111 222 (c) Thomas Musil 2000 - 2010; +#X text 12 9 bp2_dp~; +#X text 99 24 with double precision; +#X text 70 10 bandpass 2.order with Q-inlet (like bpq2_dp~); +#X connect 0 0 18 0; +#X connect 1 0 18 1; +#X connect 4 0 18 2; +#X connect 7 0 18 4; +#X connect 18 0 2 0; diff --git a/externals/iemlib/iemabs/bpq2_dp~-help.pd b/externals/iemlib/iemabs/bpq2_dp~-help.pd new file mode 100644 index 0000000000000000000000000000000000000000..01bc657d691220cb9b1533aaa0be4dde9f476b85 --- /dev/null +++ b/externals/iemlib/iemabs/bpq2_dp~-help.pd @@ -0,0 +1,61 @@ +#N canvas 375 118 454 507 10; +#X text 34 40 dsp ON/OFF; +#X floatatom 17 80 5 0 0 0 - - -; +#X text 55 81 % cpu; +#X obj 17 60 dsp; +#X obj 17 40 tgl 15 0 empty empty empty 8 -8 0 10 -262144 -1 -1 0 1 +; +#X text 8 265 ~signal_in~; +#X floatatom 81 180 3 15 133 0 - - -; +#X obj 81 199 mtof; +#X floatatom 81 218 9 0 22000 0 - - -; +#X text 145 219 Hz; +#X text 63 294 ~signal_out~; +#X floatatom 51 338 7 0 0 0 - - -; +#X text 102 339 dB; +#X floatatom 124 163 9 0 22000 0 - - -; +#X text 188 164 Hz; +#X floatatom 51 124 3 15 133 0 - - -; +#X floatatom 171 260 5 2 9999 0 - - -; +#X text 212 261 ms; +#X floatatom 128 240 4 0.01 1000 0 - - -; +#X text 161 240 Q; +#X text 26 371 2.arg:<float> Q [-]; +#X text 26 361 1.arg:<float> center_freq. [Hz]; +#X text 26 381 3.arg:<float> interpolation_time [ms]; +#X obj 51 314 gainvu~ 300; +#X obj 239 140 vu 15 120 empty empty 8 -8 0 10 -66577 -1 1 0; +#X obj 304 183 vsl 15 128 0 127 0 1 empty empty empty 8 -8 0 10 -262144 +-1 -1 8000 1; +#X obj 51 143 testtone~ 200; +#X obj 115 109 init 69; +#X text 78 125 midi; +#X floatatom 298 329 7 0 0 0 - - -; +#X text 349 330 dB; +#X text 117 10 bandpass 2.order with Q-inlet; +#X obj 10 17 cnv 8 1 1 empty empty bpq2_dp~ 1 2 1 18 -262144 -1109 +0; +#X text 184 453 IEM KUG; +#X text 164 441 musil; +#X text 198 441 @; +#X text 206 441 iem.at; +#X text 167 463 Graz \, Austria; +#X text 119 430 (c) Thomas Musil 2000 - 2010; +#X text 136 24 with double precision; +#X obj 51 280 bpq2_dp~ 440 10 200; +#X connect 3 0 1 0; +#X connect 4 0 3 0; +#X connect 6 0 7 0; +#X connect 7 0 8 0; +#X connect 8 0 40 1; +#X connect 15 0 26 0; +#X connect 16 0 40 3; +#X connect 18 0 40 2; +#X connect 23 1 29 0; +#X connect 23 2 24 0; +#X connect 24 1 11 0; +#X connect 25 0 23 1; +#X connect 26 0 40 0; +#X connect 26 1 13 0; +#X connect 27 0 15 0; +#X connect 40 0 23 0; diff --git a/externals/iemlib/iemabs/bpq2_dp~.pd b/externals/iemlib/iemabs/bpq2_dp~.pd new file mode 100644 index 0000000000000000000000000000000000000000..3f9743c944a6654fa0971196b4caf0c71213d318 --- /dev/null +++ b/externals/iemlib/iemabs/bpq2_dp~.pd @@ -0,0 +1,29 @@ +#N canvas 319 273 395 281 10; +#X obj 22 42 inlet~; +#X obj 55 63 inlet; +#X obj 22 186 outlet~; +#X text 62 42 ~signal_in~; +#X obj 88 89 inlet; +#X text 190 112 <float> interpolation_time [ms]; +#X text 32 153 ~filtered signal_out~; +#X obj 155 112 inlet; +#X text 92 64 <float> center_frequency [Hz]; +#X text 124 89 <float> Q [-]; +#X text 89 10 bandpass 2.order with Q-inlet; +#X text 85 176 1.arg: <float> center_frequency [Hz]; +#X text 85 185 2.arg: <float> Q [-]; +#X text 85 194 3.arg: <float> interpolation_time [ms] (opt.); +#X text 176 245 IEM KUG; +#X text 154 233 musil; +#X text 190 233 @; +#X text 199 233 iem.at; +#X text 159 255 Graz \, Austria; +#X text 12 9 bpq2_dp~; +#X text 116 25 with double precision; +#X obj 22 135 filter~ dbpq2 \$1 \$2 1 \$3; +#X text 111 222 (c) Thomas Musil 2000 - 2010; +#X connect 0 0 21 0; +#X connect 1 0 21 1; +#X connect 4 0 21 2; +#X connect 7 0 21 4; +#X connect 21 0 2 0; diff --git a/externals/iemlib/iemabs/bpw2_dp~-help.pd b/externals/iemlib/iemabs/bpw2_dp~-help.pd new file mode 100644 index 0000000000000000000000000000000000000000..6c01de216abfde1ba38ee3211f4155cacba49902 --- /dev/null +++ b/externals/iemlib/iemabs/bpw2_dp~-help.pd @@ -0,0 +1,61 @@ +#N canvas 375 118 381 493 10; +#X text 34 40 dsp ON/OFF; +#X floatatom 17 80 5 0 0 0 - - -; +#X text 55 81 % cpu; +#X obj 17 60 dsp; +#X obj 17 40 tgl 15 0 empty empty empty 8 -8 0 10 -262144 -1 -1 0 1 +; +#X text 8 265 ~signal_in~; +#X floatatom 81 180 3 15 133 0 - - -; +#X obj 81 199 mtof; +#X floatatom 81 218 9 0 22000 0 - - -; +#X text 145 219 Hz; +#X text 63 294 ~signal_out~; +#X floatatom 51 337 7 0 0 0 - - -; +#X text 102 338 dB; +#X floatatom 124 163 9 0 22000 0 - - -; +#X text 188 164 Hz; +#X floatatom 51 124 3 15 133 0 - - -; +#X floatatom 172 260 5 2 9999 0 - - -; +#X text 213 261 ms; +#X floatatom 121 241 4 0.01 1000 0 - - -; +#X text 26 361 1.arg:<float> center_freq. [Hz]; +#X text 26 381 3.arg:<float> interpolation_time [ms]; +#X obj 51 314 gainvu~ 300; +#X obj 249 140 vu 15 120 empty empty 8 -8 0 10 -66577 -1 1 0; +#X obj 304 183 vsl 15 128 0 127 0 1 empty empty empty 8 -8 0 10 -262144 +-1 -1 8000 1; +#X obj 51 143 testtone~ 200; +#X obj 115 109 init 69; +#X text 78 125 midi; +#X floatatom 298 329 7 0 0 0 - - -; +#X text 349 330 dB; +#X text 118 6 bandpass 2.order with bandwidth-inlet; +#X text 154 241 bandwidth Hz; +#X text 26 371 2.arg:<float> bandwidth [Hz]; +#X obj 10 17 cnv 8 1 1 empty empty bpw2_dp~ 1 2 1 18 -262144 -1109 +0; +#X text 184 454 IEM KUG; +#X text 163 442 musil; +#X text 198 442 @; +#X text 206 442 iem.at; +#X text 167 464 Graz \, Austria; +#X text 119 431 (c) Thomas Musil 2000 - 2010; +#X text 138 22 with double precision; +#X obj 51 280 bpw2_dp~ 440 44 200; +#X connect 3 0 1 0; +#X connect 4 0 3 0; +#X connect 6 0 7 0; +#X connect 7 0 8 0; +#X connect 8 0 40 1; +#X connect 15 0 24 0; +#X connect 16 0 40 3; +#X connect 18 0 40 2; +#X connect 21 1 27 0; +#X connect 21 2 22 0; +#X connect 22 1 11 0; +#X connect 23 0 21 1; +#X connect 24 0 40 0; +#X connect 24 1 13 0; +#X connect 25 0 15 0; +#X connect 40 0 21 0; diff --git a/externals/iemlib/iemabs/bpw2_dp~.pd b/externals/iemlib/iemabs/bpw2_dp~.pd new file mode 100644 index 0000000000000000000000000000000000000000..c6663aec06b1eded3f9d516cfdd03b9b8156e49d --- /dev/null +++ b/externals/iemlib/iemabs/bpw2_dp~.pd @@ -0,0 +1,29 @@ +#N canvas 314 262 446 285 10; +#X obj 22 42 inlet~; +#X obj 55 63 inlet; +#X obj 22 186 outlet~; +#X text 62 42 ~signal_in~; +#X obj 88 89 inlet; +#X text 190 112 <float> interpolation_time [ms]; +#X text 32 153 ~filtered signal_out~; +#X obj 155 112 inlet; +#X text 92 64 <float> center_frequency [Hz]; +#X text 81 9 bandpass 2.order with bandwidth-inlet; +#X text 124 90 <float> bandwidth [Hz]; +#X text 97 174 1.arg: <float> center_frequency [Hz]; +#X text 97 183 2.arg: <float> bandwidth [Hz]; +#X text 97 192 3.arg: <float> interpolation_time [ms] (opt.); +#X text 176 245 IEM KUG; +#X text 154 233 musil; +#X text 190 233 @; +#X text 198 233 iem.at; +#X text 159 255 Graz \, Austria; +#X text 12 9 bpw2_dp~; +#X text 126 22 with double precision; +#X obj 22 133 filter~ dbpw2 \$1 \$2 1 \$3; +#X text 111 222 (c) Thomas Musil 2000 - 2010; +#X connect 0 0 21 0; +#X connect 1 0 21 1; +#X connect 4 0 21 2; +#X connect 7 0 21 4; +#X connect 21 0 2 0; diff --git a/externals/iemlib/iemabs/bs2_dp~.pd b/externals/iemlib/iemabs/bs2_dp~.pd new file mode 100644 index 0000000000000000000000000000000000000000..74cc984b0e2fca4d914c08da255a440ec5a3bac2 --- /dev/null +++ b/externals/iemlib/iemabs/bs2_dp~.pd @@ -0,0 +1,29 @@ +#N canvas 299 265 427 285 10; +#X obj 22 42 inlet~; +#X obj 55 65 inlet; +#X obj 22 186 outlet~; +#X text 62 42 ~signal_in~; +#X obj 88 89 inlet; +#X text 191 113 <float> interpolation_time [ms]; +#X text 28 157 ~filtered signal_out~; +#X obj 155 113 inlet; +#X text 91 64 <float> center_frequency [Hz]; +#X text 123 89 <float> Q [-]; +#X text 102 176 1.arg: <float> center_frequency [Hz]; +#X text 102 185 2.arg: <float> Q [-]; +#X text 102 194 3.arg: <float> interpolation_time [ms] (opt.); +#X text 176 245 IEM KUG; +#X text 154 233 musil; +#X text 190 233 @; +#X text 198 233 iem.at; +#X text 159 255 Graz \, Austria; +#X text 11 9 bs2_dp~; +#X text 136 24 with double precision; +#X text 92 10 bandstop 2.order with Q-inlet; +#X obj 22 136 filter~ dbsq2 \$1 \$2 1 \$3; +#X text 111 222 (c) Thomas Musil 2000 - 2010; +#X connect 0 0 21 0; +#X connect 1 0 21 1; +#X connect 4 0 21 2; +#X connect 7 0 21 4; +#X connect 21 0 2 0; diff --git a/externals/iemlib/iemabs/bsq2_dp~-help.pd b/externals/iemlib/iemabs/bsq2_dp~-help.pd new file mode 100644 index 0000000000000000000000000000000000000000..bb9ead6c0b1d94c9d0792fe6412eb15e2c54e0c4 --- /dev/null +++ b/externals/iemlib/iemabs/bsq2_dp~-help.pd @@ -0,0 +1,61 @@ +#N canvas 375 118 381 493 10; +#X text 34 40 dsp ON/OFF; +#X floatatom 17 80 5 0 0 0 - - -; +#X text 55 81 % cpu; +#X obj 17 60 dsp; +#X obj 17 40 tgl 15 0 empty empty empty 8 -8 0 10 -262144 -1 -1 0 1 +; +#X text 26 371 2.arg:<float> Q [-]; +#X text 26 361 1.arg:<float> center_freq. [Hz]; +#X text 26 381 3.arg:<float> interpolation_time [ms]; +#X text 10 258 ~signal_in~; +#X floatatom 81 174 3 15 133 0 - - -; +#X obj 81 193 mtof; +#X floatatom 81 212 9 0 22000 0 - - -; +#X text 145 213 Hz; +#X text 65 287 ~signal_out~; +#X floatatom 54 328 7 0 0 0 - - -; +#X text 105 329 dB; +#X floatatom 126 156 9 0 22000 0 - - -; +#X text 190 157 Hz; +#X floatatom 53 117 3 15 133 0 - - -; +#X floatatom 168 253 5 2 9999 0 - - -; +#X text 209 254 ms; +#X floatatom 129 234 4 0.01 1000 0 - - -; +#X text 162 234 Q; +#X obj 53 307 gainvu~ 300; +#X obj 235 161 vu 15 120 empty empty 8 -8 0 10 -66577 -1 1 0; +#X obj 294 176 vsl 15 128 0 127 0 1 empty empty empty 8 -8 0 10 -262144 +-1 -1 8000 1; +#X obj 53 136 testtone~ 200; +#X obj 117 102 init 69; +#X text 80 118 midi; +#X floatatom 274 322 7 0 0 0 - - -; +#X text 325 323 dB; +#X text 116 10 bandstop 2.order with Q-inlet; +#X obj 13 16 cnv 8 1 1 empty empty bsq2_dp~ 1 2 1 18 -262144 -1109 +0; +#X text 184 454 IEM KUG; +#X text 160 442 musil; +#X text 198 442 @; +#X text 207 442 iem.at; +#X text 167 464 Graz \, Austria; +#X text 119 431 (c) Thomas Musil 2000 - 2010; +#X text 136 24 with double precision; +#X obj 53 273 bsq2_dp~ 440 1 200; +#X connect 3 0 1 0; +#X connect 4 0 3 0; +#X connect 9 0 10 0; +#X connect 10 0 11 0; +#X connect 11 0 40 1; +#X connect 18 0 26 0; +#X connect 19 0 40 3; +#X connect 21 0 40 2; +#X connect 23 1 29 0; +#X connect 23 2 24 0; +#X connect 24 1 14 0; +#X connect 25 0 23 1; +#X connect 26 0 40 0; +#X connect 26 1 16 0; +#X connect 27 0 18 0; +#X connect 40 0 23 0; diff --git a/externals/iemlib/iemabs/bsq2_dp~.pd b/externals/iemlib/iemabs/bsq2_dp~.pd new file mode 100644 index 0000000000000000000000000000000000000000..678972453419aa8d264779770b142eb992510371 --- /dev/null +++ b/externals/iemlib/iemabs/bsq2_dp~.pd @@ -0,0 +1,29 @@ +#N canvas 299 265 393 285 10; +#X obj 22 42 inlet~; +#X obj 55 65 inlet; +#X obj 22 186 outlet~; +#X text 62 42 ~signal_in~; +#X obj 88 89 inlet; +#X text 191 113 <float> interpolation_time [ms]; +#X text 28 157 ~filtered signal_out~; +#X obj 155 113 inlet; +#X text 91 64 <float> center_frequency [Hz]; +#X text 123 89 <float> Q [-]; +#X text 94 8 bandstop 2.order with Q-inlet; +#X text 102 176 1.arg: <float> center_frequency [Hz]; +#X text 102 185 2.arg: <float> Q [-]; +#X text 102 194 3.arg: <float> interpolation_time [ms] (opt.); +#X text 176 245 IEM KUG; +#X text 154 233 musil; +#X text 190 233 @; +#X text 198 233 iem.at; +#X text 159 255 Graz \, Austria; +#X text 11 9 bsq2_dp~; +#X text 119 21 with double precision; +#X text 111 222 (c) Thomas Musil 2000 - 2010; +#X obj 22 136 filter~ dbsq2 \$1 \$2 1 \$3; +#X connect 0 0 22 0; +#X connect 1 0 22 1; +#X connect 4 0 22 2; +#X connect 7 0 22 4; +#X connect 22 0 2 0; diff --git a/externals/iemlib/iemabs/bsw2_dp~-help.pd b/externals/iemlib/iemabs/bsw2_dp~-help.pd new file mode 100644 index 0000000000000000000000000000000000000000..a84b16e0ee2346d15c4df8556a67fde1cf7a007d --- /dev/null +++ b/externals/iemlib/iemabs/bsw2_dp~-help.pd @@ -0,0 +1,61 @@ +#N canvas 361 130 381 493 10; +#X text 34 40 dsp ON/OFF; +#X floatatom 17 80 5 0 0 0 - - -; +#X text 55 81 % cpu; +#X obj 17 60 dsp; +#X obj 17 40 tgl 15 0 empty empty empty 8 -8 0 10 -262144 -1 -1 0 1 +; +#X text 26 361 1.arg:<float> center_freq. [Hz]; +#X text 26 381 3.arg:<float> interpolation_time [ms]; +#X text 26 371 2.arg:<float> bandwidth [Hz]; +#X text 8 264 ~signal_in~; +#X floatatom 83 181 3 15 133 0 - - -; +#X obj 83 200 mtof; +#X floatatom 83 219 9 0 22000 0 - - -; +#X text 147 220 Hz; +#X text 63 293 ~signal_out~; +#X floatatom 52 334 7 0 0 0 - - -; +#X text 105 335 dB; +#X floatatom 124 162 9 0 22000 0 - - -; +#X text 188 163 Hz; +#X floatatom 51 123 3 15 133 0 - - -; +#X floatatom 168 257 5 2 9999 0 - - -; +#X text 209 257 ms; +#X floatatom 115 239 4 0.01 1000 0 - - -; +#X obj 51 313 gainvu~ 300; +#X obj 233 167 vu 15 120 empty empty 8 -8 0 10 -66577 -1 1 0; +#X obj 292 182 vsl 15 128 0 127 0 1 empty empty empty 8 -8 0 10 -262144 +-1 -1 8000 1; +#X obj 51 142 testtone~ 200; +#X obj 115 108 init 69; +#X text 78 124 midi; +#X floatatom 272 328 7 0 0 0 - - -; +#X text 323 329 dB; +#X text 148 238 bandwidth Hz; +#X text 109 9 bandstop 2.order with bandwidth-inlet; +#X obj 12 15 cnv 8 1 1 empty empty bsw2_dp~ 1 2 1 18 -262144 -1109 +0; +#X text 184 454 IEM KUG; +#X text 163 442 musil; +#X text 198 442 @; +#X text 207 442 iem.at; +#X text 167 464 Graz \, Austria; +#X text 119 431 (c) Thomas Musil 2000 - 2010; +#X text 136 24 with double precision; +#X obj 51 279 bsw2_dp~ 440 220 200; +#X connect 3 0 1 0; +#X connect 4 0 3 0; +#X connect 9 0 10 0; +#X connect 10 0 11 0; +#X connect 11 0 40 1; +#X connect 18 0 25 0; +#X connect 19 0 40 3; +#X connect 21 0 40 2; +#X connect 22 1 28 0; +#X connect 22 2 23 0; +#X connect 23 1 14 0; +#X connect 24 0 22 1; +#X connect 25 0 40 0; +#X connect 25 1 16 0; +#X connect 26 0 18 0; +#X connect 40 0 22 0; diff --git a/externals/iemlib/iemabs/bsw2_dp~.pd b/externals/iemlib/iemabs/bsw2_dp~.pd new file mode 100644 index 0000000000000000000000000000000000000000..c92145bdb18d459b489387fd5617c11bcad1be45 --- /dev/null +++ b/externals/iemlib/iemabs/bsw2_dp~.pd @@ -0,0 +1,29 @@ +#N canvas 299 265 393 285 10; +#X obj 22 42 inlet~; +#X obj 55 65 inlet; +#X obj 22 186 outlet~; +#X text 62 42 ~signal_in~; +#X obj 88 89 inlet; +#X text 191 113 <float> interpolation_time [ms]; +#X text 28 157 ~filtered signal_out~; +#X obj 155 113 inlet; +#X text 91 64 <float> center_frequency [Hz]; +#X text 84 9 bandstop 2.order with bandwidth-inlet; +#X text 123 89 <float> bandwidth [Hz]; +#X text 97 178 1.arg: <float> center_frequency [Hz]; +#X text 97 188 2.arg: <float> bandwidth [Hz]; +#X text 97 198 3.arg: <float> interpolation_time [ms] (opt.); +#X text 176 245 IEM KUG; +#X text 153 233 musil; +#X text 190 233 @; +#X text 198 233 iem.at; +#X text 159 255 Graz \, Austria; +#X text 11 9 bsw2_dp~; +#X text 130 24 with double precision; +#X obj 22 136 filter~ dbsw2 \$1 \$2 1 \$3; +#X text 111 222 (c) Thomas Musil 2000 - 2010; +#X connect 0 0 21 0; +#X connect 1 0 21 1; +#X connect 4 0 21 2; +#X connect 7 0 21 4; +#X connect 21 0 2 0; diff --git a/externals/iemlib/iemabs/hp1_dp~-help.pd b/externals/iemlib/iemabs/hp1_dp~-help.pd new file mode 100644 index 0000000000000000000000000000000000000000..d3648e6db0ebb204d3630024ec990e1636e79dbc --- /dev/null +++ b/externals/iemlib/iemabs/hp1_dp~-help.pd @@ -0,0 +1,56 @@ +#N canvas 245 78 377 495 10; +#X text 7 256 ~signal_in~; +#X text 32 44 dsp ON/OFF; +#X floatatom 83 173 3 15 133 0 - - -; +#X obj 83 192 mtof; +#X floatatom 83 211 9 0 22000 0 - - -; +#X text 147 212 Hz; +#X text 62 285 ~signal_out~; +#X floatatom 51 327 7 0 0 0 - - -; +#X text 102 328 dB; +#X floatatom 123 154 9 0 22000 0 - - -; +#X text 187 155 Hz; +#X floatatom 50 115 3 15 133 0 - - -; +#X floatatom 15 84 5 0 0 0 - - -; +#X text 54 85 % cpu; +#X floatatom 137 246 5 2 9999 0 - - -; +#X text 178 247 ms; +#X obj 15 64 dsp; +#X obj 15 44 tgl 15 0 empty empty empty 8 -8 0 10 -262144 -1 -1 0 1 +; +#X obj 50 305 gainvu~ 300; +#X obj 227 143 vu 15 120 empty empty 8 -8 0 10 -66577 -1 1 0; +#X obj 291 174 vsl 15 128 0 127 0 1 empty empty empty 8 -8 0 10 -262144 +-1 -1 8000 1; +#X obj 50 134 testtone~ 200; +#X obj 114 100 init 69; +#X text 77 116 midi; +#X text 14 355 1.arg:<float> cutoff_freq. [Hz]; +#X text 14 365 2.arg:<float> interpolation_time [ms]; +#X floatatom 280 320 7 0 0 0 - - -; +#X text 331 321 dB; +#X obj 13 15 cnv 8 1 1 empty empty hp1_dp~ 1 2 1 18 -262144 -1109 0 +; +#X text 78 427 IEM KUG; +#X text 56 415 musil; +#X text 92 415 @; +#X text 101 415 iem.at; +#X text 61 437 Graz \, Austria; +#X text 13 404 (c) Thomas Musil 2000 - 2010; +#X text 102 8 highpass 1.order with double precision; +#X obj 50 271 hp1_dp~ 440 200; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 4 0 36 1; +#X connect 11 0 21 0; +#X connect 14 0 36 2; +#X connect 16 0 12 0; +#X connect 17 0 16 0; +#X connect 18 1 26 0; +#X connect 18 2 19 0; +#X connect 19 1 7 0; +#X connect 20 0 18 1; +#X connect 21 0 36 0; +#X connect 21 1 9 0; +#X connect 22 0 11 0; +#X connect 36 0 18 0; diff --git a/externals/iemlib/iemabs/hp1_dp~.pd b/externals/iemlib/iemabs/hp1_dp~.pd new file mode 100644 index 0000000000000000000000000000000000000000..7e3cb3241400a3b0779f99af381e691861fb94d4 --- /dev/null +++ b/externals/iemlib/iemabs/hp1_dp~.pd @@ -0,0 +1,24 @@ +#N canvas 274 213 379 285 10; +#X obj 22 42 inlet~; +#X obj 52 63 inlet; +#X obj 22 186 outlet~; +#X text 62 42 ~signal_in~; +#X text 89 64 <float> cutoff_frequency [Hz]; +#X obj 143 85 inlet; +#X text 181 84 <float> interpolation_time [ms]; +#X text 28 157 ~filtered signal_out~; +#X text 92 192 2.arg: <float> interpolation_time [ms] (opt.); +#X text 92 182 1.arg: <float> cutoff_frequency [Hz]; +#X text 176 245 IEM KUG; +#X text 154 233 musil; +#X text 190 233 @; +#X text 198 233 iem.at; +#X text 159 255 Graz \, Austria; +#X text 12 8 hp1_dp~; +#X text 75 7 highpass 1.order with double precision; +#X obj 22 123 filter~ dhp1 \$1 1 0 \$2; +#X text 111 222 (c) Thomas Musil 2000 - 2010; +#X connect 0 0 17 0; +#X connect 1 0 17 1; +#X connect 5 0 17 4; +#X connect 17 0 2 0; diff --git a/externals/iemlib/iemabs/hp1c_dp~.pd b/externals/iemlib/iemabs/hp1c_dp~.pd new file mode 100644 index 0000000000000000000000000000000000000000..0d501594a4899558543108738b8dee68d8d1cce1 --- /dev/null +++ b/externals/iemlib/iemabs/hp1c_dp~.pd @@ -0,0 +1,39 @@ +#N canvas 325 243 417 352 10; +#X obj 22 42 inlet~; +#X obj 55 66 inlet; +#X obj 22 196 outlet~; +#X text 62 42 ~signal_in~; +#X text 92 67 <float> cutoff_frequency [Hz]; +#X text 189 134 <float> interpolation_time [ms]; +#X text 32 176 ~filtered signal_out~; +#X obj 88 93 inlet; +#X obj 155 134 inlet; +#X text 124 93 <float> frequency-shift [-]; +#X text 87 9 highpass 1.order for filter-cascades; +#X obj 55 214 outlet; +#X obj 86 232 outlet; +#X obj 115 251 outlet; +#X obj 155 271 outlet; +#X text 127 231 dummy; +#X text 155 250 dummy; +#X obj 123 113 inlet; +#X text 158 113 dummy; +#X text 120 192 1.arg: <float> cutoff_frequency [Hz]; +#X text 120 202 2.arg: <float> frequency-shift [-]; +#X text 120 212 3.arg: <float> interpolation_time [ms] (opt.); +#X text 176 315 IEM KUG; +#X text 154 303 musil; +#X text 190 303 @; +#X text 198 303 iem.at; +#X text 159 325 Graz \, Austria; +#X text 12 8 hp1c_dp~; +#X text 135 24 with double precision; +#X obj 22 157 filter~ dhp1c \$1 \$2 1 \$3; +#X text 111 292 (c) Thomas Musil 2000 - 2010; +#X connect 0 0 29 0; +#X connect 1 0 11 0; +#X connect 1 0 29 1; +#X connect 7 0 29 2; +#X connect 8 0 14 0; +#X connect 8 0 29 4; +#X connect 29 0 2 0; diff --git a/externals/iemlib/iemabs/hp2_dp~-help.pd b/externals/iemlib/iemabs/hp2_dp~-help.pd new file mode 100644 index 0000000000000000000000000000000000000000..920521ab04a0af1e335e837e11cd77ad08ba1873 --- /dev/null +++ b/externals/iemlib/iemabs/hp2_dp~-help.pd @@ -0,0 +1,60 @@ +#N canvas 278 100 406 471 10; +#X text 6 249 ~signal_in~; +#X text 31 37 dsp ON/OFF; +#X floatatom 83 165 3 15 133 0 - - -; +#X obj 83 184 mtof; +#X floatatom 83 203 9 0 22000 0 - - -; +#X text 147 204 Hz; +#X text 61 278 ~signal_out~; +#X floatatom 49 320 7 0 0 0 - - -; +#X text 100 321 dB; +#X floatatom 122 147 9 0 22000 0 - - -; +#X text 186 148 Hz; +#X floatatom 49 108 3 15 133 0 - - -; +#X floatatom 14 77 5 0 0 0 - - -; +#X text 54 78 % cpu; +#X floatatom 172 244 5 2 9999 0 - - -; +#X text 213 245 ms; +#X obj 14 57 dsp; +#X floatatom 137 226 4 0.01 1000 0 - - -; +#X text 172 226 Q; +#X text 14 358 2.arg:<float> Q [-]; +#X text 14 368 3.arg:<float> interpolation_time [ms]; +#X obj 14 37 tgl 15 0 empty empty empty 8 -8 0 10 -262144 -1 -1 0 1 +; +#X obj 49 298 gainvu~ 300; +#X obj 261 148 vu 15 120 empty empty 8 -8 0 10 -66577 -1 1 0; +#X obj 314 167 vsl 15 128 0 127 0 1 empty empty empty 8 -8 0 10 -262144 +-1 -1 8000 1; +#X obj 49 127 testtone~ 200; +#X obj 113 93 init 69; +#X text 76 109 midi; +#X text 14 348 1.arg:<float> cutoff_freq. [Hz]; +#X floatatom 301 313 7 0 0 0 - - -; +#X text 352 314 dB; +#X obj 12 14 cnv 8 1 1 empty empty hp2_dp~ 1 2 1 18 -262144 -1109 0 +; +#X text 78 417 IEM KUG; +#X text 57 405 musil; +#X text 92 405 @; +#X text 100 405 iem.at; +#X text 61 427 Graz \, Austria; +#X text 13 394 (c) Thomas Musil 2000 - 2010; +#X text 101 9 highpass 2.order with double precision; +#X obj 49 264 hp2_dp~ 440 0.707 200; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 4 0 39 1; +#X connect 11 0 25 0; +#X connect 14 0 39 3; +#X connect 16 0 12 0; +#X connect 17 0 39 2; +#X connect 21 0 16 0; +#X connect 22 1 29 0; +#X connect 22 2 23 0; +#X connect 23 1 7 0; +#X connect 24 0 22 1; +#X connect 25 0 39 0; +#X connect 25 1 9 0; +#X connect 26 0 11 0; +#X connect 39 0 22 0; diff --git a/externals/iemlib/iemabs/hp2_dp~.pd b/externals/iemlib/iemabs/hp2_dp~.pd new file mode 100644 index 0000000000000000000000000000000000000000..0176ec3f7e05a2ef78d1243e400f085894f51e64 --- /dev/null +++ b/externals/iemlib/iemabs/hp2_dp~.pd @@ -0,0 +1,28 @@ +#N canvas 435 244 379 285 10; +#X obj 22 42 inlet~; +#X obj 53 65 inlet; +#X obj 22 186 outlet~; +#X text 62 42 ~signal_in~; +#X text 89 64 <float> cutoff_frequency [Hz]; +#X obj 85 89 inlet; +#X text 184 113 <float> interpolation_time [ms]; +#X text 28 157 ~filtered signal_out~; +#X obj 149 112 inlet; +#X text 120 89 <float> Q [-]; +#X text 88 177 1.arg: <float> cutoff_frequency [Hz]; +#X text 88 186 2.arg: <float> Q [-]; +#X text 88 196 3.arg: <float> interpolation_time [ms] (opt.); +#X text 176 245 IEM KUG; +#X text 154 233 musil; +#X text 190 233 @; +#X text 198 233 iem.at; +#X text 159 255 Graz \, Austria; +#X text 11 9 hp2_dp~; +#X text 79 9 highpass 2.order with double precision; +#X obj 22 136 filter~ dhp2 \$1 \$2 1 \$3; +#X text 113 223 (c) Thomas Musil 2000 - 2010; +#X connect 0 0 20 0; +#X connect 1 0 20 1; +#X connect 5 0 20 2; +#X connect 8 0 20 4; +#X connect 20 0 2 0; diff --git a/externals/iemlib/iemabs/hp2c_dp~.pd b/externals/iemlib/iemabs/hp2c_dp~.pd new file mode 100644 index 0000000000000000000000000000000000000000..d309d401d8adb7b6c1e001d87fd1e4344d52f4f3 --- /dev/null +++ b/externals/iemlib/iemabs/hp2c_dp~.pd @@ -0,0 +1,41 @@ +#N canvas 406 261 412 351 10; +#X obj 22 42 inlet~; +#X obj 56 63 inlet; +#X obj 22 193 outlet~; +#X text 62 42 ~signal_in~; +#X text 93 64 <float> cutoff_frequency [Hz]; +#X obj 91 87 inlet; +#X text 195 136 <float> interpolation_time [ms]; +#X text 32 176 ~filtered signal_out~; +#X obj 126 111 inlet; +#X obj 161 136 inlet; +#X text 127 87 <float> damping [-]; +#X text 162 111 <float> frequency-shift [-]; +#X text 79 8 highpass 2.order for filter-cascades; +#X obj 56 211 outlet; +#X obj 88 236 outlet; +#X obj 119 255 outlet; +#X obj 161 274 outlet; +#X text 129 235 dummy; +#X text 159 254 dummy; +#X text 128 190 1.arg: <float> cutoff_frequency [Hz]; +#X text 128 199 2.arg: <float> damping [-]; +#X text 128 208 3.arg: <float> frequency-shift [-]; +#X text 128 218 4.arg: <float> interpolation_time [ms] (opt.); +#X text 176 315 IEM KUG; +#X text 154 303 musil; +#X text 190 303 @; +#X text 198 303 iem.at; +#X text 159 325 Graz \, Austria; +#X text 12 8 hp2c_dp~; +#X text 122 23 with double precision; +#X obj 22 157 filter~ dhp2c \$1 \$2 \$3 \$4; +#X text 111 292 (c) Thomas Musil 2000 - 2010; +#X connect 0 0 30 0; +#X connect 1 0 13 0; +#X connect 1 0 30 1; +#X connect 5 0 30 2; +#X connect 8 0 30 3; +#X connect 9 0 16 0; +#X connect 9 0 30 4; +#X connect 30 0 2 0; diff --git a/externals/iemlib/iemabs/init_popup.pd b/externals/iemlib/iemabs/init_popup.pd new file mode 100644 index 0000000000000000000000000000000000000000..6c748cad2eeb4596a95e07a109a5a102a34ac3d0 --- /dev/null +++ b/externals/iemlib/iemabs/init_popup.pd @@ -0,0 +1,38 @@ +#N canvas 187 157 554 392 10; +#X obj 187 219 textfile; +#X obj 204 31 loadbang; +#X obj 204 57 t b b b b; +#X msg 203 162 rewind; +#X obj 80 121 for++ 0 100000 20; +#X obj 238 250 bang; +#X msg 88 82 stop; +#X obj 102 293 pack symbol float; +#X obj 80 146 t b f; +#X obj 102 317 pp set_pop_name; +#X obj 102 350 outlet; +#X obj 174 34 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1 +-1; +#X text 14 6 init_popup; +#X obj 170 349 s \$2; +#X text 330 223 1.arg: <sym> item-file-name; +#X text 329 236 2.arg: <sym> send-name; +#X obj 288 99 any \$1 cr; +#X obj 288 124 pp read; +#X connect 0 0 7 0; +#X connect 0 1 5 0; +#X connect 1 0 2 0; +#X connect 2 0 4 0; +#X connect 2 1 3 0; +#X connect 2 3 16 0; +#X connect 3 0 0 0; +#X connect 4 0 8 0; +#X connect 5 0 6 0; +#X connect 6 0 4 0; +#X connect 7 0 9 0; +#X connect 8 0 0 0; +#X connect 8 1 7 1; +#X connect 9 0 10 0; +#X connect 9 0 13 0; +#X connect 11 0 2 0; +#X connect 16 0 17 0; +#X connect 17 0 0 0; diff --git a/externals/iemlib/iemabs/lp1_d~-help.pd b/externals/iemlib/iemabs/lp1_dp~-help.pd similarity index 76% rename from externals/iemlib/iemabs/lp1_d~-help.pd rename to externals/iemlib/iemabs/lp1_dp~-help.pd index 8872d84311ff79d59fcb74c440b9e2e2d2b42e65..24f166e2cd6aeb6da933bbff566e6f0aea5660d1 100644 --- a/externals/iemlib/iemabs/lp1_d~-help.pd +++ b/externals/iemlib/iemabs/lp1_dp~-help.pd @@ -6,8 +6,8 @@ #X floatatom 103 202 9 0 22000 0 - - -; #X text 167 203 Hz; #X text 68 274 ~signal_out~; -#X floatatom 195 258 7 0 0 0 - - -; -#X text 246 259 dB; +#X floatatom 56 317 7 0 0 0 - - -; +#X text 107 318 dB; #X floatatom 129 143 9 0 22000 0 - - -; #X text 193 144 Hz; #X floatatom 56 104 3 15 133 0 - - -; @@ -16,7 +16,7 @@ #X floatatom 149 235 5 2 9999 0 - - -; #X text 190 236 ms; #X obj 21 53 dsp; -#X obj 21 33 tgl 15 0 empty empty empty 8 -8 0 10 -262144 -1 -1 1 1 +#X obj 21 33 tgl 15 0 empty empty empty 8 -8 0 10 -262144 -1 -1 0 1 ; #X obj 56 294 gainvu~ 300; #X obj 234 136 vu 15 120 empty empty 8 -8 0 10 -66577 -1 1 0; @@ -29,28 +29,28 @@ #X text 21 354 2.arg:<float> interpolation_time [ms]; #X floatatom 266 309 7 0 0 0 - - -; #X text 317 310 dB; -#X obj 13 13 cnv 8 1 1 empty empty lp1_d~ 1 2 1 18 -262144 -1109 0 +#X obj 14 15 cnv 8 1 1 empty empty lp1_dp~ 1 2 1 18 -262144 -1109 0 ; #X text 106 415 IEM KUG; -#X text 90 403 musil; +#X text 84 403 musil; #X text 120 403 @; -#X text 126 403 iem.at; +#X text 128 403 iem.at; #X text 89 425 Graz \, Austria; -#X text 83 6 lowpass 1.order with double precission; -#X obj 56 260 lp1_d~ 440 200; -#X text 41 391 (c) Thomas Musil 2000 - 2008; +#X text 102 8 lowpass 1.order with double precision; +#X text 41 391 (c) Thomas Musil 2000 - 2010; +#X obj 56 260 lp1_dp~ 440 200; #X connect 2 0 3 0; #X connect 3 0 4 0; -#X connect 4 0 35 1; +#X connect 4 0 36 1; #X connect 11 0 21 0; -#X connect 14 0 35 2; +#X connect 14 0 36 2; #X connect 16 0 12 0; #X connect 17 0 16 0; #X connect 18 1 26 0; #X connect 18 2 19 0; #X connect 19 1 7 0; #X connect 20 0 18 1; -#X connect 21 0 35 0; +#X connect 21 0 36 0; #X connect 21 1 9 0; #X connect 22 0 11 0; -#X connect 35 0 18 0; +#X connect 36 0 18 0; diff --git a/externals/iemlib/iemabs/lp1_d~.pd b/externals/iemlib/iemabs/lp1_dp~.pd similarity index 77% rename from externals/iemlib/iemabs/lp1_d~.pd rename to externals/iemlib/iemabs/lp1_dp~.pd index 534d0bbffe5468935a5a9a135388a33314e91e05..e50d29645f06035353d056b5058db6cdc5fbc547 100644 --- a/externals/iemlib/iemabs/lp1_d~.pd +++ b/externals/iemlib/iemabs/lp1_dp~.pd @@ -10,14 +10,14 @@ #X text 92 192 2.arg: <float> interpolation_time [ms] (opt.); #X text 92 182 1.arg: <float> cutoff_frequency [Hz]; #X text 176 245 IEM KUG; -#X text 160 233 musil; +#X text 154 233 musil; #X text 190 233 @; -#X text 196 233 iem.at; +#X text 198 233 iem.at; #X text 159 255 Graz \, Austria; #X obj 22 123 filter~ dlp1 \$1 1 0 \$2; -#X text 12 7 lp1_d~; -#X text 60 8 lowpass 1.order with double precission; -#X text 111 222 (c) Thomas Musil 2000 - 2008; +#X text 76 8 lowpass 1.order with double precission; +#X text 12 7 lp1_dp~; +#X text 111 222 (c) Thomas Musil 2000 - 2010; #X connect 0 0 15 0; #X connect 1 0 15 1; #X connect 5 0 15 4; diff --git a/externals/iemlib/iemabs/lp1c_dp~.pd b/externals/iemlib/iemabs/lp1c_dp~.pd new file mode 100644 index 0000000000000000000000000000000000000000..b9d506a0415f7c290b28cc125681351a4666fb37 --- /dev/null +++ b/externals/iemlib/iemabs/lp1c_dp~.pd @@ -0,0 +1,39 @@ +#N canvas 406 261 397 357 10; +#X obj 22 42 inlet~; +#X obj 55 66 inlet; +#X obj 22 194 outlet~; +#X text 62 42 ~signal_in~; +#X text 92 67 <float> cutoff_frequency [Hz]; +#X text 189 134 <float> interpolation_time [ms]; +#X text 32 176 ~filtered signal_out~; +#X obj 88 93 inlet; +#X obj 155 134 inlet; +#X text 124 93 <float> frequency-shift [-]; +#X text 81 8 lowpass 1.order for filter-cascades; +#X obj 55 214 outlet; +#X obj 86 232 outlet; +#X obj 115 251 outlet; +#X obj 155 271 outlet; +#X text 127 231 dummy; +#X text 155 250 dummy; +#X obj 123 113 inlet; +#X text 158 113 dummy; +#X text 120 192 1.arg: <float> cutoff_frequency [Hz]; +#X text 120 202 2.arg: <float> frequency-shift [-]; +#X text 120 212 3.arg: <float> interpolation_time [ms] (opt.); +#X text 176 315 IEM KUG; +#X text 154 303 musil; +#X text 190 303 @; +#X text 198 303 iem.at; +#X text 159 325 Graz \, Austria; +#X text 12 9 lp1c_dp~; +#X text 121 23 with double precision; +#X obj 22 157 filter~ dlp1c \$1 \$2 1 \$3; +#X text 111 292 (c) Thomas Musil 2000 - 2010; +#X connect 0 0 29 0; +#X connect 1 0 11 0; +#X connect 1 0 29 1; +#X connect 7 0 29 2; +#X connect 8 0 14 0; +#X connect 8 0 29 4; +#X connect 29 0 2 0; diff --git a/externals/iemlib/iemabs/lp2_dp~-help.pd b/externals/iemlib/iemabs/lp2_dp~-help.pd new file mode 100644 index 0000000000000000000000000000000000000000..41cdbe9315c2efb5043ce84bcd487db96fdeefbc --- /dev/null +++ b/externals/iemlib/iemabs/lp2_dp~-help.pd @@ -0,0 +1,60 @@ +#N canvas 285 129 395 468 10; +#X text 11 255 ~signal_in~; +#X text 36 43 dsp ON/OFF; +#X floatatom 88 171 3 15 133 0 - - -; +#X obj 88 190 mtof; +#X floatatom 88 209 9 0 22000 0 - - -; +#X text 152 210 Hz; +#X text 66 284 ~signal_out~; +#X floatatom 54 325 7 0 0 0 - - -; +#X text 105 326 dB; +#X floatatom 127 153 9 0 22000 0 - - -; +#X text 191 154 Hz; +#X floatatom 54 114 3 15 133 0 - - -; +#X floatatom 19 83 5 0 0 0 - - -; +#X text 61 83 % cpu; +#X floatatom 175 250 5 2 9999 0 - - -; +#X text 216 251 ms; +#X obj 19 63 dsp; +#X floatatom 132 232 4 0.01 1000 0 - - -; +#X text 167 232 Q; +#X text 88 354 2.arg:<float> Q [-]; +#X text 88 364 3.arg:<float> interpolation_time [ms]; +#X obj 19 43 tgl 15 0 empty empty empty 8 -8 0 10 -262144 -1 -1 0 1 +; +#X obj 54 304 gainvu~ 300; +#X obj 236 162 vu 15 120 empty empty 8 -8 0 10 -66577 -1 1 0; +#X obj 296 173 vsl 15 128 0 127 0 1 empty empty empty 8 -8 0 10 -262144 +-1 -1 8000 1; +#X obj 54 133 testtone~ 200; +#X obj 118 99 init 69; +#X text 81 115 midi; +#X text 88 344 1.arg:<float> cutoff_freq. [Hz]; +#X floatatom 278 319 7 0 0 0 - - -; +#X text 329 320 dB; +#X obj 14 17 cnv 8 1 1 empty empty lp2_dp~ 1 2 1 18 -262144 -1109 0 +; +#X text 106 415 IEM KUG; +#X text 83 403 musil; +#X text 120 403 @; +#X text 129 403 iem.at; +#X text 89 425 Graz \, Austria; +#X text 41 392 (c) Thomas Musil 2000 - 2010; +#X text 102 10 lowpass 2.order with double precision; +#X obj 54 270 lp2_dp~ 440 0.707 200; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 4 0 39 1; +#X connect 11 0 25 0; +#X connect 14 0 39 3; +#X connect 16 0 12 0; +#X connect 17 0 39 2; +#X connect 21 0 16 0; +#X connect 22 1 29 0; +#X connect 22 2 23 0; +#X connect 23 1 7 0; +#X connect 24 0 22 1; +#X connect 25 0 39 0; +#X connect 25 1 9 0; +#X connect 26 0 11 0; +#X connect 39 0 22 0; diff --git a/externals/iemlib/iemabs/lp2_dp~.pd b/externals/iemlib/iemabs/lp2_dp~.pd new file mode 100644 index 0000000000000000000000000000000000000000..0c9702e091714021dc4087582e5521eae3c36e27 --- /dev/null +++ b/externals/iemlib/iemabs/lp2_dp~.pd @@ -0,0 +1,28 @@ +#N canvas 406 261 379 285 10; +#X obj 22 42 inlet~; +#X obj 53 63 inlet; +#X obj 22 186 outlet~; +#X text 62 42 ~signal_in~; +#X text 90 64 <float> cutoff_frequency [Hz]; +#X obj 85 88 inlet; +#X text 184 113 <float> interpolation_time [ms]; +#X text 32 153 ~filtered signal_out~; +#X obj 149 113 inlet; +#X text 121 88 <float> Q [-]; +#X text 88 177 1.arg: <float> cutoff_frequency [Hz]; +#X text 88 186 2.arg: <float> Q [-]; +#X text 88 196 3.arg: <float> interpolation_time [ms] (opt.); +#X text 176 245 IEM KUG; +#X text 154 233 musil; +#X text 190 233 @; +#X text 198 233 iem.at; +#X text 159 255 Graz \, Austria; +#X obj 22 134 filter~ dlp2 \$1 \$2 1 \$3; +#X text 12 8 lp2_dp~; +#X text 80 9 lowpass 2.order with double precision; +#X text 111 222 (c) Thomas Musil 2000 - 2010; +#X connect 0 0 18 0; +#X connect 1 0 18 1; +#X connect 5 0 18 2; +#X connect 8 0 18 4; +#X connect 18 0 2 0; diff --git a/externals/iemlib/iemabs/lp2c_d~.pd b/externals/iemlib/iemabs/lp2c_dp~.pd similarity index 69% rename from externals/iemlib/iemabs/lp2c_d~.pd rename to externals/iemlib/iemabs/lp2c_dp~.pd index 6b7b9f803557aee325656c4bd995b3a6e892a3e5..727b787ac894dc171bbfcb80a8a7ff809c11541a 100644 --- a/externals/iemlib/iemabs/lp2c_d~.pd +++ b/externals/iemlib/iemabs/lp2c_dp~.pd @@ -8,8 +8,7 @@ #X text 195 136 <float> interpolation_time [ms]; #X text 32 176 ~filtered signal_out~; #X obj 126 111 inlet; -#X text 12 8 lp2c~; -#X text 60 8 lowpass 2.order for filter-cascades; +#X text 77 8 lowpass 2.order for filter-cascades; #X obj 161 136 inlet; #X text 127 87 <float> damping [-]; #X text 162 111 <float> frequency-shift [-]; @@ -24,17 +23,19 @@ #X text 128 208 3.arg: <float> frequency-shift [-]; #X text 128 218 4.arg: <float> interpolation_time [ms] (opt.); #X text 176 325 IEM KUG; -#X text 160 313 musil; +#X text 154 313 musil; #X text 190 313 @; -#X text 196 313 iem.at; -#X text 111 302 (c) Thomas Musil 2000 - 2005; +#X text 198 313 iem.at; #X text 159 335 Graz \, Austria; #X obj 22 157 filter~ dlp2c \$1 \$2 \$3 \$4; -#X connect 0 0 30 0; -#X connect 1 0 14 0; -#X connect 1 0 30 1; -#X connect 5 0 30 2; -#X connect 8 0 30 3; -#X connect 11 0 17 0; -#X connect 11 0 30 4; -#X connect 30 0 2 0; +#X text 12 8 lp2c_dp~; +#X text 129 23 with double precision; +#X text 111 302 (c) Thomas Musil 2000 - 2010; +#X connect 0 0 28 0; +#X connect 1 0 13 0; +#X connect 1 0 28 1; +#X connect 5 0 28 2; +#X connect 8 0 28 3; +#X connect 10 0 16 0; +#X connect 10 0 28 4; +#X connect 28 0 2 0; diff --git a/externals/iemlib/iemabs/output~.pd b/externals/iemlib/iemabs/output~.pd index 964b10ad4ecca2560f40e585c4e47d87884927ce..70bd6399a5e3d9b043b7d050f033de7584bb7401 100644 --- a/externals/iemlib/iemabs/output~.pd +++ b/externals/iemlib/iemabs/output~.pd @@ -1,27 +1,27 @@ -#N canvas 191 63 365 293 10; -#X obj 141 169 dbtorms; -#X obj 94 87 inlet; -#X text 94 64 level; -#X obj 141 215 line~; -#X obj 19 136 dac~; -#X text 19 67 audio; -#X text 151 151 show level; -#X obj 19 87 inlet~; -#X obj 19 109 *~; -#X obj 20 223 outlet; -#X msg 141 127 95; -#X obj 141 193 pack 0 500; -#X obj 20 200 pvu~; -#X obj 141 106 r newbang; -#X text 15 20 ouput~; -#X connect 0 0 11 0; -#X connect 1 0 0 0; -#X connect 3 0 8 1; -#X connect 7 0 8 0; -#X connect 8 0 4 1; -#X connect 8 0 4 0; -#X connect 8 0 12 0; -#X connect 10 0 0 0; -#X connect 11 0 3 0; -#X connect 12 0 9 0; -#X connect 13 0 10 0; +#N canvas 191 63 365 293 10; +#X obj 141 169 dbtorms; +#X obj 94 87 inlet; +#X text 94 64 level; +#X obj 141 215 line~; +#X obj 19 136 dac~; +#X text 19 67 audio; +#X text 151 151 show level; +#X obj 19 87 inlet~; +#X obj 19 109 *~; +#X obj 20 223 outlet; +#X msg 141 127 95; +#X obj 141 193 pack 0 500; +#X obj 20 200 pvu~; +#X obj 141 106 r newbang; +#X text 15 20 ouput~; +#X connect 0 0 11 0; +#X connect 1 0 0 0; +#X connect 3 0 8 1; +#X connect 7 0 8 0; +#X connect 8 0 4 1; +#X connect 8 0 4 0; +#X connect 8 0 12 0; +#X connect 10 0 0 0; +#X connect 11 0 3 0; +#X connect 12 0 9 0; +#X connect 13 0 10 0; diff --git a/externals/iemlib/iemabs/popup.pd b/externals/iemlib/iemabs/popup.pd new file mode 100644 index 0000000000000000000000000000000000000000..b36babeecc570377b0b153f4597ec24349d5739e --- /dev/null +++ b/externals/iemlib/iemabs/popup.pd @@ -0,0 +1,25 @@ +#N canvas 194 110 646 379 10; +#X obj 39 65 pop 6 17 0 0 play_cmd play_cmd play_cmd 82 9 192 17 -225280 +-1109 -260818 0 5 open rewind start stop quit; +#X obj 105 196 init_popup help-popup.txt play_cmd; +#X obj 25 196 r play_cmd; +#X obj 25 218 route set_pop_name; +#X text 11 9 popup = pop; +#X obj 263 236 pp set; +#X msg 263 258 0 open; +#X obj 69 276 unpack float symbol; +#X floatatom 69 299 5 0 0; +#X symbolatom 197 300 10 0 0; +#X obj 413 93 pop 7 14 0 0 empty empty empty 50 7 0 10 -262144 -1 -1 +0 1 pop; +#X floatatom 413 128 5 0 0; +#X symbolatom 460 129 10 0 0; +#X connect 1 0 10 0; +#X connect 2 0 3 0; +#X connect 3 1 5 0; +#X connect 3 1 7 0; +#X connect 5 0 6 0; +#X connect 7 0 8 0; +#X connect 7 1 9 0; +#X connect 10 0 11 0; +#X connect 10 1 12 0; diff --git a/externals/iemlib/iemlib1/sin_freq~-help.pd b/externals/iemlib/iemlib1/sin_freq~-help.pd new file mode 100644 index 0000000000000000000000000000000000000000..33245575737492d567eed69e28a850df83340c63 --- /dev/null +++ b/externals/iemlib/iemlib1/sin_freq~-help.pd @@ -0,0 +1,47 @@ +#N canvas 375 118 488 460 10; +#X text 28 48 dsp ON/OFF; +#X floatatom 155 63 3 15 133 0 - - -; +#X obj 155 81 mtof; +#X floatatom 155 102 9 0 22000 0 - - -; +#X text 224 100 Hz; +#X floatatom 11 88 5 0 0 0 - - -; +#X text 46 87 % cpu; +#X obj 11 68 dsp; +#X obj 11 48 tgl 15 0 empty empty empty 8 -8 0 10 -262144 -1 -1 1 1 +; +#X text 180 61 midi-pitch; +#X obj 336 305 unsig~; +#X text 149 400 IEM KUG; +#X text 126 388 musil; +#X text 163 388 @; +#X text 172 388 iem.at; +#X text 132 410 Graz \, Austria; +#X obj 154 241 sin_freq~; +#X obj 155 140 osc~ 440; +#X text 406 326 Hz; +#X text 84 377 (c) Thomas Musil 2000 - 2011; +#X text 10 7 sin_freq~; +#X text 105 8 calculate frequency of a; +#X text 105 20 sine-wave \, in Hz (signal-out); +#X floatatom 27 299 9 0 0 0 - - -; +#X floatatom 336 327 9 0 0 0 - - -; +#X obj 154 305 unsig~; +#X text 224 326 Hz; +#X floatatom 154 327 9 0 0 0 - - -; +#X obj 154 283 lp1~ 100; +#X obj 336 283 lp1_dp~ 10; +#X obj 27 276 unsig~ 10; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 17 0; +#X connect 7 0 5 0; +#X connect 8 0 7 0; +#X connect 10 0 24 0; +#X connect 16 0 28 0; +#X connect 16 0 29 0; +#X connect 16 0 30 0; +#X connect 17 0 16 0; +#X connect 25 0 27 0; +#X connect 28 0 25 0; +#X connect 29 0 10 0; +#X connect 30 0 23 0; diff --git a/externals/iemlib/iemlib1/sin_phase~-help.pd b/externals/iemlib/iemlib1/sin_phase~-help.pd index e1e6b9e071ed7fa0291a0d0a653e9cfa0fb1af93..263f1aa3ea88c69851ee7f37069d616077cd26a2 100644 --- a/externals/iemlib/iemlib1/sin_phase~-help.pd +++ b/externals/iemlib/iemlib1/sin_phase~-help.pd @@ -1,64 +1,72 @@ -#N canvas 375 118 488 460 10; -#X text 28 48 dsp ON/OFF; -#X floatatom 155 63 3 15 133 0 - - -; -#X obj 155 81 mtof; -#X floatatom 155 102 9 0 22000 0 - - -; -#X text 214 101 Hz; -#X floatatom 294 158 6 -360 360 0 - - -; -#X floatatom 11 88 5 0 0 0 - - -; -#X text 46 87 % cpu; -#X obj 11 68 dsp; -#X obj 11 48 tgl 15 0 empty empty empty 8 -8 0 10 -262144 -1 -1 0 1 -; -#X text 10 7 sin_phase~; -#X text 105 8 calculate phase-difference between 2; -#X text 105 20 sine-waves \, in samples (signal-out); -#X obj 155 241 sin_phase~; -#X obj 209 216 cos~; -#X obj 154 220 cos~; -#X obj 154 198 +~ 0; -#X obj 155 122 phasor~ 440; -#X text 340 155 percent; -#X text 180 61 midi-pitch; -#X text 295 140 phase-difference; -#X obj 156 264 lp1~ 10 100; -#X obj 157 286 unsig~; -#X floatatom 157 372 5 0 0 0 - - -; -#X obj 157 308 / 44100; -#X floatatom 92 326 5 0 0 0 - - -; -#X obj 157 330 * 10; -#X obj 157 350 * 360; -#X text 195 371 degree; -#X obj 61 268 unsig~; -#X floatatom 61 291 5 0 0 0 - - -; -#X obj 294 181 / 360; -#X obj 268 116 f; -#X text 115 418 IEM KUG; -#X text 99 406 musil; -#X text 129 406 @; -#X text 135 406 iem.at; -#X text 50 395 (c) Thomas Musil 2000 - 2005; -#X text 98 428 Graz \, Austria; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 3 0 17 0; -#X connect 3 0 32 0; -#X connect 5 0 31 0; -#X connect 8 0 6 0; -#X connect 9 0 8 0; -#X connect 13 0 21 0; -#X connect 13 0 29 0; -#X connect 14 0 13 1; -#X connect 15 0 13 0; -#X connect 16 0 15 0; -#X connect 17 0 14 0; -#X connect 17 0 16 0; -#X connect 21 0 22 0; -#X connect 22 0 24 0; -#X connect 22 0 25 0; -#X connect 24 0 26 0; -#X connect 26 0 27 0; -#X connect 27 0 23 0; -#X connect 29 0 30 0; -#X connect 31 0 16 1; -#X connect 32 0 26 1; +#N canvas 375 118 502 514 10; +#X text 28 48 dsp ON/OFF; +#X floatatom 155 63 3 15 133 0 - - -; +#X obj 155 81 mtof; +#X floatatom 155 102 9 0 22000 0 - - -; +#X text 214 101 Hz; +#X floatatom 338 75 6 -360 360 0 - - -; +#X floatatom 11 88 5 0 0 0 - - -; +#X text 46 87 % cpu; +#X obj 11 68 dsp; +#X obj 11 48 tgl 15 0 empty empty empty 8 -8 0 10 -262144 -1 -1 1 1 +; +#X text 10 7 sin_phase~; +#X text 105 8 calculate phase-difference between 2; +#X text 105 20 sine-waves \, in samples (signal-out); +#X obj 155 241 sin_phase~; +#X obj 213 197 cos~; +#X obj 155 197 cos~; +#X obj 155 175 +~ 0; +#X obj 155 122 phasor~ 440; +#X text 180 61 midi-pitch; +#X text 339 57 phase-difference; +#X obj 155 325 lp1~ 10 100; +#X obj 156 347 unsig~; +#X floatatom 156 393 5 0 0 0 - - -; +#X floatatom 90 359 5 0 0 0 - - -; +#X obj 156 371 * 360; +#X text 194 392 degree; +#X obj 31 271 unsig~; +#X floatatom 31 294 5 0 0 0 - - -; +#X obj 338 98 / 360; +#X obj 237 117 f; +#X text 113 451 IEM KUG; +#X text 97 439 musil; +#X text 127 439 @; +#X text 133 439 iem.at; +#X text 48 428 (c) Thomas Musil 2000 - 2005; +#X text 96 461 Graz \, Austria; +#X text 384 72 degree; +#X obj 240 242 sin_freq~; +#X obj 155 272 *~; +#X obj 24 316 unsig~; +#X floatatom 24 339 9 0 0 0 - - -; +#X obj 156 298 /~ 44100; +#X floatatom 303 282 5 0 0 0 - - -; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 17 0; +#X connect 3 0 29 0; +#X connect 5 0 28 0; +#X connect 8 0 6 0; +#X connect 9 0 8 0; +#X connect 13 0 26 0; +#X connect 13 0 38 0; +#X connect 14 0 13 1; +#X connect 14 0 37 0; +#X connect 15 0 13 0; +#X connect 16 0 15 0; +#X connect 17 0 14 0; +#X connect 17 0 16 0; +#X connect 20 0 21 0; +#X connect 21 0 23 0; +#X connect 21 0 24 0; +#X connect 24 0 22 0; +#X connect 26 0 27 0; +#X connect 28 0 16 1; +#X connect 37 0 38 1; +#X connect 38 0 39 0; +#X connect 38 0 41 0; +#X connect 39 0 40 0; +#X connect 41 0 20 0; +#X connect 42 0 20 1; diff --git a/externals/iemlib/iemlib1/sparse_FIR~-help.pd b/externals/iemlib/iemlib1/sparse_FIR~-help.pd index b4b6370cb8deb79aeb89d6dffdc69c91ea756bc0..56f8ca94a8888092877982f020ff7aeb77460be6 100644 --- a/externals/iemlib/iemlib1/sparse_FIR~-help.pd +++ b/externals/iemlib/iemlib1/sparse_FIR~-help.pd @@ -1,83 +1,97 @@ -#N canvas 125 49 971 642 10; -#X floatatom 4 133 5 0 0 0 - - -; -#X text 32 96 % cpu; -#X obj 4 93 dsp; -#X obj 4 73 tgl 15 0 empty empty dsp_ON/OFF 2 -8 0 10 -225271 -42246 --90881 1 1; -#X floatatom 183 494 7 0 0 0 - - -; -#X obj 112 373 dac~; -#X obj 112 347 gainvu~ 300; -#X obj 174 369 vu 15 120 empty empty 8 -8 0 10 -66577 -1 1 0; -#X obj 294 216 vsl 15 128 0 127 0 0 empty empty gain -7 -8 0 10 -225271 --42246 -90881 7300 1; -#X obj 113 95 noise~; -#X floatatom 173 512 7 0 0 0 - - -; -#X floatatom 17 113 5 0 0 0 - - -; -#X text 170 567 IEM KUG; -#X text 146 555 musil; -#X text 182 555 @; -#X text 190 555 iem.at; -#X text 153 577 Graz \, Austria; -#X floatatom 142 323 5 0 0 0 - - -; -#X msg 353 118 size 256; -#X msg 370 523 0 1 1 1; -#X msg 366 321 0 1 10 1 20 1 30 1 40 1 50 1 60 1 70 1 80 1; -#X obj 707 38 t b b; -#X msg 767 101 set; -#X msg 668 101 add2 \$1 \$2; -#X obj 707 18 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +#N canvas 125 49 986 684 10; +#X floatatom 4 149 5 0 0 0 - - -; +#X text 32 112 % cpu; +#X obj 4 109 dsp; +#X obj 4 89 tgl 15 0 empty empty dsp_ON/OFF 2 -8 0 10 -225271 -42246 +-90881 0 1; +#X floatatom 183 510 7 0 0 0 - - -; +#X obj 112 389 dac~; +#X obj 112 363 gainvu~ 300; +#X obj 174 385 vu 15 120 empty empty 8 -8 0 10 -66577 -1 1 0; +#X obj 294 232 vsl 15 128 0 127 0 0 empty empty gain -7 -8 0 10 -225271 +-42246 -90881 6000 1; +#X obj 113 111 noise~; +#X floatatom 173 528 7 0 0 0 - - -; +#X floatatom 17 129 5 0 0 0 - - -; +#X text 170 583 IEM KUG; +#X text 146 571 musil; +#X text 182 571 @; +#X text 190 571 iem.at; +#X text 153 593 Graz \, Austria; +#X floatatom 142 339 5 0 0 0 - - -; +#X msg 353 134 size 256; +#X msg 409 500 0 1 1 1; +#X msg 405 348 0 1 10 1 20 1 30 1 40 1 50 1 60 1 70 1 80 1; +#X obj 707 54 t b b; +#X msg 767 117 set; +#X msg 668 117 add2 \$1 \$2; +#X obj 707 34 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; -#X msg 354 140 order 384; -#X msg 366 342 matrix 9 2 0 1 10 1 20 1 30 1 40 1 50 1 60 1 70 1 80 +#X msg 354 156 order 384; +#X msg 405 369 matrix 9 2 0 1 10 1 20 1 30 1 40 1 50 1 60 1 70 1 80 1; -#X msg 366 363 matrix 2 9 0 1 10 1 20 1 30 1 40 1 50 1 60 1 70 1 80 -1; -#X text 17 16 sparse_FIR~; -#X msg 370 581 0 0; -#X msg 370 489 0 -0.1 1 -0.18 2 -0.1 3 0.15 4 0.4 5 0.7 6 0.4 7 0.15 +#X text 17 14 sparse_FIR~; +#X msg 409 560 0 0; +#X msg 409 466 0 -0.1 1 -0.18 2 -0.1 3 0.15 4 0.4 5 0.7 6 0.4 7 0.15 8 -0.1 9 -0.18 10 -0.1; -#X msg 510 126 0 0.04 1 0.04 2 0.04 3 0.04 4 0.04 5 0.04 6 0.04 7 0.04 +#X msg 510 142 0 0.04 1 0.04 2 0.04 3 0.04 4 0.04 5 0.04 6 0.04 7 0.04 8 0.04 9 0.04 10 0.04 11 0.04 12 0.04 13 0.04 14 0.04 15 0.04 16 0.04 17 0.04 18 0.04 19 0.04 20 0.04 21 0.04 22 0.04 23 0.04 24 0.04 25 0.04 26 0.04 27 0.04 28 0.04 29 0.04; -#X obj 668 81 pack 0 0.04; -#X obj 668 59 for++ 0 29; -#X text 366 217 A list of alternating index- and value- doubles will +#X obj 668 97 pack 0 0.04; +#X obj 668 75 for++ 0 29; +#X text 405 204 A list of alternating index- and value- doubles will change the coefficients of convolution. The number of pairs should be less than the order of FIR.; -#X text 365 291 A matrix message will do the same.; -#X obj 568 93 loadbang; -#X text 134 16 convolve a signal with a coefficent list of non zero +#X text 404 318 A matrix message will do the same.; +#X obj 568 109 loadbang; +#X text 134 14 convolve a signal with a coefficent list of non zero index/value pairs. All values between the determined values will be set to zero and won't be calculated (sparse).; -#X text 227 182 1.arg: <float> convolution-length (FIR order or size) -; -#X text 175 60 will change the max. order of FIR filter (or size). -; -#X text 366 263 Each pair or double begins with an index followed by +#X text 405 250 Each pair or double begins with an index followed by its value.; -#X obj 113 180 sparse_FIR~ 256; -#X msg 286 97 size 16; -#X obj 327 198 init 60; -#X text 103 543 (c) Thomas Musil 2000 - 2011; -#X msg 370 544 0 1 40 -1 80 1 120 -1 160 1 200 -1 240 1 280 -1 320 +#X obj 113 196 sparse_FIR~ 256; +#X msg 286 113 size 16; +#X obj 327 214 init 60; +#X text 103 559 (c) Thomas Musil 2000 - 2011; +#X msg 409 521 0 1 40 -1 80 1 120 -1 160 1 200 -1 240 1 280 -1 320 1 360 -1 400 1; -#X msg 353 97 size 128; -#X msg 287 141 size 64; -#X msg 287 119 size 32; -#X msg 221 139 size 8; -#X msg 222 117 size 4; -#X text 770 318 same as; -#X text 771 341 same as; -#X text 770 363 same as; -#X msg 35 236 size 0; -#X msg 223 97 size 3; -#X msg 163 142 size 2; -#X msg 165 120 size 1; -#X text 847 104 sparse list; -#X text 680 470 sparse list; -#X text 490 384 sparse matrix; -#X text 29 219 ignored; +#X msg 353 113 size 128; +#X msg 287 157 size 64; +#X msg 287 135 size 32; +#X msg 221 155 size 8; +#X msg 222 133 size 4; +#X text 799 345 same as; +#X text 800 368 same as; +#X msg 35 252 size 0; +#X msg 223 113 size 3; +#X msg 163 158 size 2; +#X msg 165 136 size 1; +#X text 847 120 sparse list; +#X text 719 447 sparse list; +#X text 529 411 sparse matrix; +#X text 29 235 ignored; +#X msg 429 134 order 4; +#X msg 428 156 order 8; +#X msg 409 436 0 0.1 3 0.1 6 0.1 9 0.1 12 0.1; +#X msg 408 585 0 0.3 1 0.3 2 0.3 3 0.3; +#X msg 569 586 10 0.3 11 0.3 12 0.3 13 0.3; +#X msg 755 585 size 4; +#X msg 808 586 size 14; +#X text 183 67 "size" or "order" followed by a number change the max. +order of FIR filter (or size = order) and the memory-management.; +#X text 404 283 All other values will reset to zero (not calculated). +; +#X text 134 311 (FIR order or size=order); +#X text 135 297 max. convolution-length; +#X text 123 283 1.arg: <float>; +#X text 853 301 matrix 9 2 \; 0 1 \; 10 1 \; 20 1 \; 30 1 \; 40 1 \; +50 1 \; 60 1 \; 70 1 \; 80 1; +#X text 1068 321 matrix 2 9 \; 0 10 20 30 40 50 60 70 80 \; 1 1 1 1 +1 1 1 1 1; +#X msg 1073 368 matrix 2 9 0 1 10 1 20 1 30 1 40 1 50 1 60 1 70 1 80 +1; +#X text 1073 392 not same as; #X connect 2 0 0 0; #X connect 2 1 11 0; #X connect 3 0 2 0; @@ -88,34 +102,40 @@ its value.; #X connect 7 0 10 0; #X connect 7 1 4 0; #X connect 8 0 6 1; -#X connect 9 0 41 0; -#X connect 18 0 41 0; -#X connect 19 0 41 0; -#X connect 20 0 41 0; -#X connect 21 0 33 0; +#X connect 9 0 38 0; +#X connect 18 0 38 0; +#X connect 19 0 38 0; +#X connect 20 0 38 0; +#X connect 21 0 32 0; #X connect 21 1 22 0; -#X connect 22 0 31 0; -#X connect 23 0 31 0; +#X connect 22 0 30 0; +#X connect 23 0 30 0; #X connect 24 0 21 0; -#X connect 25 0 41 0; -#X connect 26 0 41 0; -#X connect 27 0 41 0; -#X connect 29 0 41 0; -#X connect 30 0 41 0; -#X connect 31 0 41 0; -#X connect 32 0 23 0; -#X connect 33 0 32 0; -#X connect 36 0 31 0; -#X connect 41 0 6 0; -#X connect 42 0 41 0; -#X connect 43 0 8 0; -#X connect 45 0 41 0; -#X connect 46 0 41 0; -#X connect 47 0 41 0; -#X connect 48 0 41 0; -#X connect 49 0 41 0; -#X connect 50 0 41 0; -#X connect 54 0 41 0; -#X connect 55 0 41 0; -#X connect 56 0 41 0; -#X connect 57 0 41 0; +#X connect 25 0 38 0; +#X connect 26 0 38 0; +#X connect 28 0 38 0; +#X connect 29 0 38 0; +#X connect 30 0 38 0; +#X connect 31 0 23 0; +#X connect 32 0 31 0; +#X connect 35 0 30 0; +#X connect 38 0 6 0; +#X connect 39 0 38 0; +#X connect 40 0 8 0; +#X connect 42 0 38 0; +#X connect 43 0 38 0; +#X connect 44 0 38 0; +#X connect 45 0 38 0; +#X connect 46 0 38 0; +#X connect 47 0 38 0; +#X connect 50 0 38 0; +#X connect 51 0 38 0; +#X connect 52 0 38 0; +#X connect 53 0 38 0; +#X connect 58 0 38 0; +#X connect 59 0 38 0; +#X connect 60 0 38 0; +#X connect 61 0 38 0; +#X connect 62 0 38 0; +#X connect 63 0 38 0; +#X connect 64 0 38 0; diff --git a/externals/iemlib/iemlib1/src/FIR~.c b/externals/iemlib/iemlib1/src/FIR~.c index 608898bc8cd3f1fa461b23b55c00e7af531923db..07f841759fed6d6a656020769c528c785130b330 100644 --- a/externals/iemlib/iemlib1/src/FIR~.c +++ b/externals/iemlib/iemlib1/src/FIR~.c @@ -1,7 +1,7 @@ /* For information on usage and redistribution, and for a DISCLAIMER OF ALL * WARRANTIES, see the file, "LICENSE.txt," in this distribution. -iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */ +iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2012 */ #include "m_pd.h" @@ -12,34 +12,35 @@ iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 typedef struct _FIR_tilde { - t_object x_obj; - t_float *x_coef_beg; - t_float *x_history_beg; - int x_rw_index; - int x_fir_order; - t_symbol *x_table_name; - t_float x_msi; + t_object x_obj; + iemarray_t *x_array_coef_beg; + t_sample *x_history_beg; + int x_rw_index; + int x_fir_order; + int x_malloc_history; + t_symbol *x_table_name; + t_float x_float_sig_in; } t_FIR_tilde; static t_class *FIR_tilde_class; static t_int *FIR_tilde_perform(t_int *w) { - t_float *in = (t_float *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); t_FIR_tilde *x = (t_FIR_tilde *)(w[3]); int n = (t_int)(w[4]); int rw_index = x->x_rw_index; int i, j; int order = x->x_fir_order; int ord16 = order / 16; - t_float sum=0.0f; - t_float *coef = x->x_coef_beg; - t_float *write_hist1=x->x_history_beg; - t_float *write_hist2; - t_float *read_hist; - t_float *coef_vec; - t_float *hist_vec; + t_sample sum=0.0; + iemarray_t *coef = x->x_array_coef_beg; + t_sample *write_hist1=x->x_history_beg; + t_sample *write_hist2; + t_sample *read_hist; + iemarray_t *coef_vec; + t_sample *hist_vec; if(!coef) goto FIR_tildeperfzero; @@ -53,33 +54,33 @@ static t_int *FIR_tilde_perform(t_int *w) write_hist1[rw_index] = in[i]; write_hist2[rw_index] = in[i]; - sum = 0.0f; + sum = 0.0; coef_vec = coef; hist_vec = &read_hist[rw_index]; for(j=0; j<ord16; j++) { - sum += coef_vec[0] * hist_vec[0]; - sum += coef_vec[1] * hist_vec[-1]; - sum += coef_vec[2] * hist_vec[-2]; - sum += coef_vec[3] * hist_vec[-3]; - sum += coef_vec[4] * hist_vec[-4]; - sum += coef_vec[5] * hist_vec[-5]; - sum += coef_vec[6] * hist_vec[-6]; - sum += coef_vec[7] * hist_vec[-7]; - sum += coef_vec[8] * hist_vec[-8]; - sum += coef_vec[9] * hist_vec[-9]; - sum += coef_vec[10] * hist_vec[-10]; - sum += coef_vec[11] * hist_vec[-11]; - sum += coef_vec[12] * hist_vec[-12]; - sum += coef_vec[13] * hist_vec[-13]; - sum += coef_vec[14] * hist_vec[-14]; - sum += coef_vec[15] * hist_vec[-15]; + sum += (t_sample)(iemarray_getfloat(coef_vec, 0)) * hist_vec[0]; + sum += (t_sample)(iemarray_getfloat(coef_vec, 1)) * hist_vec[-1]; + sum += (t_sample)(iemarray_getfloat(coef_vec, 2)) * hist_vec[-2]; + sum += (t_sample)(iemarray_getfloat(coef_vec, 3)) * hist_vec[-3]; + sum += (t_sample)(iemarray_getfloat(coef_vec, 4)) * hist_vec[-4]; + sum += (t_sample)(iemarray_getfloat(coef_vec, 5)) * hist_vec[-5]; + sum += (t_sample)(iemarray_getfloat(coef_vec, 6)) * hist_vec[-6]; + sum += (t_sample)(iemarray_getfloat(coef_vec, 7)) * hist_vec[-7]; + sum += (t_sample)(iemarray_getfloat(coef_vec, 8)) * hist_vec[-8]; + sum += (t_sample)(iemarray_getfloat(coef_vec, 9)) * hist_vec[-9]; + sum += (t_sample)(iemarray_getfloat(coef_vec, 10)) * hist_vec[-10]; + sum += (t_sample)(iemarray_getfloat(coef_vec, 11)) * hist_vec[-11]; + sum += (t_sample)(iemarray_getfloat(coef_vec, 12)) * hist_vec[-12]; + sum += (t_sample)(iemarray_getfloat(coef_vec, 13)) * hist_vec[-13]; + sum += (t_sample)(iemarray_getfloat(coef_vec, 14)) * hist_vec[-14]; + sum += (t_sample)(iemarray_getfloat(coef_vec, 15)) * hist_vec[-15]; coef_vec += 16; hist_vec -= 16; } for(j=ord16*16; j<order; j++) { - sum += coef[j] * read_hist[rw_index-j]; + sum += (t_sample)(iemarray_getfloat(coef, j)) * read_hist[rw_index-j]; } out[i] = sum; @@ -94,7 +95,7 @@ static t_int *FIR_tilde_perform(t_int *w) FIR_tildeperfzero: while(n--) - *out++ = 0.0f; + *out++ = 0.0; return(w+5); } @@ -103,30 +104,38 @@ void FIR_tilde_set(t_FIR_tilde *x, t_symbol *table_name, t_floatarg forder) t_garray *ga; int table_size; int order = (int)forder; + int i; x->x_table_name = table_name; + if(order < 1) + order = 1; + x->x_fir_order = order; if(!(ga = (t_garray *)pd_findbyclass(x->x_table_name, garray_class))) { if(*table_name->s_name) error("FIR~: %s: no such table~", x->x_table_name->s_name); - x->x_coef_beg = 0; + x->x_array_coef_beg = (iemarray_t *)0; } - else if(!garray_getfloatarray(ga, &table_size, &x->x_coef_beg)) + else if(!iemarray_getarray(ga, &table_size, &x->x_array_coef_beg)) { error("%s: bad template for FIR~", x->x_table_name->s_name); - x->x_coef_beg = 0; + x->x_array_coef_beg = (iemarray_t *)0; } else if(table_size < order) { error("FIR~: tablesize %d < order %d !!!!", table_size, order); - x->x_coef_beg = 0; + x->x_array_coef_beg = (iemarray_t *)0; } else - garray_usedindsp(ga); + { + garray_usedindsp(ga);/* good */ + } x->x_rw_index = 0; - if(order > x->x_fir_order)/* resize */ - x->x_history_beg = (t_float *)resizebytes(x->x_history_beg, 2*x->x_fir_order*sizeof(t_float), 2*order*sizeof(float)); - x->x_fir_order = order; + if(x->x_fir_order > x->x_malloc_history)/* resize */ + { + x->x_history_beg = (t_sample *)resizebytes(x->x_history_beg, 2*x->x_malloc_history*sizeof(t_sample), 2*x->x_fir_order*sizeof(t_sample)); + x->x_malloc_history = x->x_fir_order; + } } static void FIR_tilde_dsp(t_FIR_tilde *x, t_signal **sp) @@ -135,18 +144,20 @@ static void FIR_tilde_dsp(t_FIR_tilde *x, t_signal **sp) dsp_add(FIR_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, sp[0]->s_n); } -static void *FIR_tilde_new(t_symbol *ref, t_floatarg np) +static void *FIR_tilde_new(t_symbol *array_name, t_floatarg forder) { t_FIR_tilde *x = (t_FIR_tilde *)pd_new(FIR_tilde_class); + int order = (int)forder; outlet_new(&x->x_obj, &s_signal); - x->x_msi = 0; - x->x_table_name = ref; - x->x_coef_beg = 0; - if((int)np < 1) - np = 1.0; - x->x_fir_order = (int)np; - x->x_history_beg = (t_float *)getbytes((2*x->x_fir_order)*sizeof(t_float)); + x->x_float_sig_in = 0; + x->x_table_name = array_name; + x->x_array_coef_beg = 0; + if(order < 1) + order = 1; + x->x_fir_order = order; + x->x_malloc_history = order; + x->x_history_beg = (t_sample *)getbytes((2*x->x_malloc_history)*sizeof(t_sample)); x->x_rw_index = 0; return(x); } @@ -154,16 +165,14 @@ static void *FIR_tilde_new(t_symbol *ref, t_floatarg np) static void FIR_tilde_free(t_FIR_tilde *x) { if(x->x_history_beg) - freebytes(x->x_history_beg, (2*x->x_fir_order)*sizeof(t_float)); + freebytes(x->x_history_beg, (2*x->x_malloc_history)*sizeof(t_sample)); } void FIR_tilde_setup(void) { FIR_tilde_class = class_new(gensym("FIR~"), (t_newmethod)FIR_tilde_new, (t_method)FIR_tilde_free, sizeof(t_FIR_tilde), 0, A_DEFSYM, A_DEFFLOAT, 0); - CLASS_MAINSIGNALIN(FIR_tilde_class, t_FIR_tilde, x_msi); + CLASS_MAINSIGNALIN(FIR_tilde_class, t_FIR_tilde, x_float_sig_in); class_addmethod(FIR_tilde_class, (t_method)FIR_tilde_dsp, gensym("dsp"), 0); - class_addmethod(FIR_tilde_class, (t_method)FIR_tilde_set, - gensym("set"), A_SYMBOL, A_FLOAT, 0); -// class_sethelpsymbol(FIR_tilde_class, gensym("iemhelp/help-FIR~")); + class_addmethod(FIR_tilde_class, (t_method)FIR_tilde_set, gensym("set"), A_SYMBOL, A_FLOAT, 0); } diff --git a/externals/iemlib/iemlib1/src/iemlib1.dsp b/externals/iemlib/iemlib1/src/VC6/iemlib1.dsp similarity index 100% rename from externals/iemlib/iemlib1/src/iemlib1.dsp rename to externals/iemlib/iemlib1/src/VC6/iemlib1.dsp diff --git a/externals/iemlib/iemlib1/src/iemlib1.dsw b/externals/iemlib/iemlib1/src/VC6/iemlib1.dsw similarity index 100% rename from externals/iemlib/iemlib1/src/iemlib1.dsw rename to externals/iemlib/iemlib1/src/VC6/iemlib1.dsw diff --git a/externals/iemlib/iemlib1/src/VC6/makefile_win b/externals/iemlib/iemlib1/src/VC6/makefile_win new file mode 100644 index 0000000000000000000000000000000000000000..161bf97aaf922ae8932cfb3734e3a42a584ca414 --- /dev/null +++ b/externals/iemlib/iemlib1/src/VC6/makefile_win @@ -0,0 +1,59 @@ +TARGET = iemlib1 + +all: ..\$(TARGET).dll + +VIS_CPP_PATH = "C:\Programme\Microsoft Visual Studio\Vc98" +PD_INST_PATH = "C:\Programme\pd" +PD_WIN_INCLUDE_PATH = /I. /I$(PD_INST_PATH)\src /I$(VIS_CPP_PATH)\include +PD_WIN_C_FLAGS = /nologo /W3 /WX /DMSW /DNT /DPD /DWIN32 /DWINDOWS /Ox -DPA_LITTLE_ENDIAN +PD_WIN_L_FLAGS = /nologo + +PD_WIN_LIB = /NODEFAULTLIB:libc /NODEFAULTLIB:oldnames /NODEFAULTLIB:kernel /NODEFAULTLIB:uuid \ + $(VIS_CPP_PATH)\lib\libc.lib \ + $(VIS_CPP_PATH)\lib\oldnames.lib \ + $(VIS_CPP_PATH)\lib\kernel32.lib \ + $(VIS_CPP_PATH)\lib\wsock32.lib \ + $(VIS_CPP_PATH)\lib\winmm.lib \ + $(PD_INST_PATH)\bin\pthreadVC.lib \ + $(PD_INST_PATH)\bin\pd.lib + +SRC = biquad_freq_resp.c \ + db2v.c \ + f2note.c \ + filter~.c \ + FIR~.c \ + for++.c \ + gate.c \ + hml_shelf~.c \ + iem_cot4~.c \ + iem_delay~.c \ + iem_pow4~.c \ + iem_sqrt4~.c \ + lp1_t~.c \ + mov_avrg_kern~.c \ + para_bp2~.c \ + peakenv~.c \ + peakenv_hold~.c \ + prvu~.c \ + pvu~.c \ + rvu~.c \ + sin_phase~.c \ + sparse_FIR~ \ + soundfile_info.c \ + split.c \ + v2db.c \ + vcf_filter~.c \ + $(TARGET).c + + +OBJ = $(SRC:.c=.obj) + +.c.obj: + cl $(PD_WIN_C_FLAGS) $(PD_WIN_INCLUDE_PATH) /c $*.c + +..\$(TARGET).dll: $(OBJ) + link $(PD_WIN_L_FLAGS) /dll /export:$(TARGET)_setup \ + /out:..\$(TARGET).dll $(OBJ) $(PD_WIN_LIB) + +clean: + del *.obj diff --git a/externals/iemlib/iemlib1/src/VC7/iemlib1.vcproj b/externals/iemlib/iemlib1/src/VC7/iemlib1.vcproj new file mode 100644 index 0000000000000000000000000000000000000000..a49d2df3a05bc3fe7ad520d42e6a48c42a983b6c --- /dev/null +++ b/externals/iemlib/iemlib1/src/VC7/iemlib1.vcproj @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="7.10" + Name="iemlib1" + ProjectGUID="{6A44952F-0D55-44EE-9032-928368583BEC}" + SccProjectName="" + SccLocalPath="" + Keyword="MakeFileProj"> + <Platforms> + <Platform + Name="Win32"/> + </Platforms> + <Configurations> + <Configuration + Name="Debug|Win32" + OutputDirectory=".\Debug" + IntermediateDirectory=".\Debug" + ConfigurationType="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCNMakeTool" + BuildCommandLine="NMAKE /f makefile_vc7proj" + ReBuildCommandLine="NMAKE /f makefile_vc7proj /a" + Output="iemlib1.exe"/> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory=".\Release" + IntermediateDirectory=".\Release" + ConfigurationType="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCNMakeTool" + BuildCommandLine="NMAKE /f makefile_vc7proj" + ReBuildCommandLine="NMAKE /f makefile_vc7proj /a" + Output="iemlib1.exe"/> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <File + RelativePath="iemlib1.bsc"> + </File> + <File + RelativePath="makefile_vc7proj"> + </File> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/externals/iemlib/iemlib1/src/VC7/makefile_vc7proj b/externals/iemlib/iemlib1/src/VC7/makefile_vc7proj new file mode 100644 index 0000000000000000000000000000000000000000..af741d8a9859973ce671bd1037aaced27e9ad872 --- /dev/null +++ b/externals/iemlib/iemlib1/src/VC7/makefile_vc7proj @@ -0,0 +1,57 @@ +TARGET = iemlib1 + +all: ..\$(TARGET).dll + +VIS_CPP_PATH = "C:\Programme\Microsoft Visual Studio .NET 2003\Vc7" +VIS_SDK_PATH = "C:\Programme\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK" +PD_INST_PATH = "C:\Programme\pd-0.42-5" +PD_WIN_INCLUDE_PATH = /I. /I$(PD_INST_PATH)\src /I$(VIS_CPP_PATH)\include +PD_WIN_C_FLAGS = /nologo /W3 /WX /DMSW /DNT /DPD /DWIN32 /DWINDOWS /Ox -D_CRT_SECURE_NO_WARNINGS +PD_WIN_L_FLAGS = /nologo + +PD_WIN_LIB = /NODEFAULTLIB:libcmt /NODEFAULTLIB:oldnames /NODEFAULTLIB:kernel32 \ + $(VIS_CPP_PATH)\lib\libcmt.lib \ + $(VIS_CPP_PATH)\lib\oldnames.lib \ + $(VIS_SDK_PATH)\lib\kernel32.lib \ + $(PD_INST_PATH)\bin\pd.lib + +SRC = biquad_freq_resp.c \ + db2v.c \ + f2note.c \ + filter~.c \ + FIR~.c \ + for++.c \ + gate.c \ + hml_shelf~.c \ + iem_cot4~.c \ + iem_delay~.c \ + iem_pow4~.c \ + iem_sqrt4~.c \ + lp1_t~.c \ + mov_avrg_kern~.c \ + para_bp2~.c \ + peakenv~.c \ + peakenv_hold~.c \ + prvu~.c \ + pvu~.c \ + rvu~.c \ + sin_phase~.c \ + soundfile_info.c \ + sparse_FIR~.c \ + split.c \ + v2db.c \ + vcf_filter~.c \ + $(TARGET).c + + +OBJ = $(SRC:.c=.obj) + +.c.obj: + cl $(PD_WIN_C_FLAGS) $(PD_WIN_INCLUDE_PATH) /c $*.c + +..\$(TARGET).dll: $(OBJ) + link $(PD_WIN_L_FLAGS) /dll /export:$(TARGET)_setup \ + /out:..\$(TARGET).dll $(OBJ) $(PD_WIN_LIB) + +clean: + del *.obj diff --git a/externals/iemlib/iemlib1/src/VC9/iemlib1.sln b/externals/iemlib/iemlib1/src/VC9/iemlib1.sln new file mode 100644 index 0000000000000000000000000000000000000000..ddf7a557045bd67810098d006c47f85851b220ec --- /dev/null +++ b/externals/iemlib/iemlib1/src/VC9/iemlib1.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iemlib1", "iemlib1.vcproj", "{5ECC5EEF-09A4-4DDD-B1C8-D4FA1D5B8BD5}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {5ECC5EEF-09A4-4DDD-B1C8-D4FA1D5B8BD5}.Debug|Win32.ActiveCfg = Release|Win32 + {5ECC5EEF-09A4-4DDD-B1C8-D4FA1D5B8BD5}.Debug|Win32.Build.0 = Release|Win32 + {5ECC5EEF-09A4-4DDD-B1C8-D4FA1D5B8BD5}.Release|Win32.ActiveCfg = Release|Win32 + {5ECC5EEF-09A4-4DDD-B1C8-D4FA1D5B8BD5}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/externals/iemlib/iemlib1/src/VC9/iemlib1.vcproj b/externals/iemlib/iemlib1/src/VC9/iemlib1.vcproj new file mode 100644 index 0000000000000000000000000000000000000000..47d01192c47dff3687b8a0deb478b3e1865b3e9d --- /dev/null +++ b/externals/iemlib/iemlib1/src/VC9/iemlib1.vcproj @@ -0,0 +1,77 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="9,00" + Name="iemlib1" + ProjectGUID="{5ECC5EEF-09A4-4DDD-B1C8-D4FA1D5B8BD5}" + Keyword="MakeFileProj" + TargetFrameworkVersion="0" + > + <Platforms> + <Platform + Name="Win32" + /> + </Platforms> + <ToolFiles> + </ToolFiles> + <Configurations> + <Configuration + Name="Debug|Win32" + OutputDirectory=".\Debug" + IntermediateDirectory=".\Debug" + ConfigurationType="0" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" + ATLMinimizesCRunTimeLibraryUsage="false" + > + <Tool + Name="VCNMakeTool" + BuildCommandLine="NMAKE /f makefile_win" + ReBuildCommandLine="NMAKE /f makefile_win /a" + CleanCommandLine="" + Output="iemlib1.exe" + PreprocessorDefinitions="" + IncludeSearchPath="" + ForcedIncludes="" + AssemblySearchPath="" + ForcedUsingAssemblies="" + CompileAsManaged="" + /> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory=".\Release" + IntermediateDirectory=".\Release" + ConfigurationType="0" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" + ATLMinimizesCRunTimeLibraryUsage="false" + > + <Tool + Name="VCNMakeTool" + BuildCommandLine="NMAKE /f makefile_win" + ReBuildCommandLine="NMAKE /f makefile_win /a" + CleanCommandLine="" + Output="iemlib1.exe" + PreprocessorDefinitions="" + IncludeSearchPath="" + ForcedIncludes="" + AssemblySearchPath="" + ForcedUsingAssemblies="" + CompileAsManaged="" + /> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <File + RelativePath="iemlib1.bsc" + > + </File> + <File + RelativePath="makefile_win" + > + </File> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/externals/iemlib/iemlib1/src/VC9/makefile_win b/externals/iemlib/iemlib1/src/VC9/makefile_win new file mode 100644 index 0000000000000000000000000000000000000000..c611e8e93efed002148271b19870248f6e9b4fb9 --- /dev/null +++ b/externals/iemlib/iemlib1/src/VC9/makefile_win @@ -0,0 +1,56 @@ +TARGET = iemlib1 + +all: ..\$(TARGET).dll + +VIS_CPP_PATH = "$(PROGRAMFILES)\Microsoft Visual Studio 9.0\VC" +VIS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDKs\Windows\v6.0A" +PD_INST_PATH = "$(PROGRAMFILES)\pd" +PD_WIN_INCLUDE_PATH = /I. /I$(PD_INST_PATH)\src /I$(VIS_CPP_PATH)\include +PD_WIN_C_FLAGS = /nologo /W3 /WX /DMSW /DNT /DPD /DWIN32 /DWINDOWS /DHAVE_G_CANVAS_H /Ox -D_CRT_SECURE_NO_WARNINGS +PD_WIN_L_FLAGS = /nologo + +PD_WIN_LIB = /NODEFAULTLIB:libcmt /NODEFAULTLIB:oldnames /NODEFAULTLIB:kernel32 \ + $(VIS_CPP_PATH)\lib\libcmt.lib \ + $(VIS_CPP_PATH)\lib\oldnames.lib \ + $(VIS_SDK_PATH)\lib\kernel32.lib \ + $(PD_INST_PATH)\bin\pd.lib + +SRC = biquad_freq_resp.c \ + db2v.c \ + f2note.c \ + filter~.c \ + FIR~.c \ + for++.c \ + gate.c \ + hml_shelf~.c \ + iem_cot4~.c \ + iem_delay~.c \ + iem_pow4~.c \ + iem_sqrt4~.c \ + lp1_t~.c \ + mov_avrg_kern~.c \ + para_bp2~.c \ + peakenv~.c \ + peakenv_hold~.c \ + prvu~.c \ + pvu~.c \ + rvu~.c \ + sin_phase~.c \ + soundfile_info.c \ + split.c \ + v2db.c \ + vcf_filter~.c \ + $(TARGET).c + + +OBJ = $(SRC:.c=.obj) + +.c.obj: + cl $(PD_WIN_C_FLAGS) $(PD_WIN_INCLUDE_PATH) /c $*.c + +..\$(TARGET).dll: $(OBJ) + link $(PD_WIN_L_FLAGS) /dll /export:$(TARGET)_setup \ + /out:..\$(TARGET).dll $(OBJ) $(PD_WIN_LIB) + +clean: + del *.obj diff --git a/externals/iemlib/iemlib1/src/biquad_freq_resp.c b/externals/iemlib/iemlib1/src/biquad_freq_resp.c index e95a84c1cc3e5d21d063b0db4a9e56af0f123524..aaadfac4ccb3807123ccbd23e65dfecef007a6f2 100644 --- a/externals/iemlib/iemlib1/src/biquad_freq_resp.c +++ b/externals/iemlib/iemlib1/src/biquad_freq_resp.c @@ -1,7 +1,7 @@ /* For information on usage and redistribution, and for a DISCLAIMER OF ALL * WARRANTIES, see the file, "LICENSE.txt," in this distribution. -iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */ +iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2011 */ #include "m_pd.h" @@ -21,32 +21,39 @@ typedef struct _biquad_freq_resp t_float b2; t_outlet *x_out_re; t_outlet *x_out_im; + t_outlet *x_out_abs; + t_outlet *x_out_arg; } t_biquad_freq_resp; static t_class *biquad_freq_resp_class; -static void biquad_freq_resp_float(t_biquad_freq_resp *x, t_floatarg f) +static void biquad_freq_resp_float(t_biquad_freq_resp *x, t_floatarg freq_phase) { - t_float re1, im1, re2, im2; - t_float c, s, a; + t_float re1, im1, re2, im2, re, im; + t_float c, s, ra; + t_float pi = 4.0 * atan(1.0); - if(f < 0.0f) - f = 0.0f; - else if(f > 180.0f) - f = 180.0; - f *= 3.14159265f; - f /= 180.0f; + if(freq_phase < 0.0) + freq_phase = 0.0; + else if(freq_phase > 180.0) + freq_phase = 180.0; + freq_phase *= pi; + freq_phase /= 180.0; - c = cos(f); - s = sin(f); + c = cos(freq_phase); + s = sin(freq_phase); re1 = x->a0 + x->a1*c + x->a2*(c*c - s*s); - im1 = x->a1*s + x->a2*2.0f*(s*c); - re2 = 1.0f - x->b1*c - x->b2*(c*c - s*s); - im2 = -x->b1*s - x->b2*2.0f*(s*c); - a = re2*re2 + im2*im2; - outlet_float(x->x_out_im, (re1*im2 - re2*im1)/a);/* because z^-1 = e^-jwt, negative sign */ - outlet_float(x->x_out_re, (re1*re2 + im1*im2)/a); + im1 = x->a1*s + x->a2*2.0*(s*c); + re2 = 1.0 - x->b1*c - x->b2*(c*c - s*s); + im2 = -x->b1*s - x->b2*2.0*(s*c); + ra = 1.0 / (re2*re2 + im2*im2); + im = (re1*im2 - re2*im1) * ra; /* because z^-1 = e^-jwt, negative sign */ + re = (re1*re2 + im1*im2) * ra; + outlet_float(x->x_out_arg, 180.0*atan2(im, re)/pi); + outlet_float(x->x_out_abs, sqrt(re*re + im*im)); + outlet_float(x->x_out_im, im); + outlet_float(x->x_out_re, re); } /* y/x = (a0 + a1*z-1 + a2*z-2)/(1 - b1*z-1 - b2*z-2);*/ @@ -68,11 +75,13 @@ static void *biquad_freq_resp_new(void) t_biquad_freq_resp *x = (t_biquad_freq_resp *)pd_new(biquad_freq_resp_class); x->x_out_re = outlet_new(&x->x_obj, &s_float); x->x_out_im = outlet_new(&x->x_obj, &s_float); - x->b1 = 0.0f; - x->b2 = 0.0f; - x->a0 = 0.0f; - x->a1 = 0.0f; - x->a2 = 0.0f; + x->x_out_abs = outlet_new(&x->x_obj, &s_float); + x->x_out_arg = outlet_new(&x->x_obj, &s_float); + x->b1 = 0.0; + x->b2 = 0.0; + x->a0 = 0.0; + x->a1 = 0.0; + x->a2 = 0.0; return (x); } @@ -81,6 +90,5 @@ void biquad_freq_resp_setup(void) biquad_freq_resp_class = class_new(gensym("biquad_freq_resp"), (t_newmethod)biquad_freq_resp_new, 0, sizeof(t_biquad_freq_resp), 0, 0); class_addfloat(biquad_freq_resp_class, biquad_freq_resp_float); - class_addlist(biquad_freq_resp_class, (t_method)biquad_freq_resp_list); -// class_sethelpsymbol(biquad_freq_resp_class, gensym("iemhelp/help-biquad_freq_resp")); + class_addlist(biquad_freq_resp_class, (t_method)biquad_freq_resp_list); } diff --git a/externals/iemlib/iemlib1/src/filter~.c b/externals/iemlib/iemlib1/src/filter~.c index c26b4c8bdf572da5f0290e6e774648ebbb8abc1b..9b9cc7b145bfd0a007d75e2fdc73b0b3e7f01db6 100644 --- a/externals/iemlib/iemlib1/src/filter~.c +++ b/externals/iemlib/iemlib1/src/filter~.c @@ -1,7 +1,7 @@ /* For information on usage and redistribution, and for a DISCLAIMER OF ALL * WARRANTIES, see the file, "LICENSE.txt," in this distribution. -iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2008 */ +iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2011 */ #include "m_pd.h" @@ -10,9 +10,14 @@ iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2008 /* ---------- filter~ - slow dynamic filter-kernel 1. and 2. order ----------- */ -/* ---------- with double precision option ----------------------------------- */ +/* -------------- now with single and double precision option ---------------- */ +/* ------- sp ..... single precision, ---- dp ..... double precision --------- */ -typedef struct _float_filter_para_tilde +typedef struct _filter_tilde_sp_para t_filter_tilde_sp_para; + +typedef void (*filt_calc_sp_fun_ptr)(t_filter_tilde_sp_para *); + +struct _filter_tilde_sp_para { t_float wn1;// old wn of biquad recursion t_float wn2;// two times old wn of biquad recursion @@ -39,14 +44,18 @@ typedef struct _float_filter_para_tilde int counter_f;// number of dsp ticks to compute new frequency int counter_a;// number of dsp ticks to compute new damping int counter_b;// number of dsp ticks to compute new frequency shift - int inlet3_is_Q1_or_damping0;// if flag is HIGH, the third inlet (Q) has to be inverted to damping + int inlet3_is_Q;// if flag is HIGH, the third inlet (Q) has to be inverted to damping int filter_function_is_highpass;// flag is HIGH if filter has highpass characteristic int filter_function_is_first_order;// flag is HIGH if filter is first order int event_mask;// a three bit mask: Bit 0 is HIGH during frequency ramp, Bit 1 is HIGH during damping ramp, Bit 2 is HIGH during frequency shift ramp - void (*calc)(); -} t_float_filter_para_tilde; + filt_calc_sp_fun_ptr calc; +}; + +typedef struct _filter_tilde_dp_para t_filter_tilde_dp_para; -typedef struct _double_filter_para_tilde +typedef void (*filt_calc_dp_fun_ptr)(t_filter_tilde_dp_para*); + +struct _filter_tilde_dp_para { double wn1;// old wn of biquad recursion double wn2;// two times old wn of biquad recursion @@ -73,32 +82,42 @@ typedef struct _double_filter_para_tilde int counter_f;// number of dsp ticks to compute new frequency int counter_a;// number of dsp ticks to compute new damping int counter_b;// number of dsp ticks to compute new frequency shift - int inlet3_is_Q1_or_damping0;// if flag is HIGH, the third inlet (Q) has to be inverted to damping + int inlet3_is_Q;// if flag is HIGH, the third inlet (Q) has to be inverted to damping int filter_function_is_highpass;// flag is HIGH if filter has highpass characteristic int filter_function_is_first_order;// flag is HIGH if filter is first order int event_mask;// a three bit mask: Bit 0 is HIGH during frequency ramp, Bit 1 is HIGH during damping ramp, Bit 2 is HIGH during frequency shift ramp - void (*calc)(); -} t_double_filter_para_tilde; + filt_calc_dp_fun_ptr calc; +}; + +typedef union _filt_para +{ + t_filter_tilde_sp_para sp; + t_filter_tilde_dp_para dp; +} t_filt_para; typedef struct _filter_tilde { - t_object x_obj; - t_float_filter_para_tilde fp; - t_double_filter_para_tilde dp; - int precision_d1_f0; - void *x_debug_outlet; - t_atom x_at[5]; - t_float x_msi; + t_object x_obj; + t_filt_para x_para; + int x_precision_dp1_sp0; + t_outlet *x_debug_outlet; + t_atom x_at[5]; + t_float x_float_sig_in; } t_filter_tilde; static t_class *filter_tilde_class; -static void filter_tilde_snafu(t_float_filter_para_tilde *x) +static void filter_tilde_sp_dummy(t_filter_tilde_sp_para *x) +{ + +} + +static void filter_tilde_dp_dummy(t_filter_tilde_dp_para *x) { } -static void filter_tilde_lp1(t_float_filter_para_tilde *x) +static void filter_tilde_sp_lp1(t_filter_tilde_sp_para *x) { t_float al; @@ -108,7 +127,7 @@ static void filter_tilde_lp1(t_float_filter_para_tilde *x) x->b1 = (al - 1.0f)*x->a0; } -static void filter_tilde_lp2(t_float_filter_para_tilde *x) +static void filter_tilde_sp_lp2(t_filter_tilde_sp_para *x) { t_float l, al, bl2, rcp; @@ -123,7 +142,7 @@ static void filter_tilde_lp2(t_float_filter_para_tilde *x) x->b2 = rcp*(al - bl2); } -static void filter_tilde_hp1(t_float_filter_para_tilde *x) +static void filter_tilde_sp_hp1(t_filter_tilde_sp_para *x) { t_float al, rcp; @@ -134,7 +153,7 @@ static void filter_tilde_hp1(t_float_filter_para_tilde *x) x->b1 = rcp*(al - 1.0f); } -static void filter_tilde_hp2(t_float_filter_para_tilde *x) +static void filter_tilde_sp_hp2(t_filter_tilde_sp_para *x) { t_float l, al, bl2, rcp; @@ -149,7 +168,7 @@ static void filter_tilde_hp2(t_float_filter_para_tilde *x) x->b2 = rcp*(al - bl2); } -static void filter_tilde_rp2(t_float_filter_para_tilde *x) +static void filter_tilde_sp_rp2(t_filter_tilde_sp_para *x) { t_float l, al, l2, rcp; @@ -163,7 +182,7 @@ static void filter_tilde_rp2(t_float_filter_para_tilde *x) x->b2 = rcp*(al - l2); } -static void filter_tilde_bp2(t_float_filter_para_tilde *x) +static void filter_tilde_sp_bp2(t_filter_tilde_sp_para *x) { t_float l, al, l2, rcp; @@ -177,7 +196,7 @@ static void filter_tilde_bp2(t_float_filter_para_tilde *x) x->b2 = rcp*(al - l2); } -static void filter_tilde_bs2(t_float_filter_para_tilde *x) +static void filter_tilde_sp_bs2(t_filter_tilde_sp_para *x) { t_float l, al, l2, rcp; @@ -192,7 +211,7 @@ static void filter_tilde_bs2(t_float_filter_para_tilde *x) x->b2 = rcp*(al - l2); } -static void filter_tilde_rpw2(t_float_filter_para_tilde *x) +static void filter_tilde_sp_rpw2(t_filter_tilde_sp_para *x) { t_float l, al, l2, rcp; @@ -206,7 +225,7 @@ static void filter_tilde_rpw2(t_float_filter_para_tilde *x) x->b2 = rcp*(al - l2); } -static void filter_tilde_bpw2(t_float_filter_para_tilde *x) +static void filter_tilde_sp_bpw2(t_filter_tilde_sp_para *x) { t_float l, al, l2, rcp; @@ -220,7 +239,7 @@ static void filter_tilde_bpw2(t_float_filter_para_tilde *x) x->b2 = rcp*(al - l2); } -static void filter_tilde_bsw2(t_float_filter_para_tilde *x) +static void filter_tilde_sp_bsw2(t_filter_tilde_sp_para *x) { t_float l, al, l2, rcp; @@ -235,7 +254,7 @@ static void filter_tilde_bsw2(t_float_filter_para_tilde *x) x->b2 = rcp*(al - l2); } -static void filter_tilde_ap1(t_float_filter_para_tilde *x) +static void filter_tilde_sp_ap1(t_filter_tilde_sp_para *x) { t_float al; @@ -244,7 +263,7 @@ static void filter_tilde_ap1(t_float_filter_para_tilde *x) x->b1 = -x->a0; } -static void filter_tilde_ap2(t_float_filter_para_tilde *x) +static void filter_tilde_sp_ap2(t_filter_tilde_sp_para *x) { t_float l, al, bl2, rcp; @@ -258,21 +277,7 @@ static void filter_tilde_ap2(t_float_filter_para_tilde *x) x->b2 = -x->a0; } -/*static void filter_tilde_bp2(t_filter_tilde *x) -{ -t_float l, al, l2, rcp; - - l = x->cur_l; - l2 = l*l + 1.0; - al = l*x->cur_a; - rcp = 1.0f/(al + l2); - x->a0 = rcp*al; - x->a2 = -x->a0; - x->b1 = rcp*2.0f*(2.0f - l2); - x->b2 = rcp*(l2 - al); -}*/ - -static void filter_tilde_dlp1(t_double_filter_para_tilde *x) +static void filter_tilde_dp_lp1(t_filter_tilde_dp_para *x) { double al; @@ -282,7 +287,7 @@ static void filter_tilde_dlp1(t_double_filter_para_tilde *x) x->b1 = (al - 1.0)*x->a0; } -static void filter_tilde_dlp2(t_double_filter_para_tilde *x) +static void filter_tilde_dp_lp2(t_filter_tilde_dp_para *x) { double l, al, bl2, rcp; @@ -297,7 +302,7 @@ static void filter_tilde_dlp2(t_double_filter_para_tilde *x) x->b2 = rcp*(al - bl2); } -static void filter_tilde_dhp1(t_double_filter_para_tilde *x) +static void filter_tilde_dp_hp1(t_filter_tilde_dp_para *x) { double al, rcp; @@ -308,7 +313,7 @@ static void filter_tilde_dhp1(t_double_filter_para_tilde *x) x->b1 = rcp*(al - 1.0); } -static void filter_tilde_dhp2(t_double_filter_para_tilde *x) +static void filter_tilde_dp_hp2(t_filter_tilde_dp_para *x) { double l, al, bl2, rcp; @@ -323,7 +328,7 @@ static void filter_tilde_dhp2(t_double_filter_para_tilde *x) x->b2 = rcp*(al - bl2); } -static void filter_tilde_drp2(t_double_filter_para_tilde *x) +static void filter_tilde_dp_rp2(t_filter_tilde_dp_para *x) { double l, al, l2, rcp; @@ -337,7 +342,7 @@ static void filter_tilde_drp2(t_double_filter_para_tilde *x) x->b2 = rcp*(al - l2); } -static void filter_tilde_dbp2(t_double_filter_para_tilde *x) +static void filter_tilde_dp_bp2(t_filter_tilde_dp_para *x) { double l, al, l2, rcp; @@ -351,7 +356,7 @@ static void filter_tilde_dbp2(t_double_filter_para_tilde *x) x->b2 = rcp*(al - l2); } -static void filter_tilde_dbs2(t_double_filter_para_tilde *x) +static void filter_tilde_dp_bs2(t_filter_tilde_dp_para *x) { double l, al, l2, rcp; @@ -366,7 +371,7 @@ static void filter_tilde_dbs2(t_double_filter_para_tilde *x) x->b2 = rcp*(al - l2); } -static void filter_tilde_drpw2(t_double_filter_para_tilde *x) +static void filter_tilde_dp_rpw2(t_filter_tilde_dp_para *x) { double l, al, l2, rcp; @@ -380,7 +385,7 @@ static void filter_tilde_drpw2(t_double_filter_para_tilde *x) x->b2 = rcp*(al - l2); } -static void filter_tilde_dbpw2(t_double_filter_para_tilde *x) +static void filter_tilde_dp_bpw2(t_filter_tilde_dp_para *x) { double l, al, l2, rcp; @@ -394,7 +399,7 @@ static void filter_tilde_dbpw2(t_double_filter_para_tilde *x) x->b2 = rcp*(al - l2); } -static void filter_tilde_dbsw2(t_double_filter_para_tilde *x) +static void filter_tilde_dp_bsw2(t_filter_tilde_dp_para *x) { double l, al, l2, rcp; @@ -409,7 +414,7 @@ static void filter_tilde_dbsw2(t_double_filter_para_tilde *x) x->b2 = rcp*(al - l2); } -static void filter_tilde_dap1(t_double_filter_para_tilde *x) +static void filter_tilde_dp_ap1(t_filter_tilde_dp_para *x) { double al; @@ -418,7 +423,7 @@ static void filter_tilde_dap1(t_double_filter_para_tilde *x) x->b1 = -x->a0; } -static void filter_tilde_dap2(t_double_filter_para_tilde *x) +static void filter_tilde_dp_ap2(t_filter_tilde_dp_para *x) { double l, al, bl2, rcp; @@ -432,7 +437,7 @@ static void filter_tilde_dap2(t_double_filter_para_tilde *x) x->b2 = -x->a0; } -static void filter_tilde_dsp_tick(t_float_filter_para_tilde *x) +static void filter_tilde_dsp_sp_tick(t_filter_tilde_sp_para *x) { if(x->event_mask) { @@ -528,7 +533,7 @@ static void filter_tilde_dsp_tick(t_float_filter_para_tilde *x) } } -static void filter_tilde_dsp_dtick(t_double_filter_para_tilde *x) +static void filter_tilde_dsp_dp_tick(t_filter_tilde_dp_para *x) { if(x->event_mask) { @@ -624,21 +629,21 @@ static void filter_tilde_dsp_dtick(t_double_filter_para_tilde *x) } } -static t_int *filter_tilde_perform_2o(t_int *w) +static t_int *filter_tilde_sp_perform_2o(t_int *w) { - t_float *in = (float *)(w[1]); - t_float *out = (float *)(w[2]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); t_filter_tilde *x = (t_filter_tilde *)(w[3]); int i, n = (t_int)(w[4]); - t_float wn0, wn1=x->fp.wn1, wn2=x->fp.wn2; - t_float a0=x->fp.a0, a1=x->fp.a1, a2=x->fp.a2; - t_float b1=x->fp.b1, b2=x->fp.b2; + t_float wn0, wn1=x->x_para.sp.wn1, wn2=x->x_para.sp.wn2; + t_float a0=x->x_para.sp.a0, a1=x->x_para.sp.a1, a2=x->x_para.sp.a2; + t_float b1=x->x_para.sp.b1, b2=x->x_para.sp.b2; - filter_tilde_dsp_tick(&x->fp); + filter_tilde_dsp_sp_tick(&x->x_para.sp); for(i=0; i<n; i++) { - wn0 = *in++ + b1*wn1 + b2*wn2; - *out++ = a0*wn0 + a1*wn1 + a2*wn2; + wn0 = (t_float)(*in++) + b1*wn1 + b2*wn2; + *out++ = (t_sample)(a0*wn0 + a1*wn1 + a2*wn2); wn2 = wn1; wn1 = wn0; } @@ -648,8 +653,8 @@ static t_int *filter_tilde_perform_2o(t_int *w) if(IEM_DENORMAL(wn1)) wn1 = 0.0f; - x->fp.wn1 = wn1; - x->fp.wn2 = wn2; + x->x_para.sp.wn1 = wn1; + x->x_para.sp.wn2 = wn2; return(w+5); } /* yn0 = *out; @@ -663,37 +668,37 @@ xn1 = xn0; ************************* y/x = (a0 + a1*z-1 + a2*z-2)/(1 - b1*z-1 - b2*z-2);*/ -static t_int *filter_tilde_perf8_2o(t_int *w) +static t_int *filter_tilde_sp_perf8_2o(t_int *w) { - t_float *in = (float *)(w[1]); - t_float *out = (float *)(w[2]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); t_filter_tilde *x = (t_filter_tilde *)(w[3]); int i, n = (t_int)(w[4]); t_float wn[10]; - t_float a0=x->fp.a0, a1=x->fp.a1, a2=x->fp.a2; - t_float b1=x->fp.b1, b2=x->fp.b2; + t_float a0=x->x_para.sp.a0, a1=x->x_para.sp.a1, a2=x->x_para.sp.a2; + t_float b1=x->x_para.sp.b1, b2=x->x_para.sp.b2; - filter_tilde_dsp_tick(&x->fp); - wn[0] = x->fp.wn2; - wn[1] = x->fp.wn1; + filter_tilde_dsp_sp_tick(&x->x_para.sp); + wn[0] = x->x_para.sp.wn2; + wn[1] = x->x_para.sp.wn1; for(i=0; i<n; i+=8, in+=8, out+=8) { - wn[2] = in[0] + b1*wn[1] + b2*wn[0]; - out[0] = a0*wn[2] + a1*wn[1] + a2*wn[0]; - wn[3] = in[1] + b1*wn[2] + b2*wn[1]; - out[1] = a0*wn[3] + a1*wn[2] + a2*wn[1]; - wn[4] = in[2] + b1*wn[3] + b2*wn[2]; - out[2] = a0*wn[4] + a1*wn[3] + a2*wn[2]; - wn[5] = in[3] + b1*wn[4] + b2*wn[3]; - out[3] = a0*wn[5] + a1*wn[4] + a2*wn[3]; - wn[6] = in[4] + b1*wn[5] + b2*wn[4]; - out[4] = a0*wn[6] + a1*wn[5] + a2*wn[4]; - wn[7] = in[5] + b1*wn[6] + b2*wn[5]; - out[5] = a0*wn[7] + a1*wn[6] + a2*wn[5]; - wn[8] = in[6] + b1*wn[7] + b2*wn[6]; - out[6] = a0*wn[8] + a1*wn[7] + a2*wn[6]; - wn[9] = in[7] + b1*wn[8] + b2*wn[7]; - out[7] = a0*wn[9] + a1*wn[8] + a2*wn[7]; + wn[2] = (t_float)(in[0]) + b1*wn[1] + b2*wn[0]; + out[0] = (t_sample)(a0*wn[2] + a1*wn[1] + a2*wn[0]); + wn[3] = (t_float)(in[1]) + b1*wn[2] + b2*wn[1]; + out[1] = (t_sample)(a0*wn[3] + a1*wn[2] + a2*wn[1]); + wn[4] = (t_float)(in[2]) + b1*wn[3] + b2*wn[2]; + out[2] = (t_sample)(a0*wn[4] + a1*wn[3] + a2*wn[2]); + wn[5] = (t_float)(in[3]) + b1*wn[4] + b2*wn[3]; + out[3] = (t_sample)(a0*wn[5] + a1*wn[4] + a2*wn[3]); + wn[6] = (t_float)(in[4]) + b1*wn[5] + b2*wn[4]; + out[4] = (t_sample)(a0*wn[6] + a1*wn[5] + a2*wn[4]); + wn[7] = (t_float)(in[5]) + b1*wn[6] + b2*wn[5]; + out[5] = (t_sample)(a0*wn[7] + a1*wn[6] + a2*wn[5]); + wn[8] = (t_float)(in[6]) + b1*wn[7] + b2*wn[6]; + out[6] = (t_sample)(a0*wn[8] + a1*wn[7] + a2*wn[6]); + wn[9] = (t_float)(in[7]) + b1*wn[8] + b2*wn[7]; + out[7] = (t_sample)(a0*wn[9] + a1*wn[8] + a2*wn[7]); wn[0] = wn[8]; wn[1] = wn[9]; } @@ -703,91 +708,91 @@ static t_int *filter_tilde_perf8_2o(t_int *w) if(IEM_DENORMAL(wn[1])) wn[1] = 0.0f; - x->fp.wn1 = wn[1]; - x->fp.wn2 = wn[0]; + x->x_para.sp.wn1 = wn[1]; + x->x_para.sp.wn2 = wn[0]; return(w+5); } -static t_int *filter_tilde_perform_1o(t_int *w) +static t_int *filter_tilde_sp_perform_1o(t_int *w) { - t_float *in = (float *)(w[1]); - t_float *out = (float *)(w[2]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); t_filter_tilde *x = (t_filter_tilde *)(w[3]); int i, n = (t_int)(w[4]); - t_float wn0, wn1=x->fp.wn1; - t_float a0=x->fp.a0, a1=x->fp.a1; - t_float b1=x->fp.b1; + t_float wn0, wn1=x->x_para.sp.wn1; + t_float a0=x->x_para.sp.a0, a1=x->x_para.sp.a1; + t_float b1=x->x_para.sp.b1; - filter_tilde_dsp_tick(&x->fp); + filter_tilde_dsp_sp_tick(&x->x_para.sp); for(i=0; i<n; i++) { - wn0 = *in++ + b1*wn1; - *out++ = a0*wn0 + a1*wn1; + wn0 = (t_float)(*in++) + b1*wn1; + *out++ = (t_sample)(a0*wn0 + a1*wn1); wn1 = wn0; } /* NAN protect */ if(IEM_DENORMAL(wn1)) wn1 = 0.0f; - x->fp.wn1 = wn1; + x->x_para.sp.wn1 = wn1; return(w+5); } -static t_int *filter_tilde_perf8_1o(t_int *w) +static t_int *filter_tilde_sp_perf8_1o(t_int *w) { - t_float *in = (float *)(w[1]); - t_float *out = (float *)(w[2]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); t_filter_tilde *x = (t_filter_tilde *)(w[3]); int i, n = (t_int)(w[4]); t_float wn[9]; - t_float a0=x->fp.a0, a1=x->fp.a1; - t_float b1=x->fp.b1; + t_float a0=x->x_para.sp.a0, a1=x->x_para.sp.a1; + t_float b1=x->x_para.sp.b1; - filter_tilde_dsp_tick(&x->fp); - wn[0] = x->fp.wn1; + filter_tilde_dsp_sp_tick(&x->x_para.sp); + wn[0] = x->x_para.sp.wn1; for(i=0; i<n; i+=8, in+=8, out+=8) { - wn[1] = in[0] + b1*wn[0]; - out[0] = a0*wn[1] + a1*wn[0]; - wn[2] = in[1] + b1*wn[1]; - out[1] = a0*wn[2] + a1*wn[1]; - wn[3] = in[2] + b1*wn[2]; - out[2] = a0*wn[3] + a1*wn[2]; - wn[4] = in[3] + b1*wn[3]; - out[3] = a0*wn[4] + a1*wn[3]; - wn[5] = in[4] + b1*wn[4]; - out[4] = a0*wn[5] + a1*wn[4]; - wn[6] = in[5] + b1*wn[5]; - out[5] = a0*wn[6] + a1*wn[5]; - wn[7] = in[6] + b1*wn[6]; - out[6] = a0*wn[7] + a1*wn[6]; - wn[8] = in[7] + b1*wn[7]; - out[7] = a0*wn[8] + a1*wn[7]; + wn[1] = (t_float)(in[0]) + b1*wn[0]; + out[0] = (t_sample)(a0*wn[1] + a1*wn[0]); + wn[2] = (t_float)(in[1]) + b1*wn[1]; + out[1] = (t_sample)(a0*wn[2] + a1*wn[1]); + wn[3] = (t_float)(in[2]) + b1*wn[2]; + out[2] = (t_sample)(a0*wn[3] + a1*wn[2]); + wn[4] = (t_float)(in[3]) + b1*wn[3]; + out[3] = (t_sample)(a0*wn[4] + a1*wn[3]); + wn[5] = (t_float)(in[4]) + b1*wn[4]; + out[4] = (t_sample)(a0*wn[5] + a1*wn[4]); + wn[6] = (t_float)(in[5]) + b1*wn[5]; + out[5] = (t_sample)(a0*wn[6] + a1*wn[5]); + wn[7] = (t_float)(in[6]) + b1*wn[6]; + out[6] = (t_sample)(a0*wn[7] + a1*wn[6]); + wn[8] = (t_float)(in[7]) + b1*wn[7]; + out[7] = (t_sample)(a0*wn[8] + a1*wn[7]); wn[0] = wn[8]; } /* NAN protect */ if(IEM_DENORMAL(wn[0])) wn[0] = 0.0f; - x->fp.wn1 = wn[0]; + x->x_para.sp.wn1 = wn[0]; return(w+5); } -static t_int *filter_tilde_dperform_2o(t_int *w) +static t_int *filter_tilde_dp_perform_2o(t_int *w) { - t_float *in = (t_float *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); t_filter_tilde *x = (t_filter_tilde *)(w[3]); int i, n = (t_int)(w[4]); - double wn0, wn1=x->dp.wn1, wn2=x->dp.wn2; - double a0=x->dp.a0, a1=x->dp.a1, a2=x->dp.a2; - double b1=x->dp.b1, b2=x->dp.b2; + double wn0, wn1=x->x_para.dp.wn1, wn2=x->x_para.dp.wn2; + double a0=x->x_para.dp.a0, a1=x->x_para.dp.a1, a2=x->x_para.dp.a2; + double b1=x->x_para.dp.b1, b2=x->x_para.dp.b2; - filter_tilde_dsp_dtick(&x->dp); + filter_tilde_dsp_dp_tick(&x->x_para.dp); for(i=0; i<n; i++) { wn0 = (double)(*in++) + b1*wn1 + b2*wn2; - *out++ = (t_float)(a0*wn0 + a1*wn1 + a2*wn2); + *out++ = (t_sample)(a0*wn0 + a1*wn1 + a2*wn2); wn2 = wn1; wn1 = wn0; } @@ -797,8 +802,8 @@ static t_int *filter_tilde_dperform_2o(t_int *w) // if(IEM_DENORMAL(wn1)) // wn1 = 0.0f; - x->dp.wn1 = wn1; - x->dp.wn2 = wn2; + x->x_para.dp.wn1 = wn1; + x->x_para.dp.wn2 = wn2; return(w+5); } /* yn0 = *out; @@ -812,37 +817,37 @@ xn1 = xn0; ************************* y/x = (a0 + a1*z-1 + a2*z-2)/(1 - b1*z-1 - b2*z-2);*/ -static t_int *filter_tilde_dperf8_2o(t_int *w) +static t_int *filter_tilde_dp_perf8_2o(t_int *w) { - t_float *in = (t_float *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); t_filter_tilde *x = (t_filter_tilde *)(w[3]); int i, n = (t_int)(w[4]); double wn[10]; - double a0=x->dp.a0, a1=x->dp.a1, a2=x->dp.a2; - double b1=x->dp.b1, b2=x->dp.b2; + double a0=x->x_para.dp.a0, a1=x->x_para.dp.a1, a2=x->x_para.dp.a2; + double b1=x->x_para.dp.b1, b2=x->x_para.dp.b2; - filter_tilde_dsp_dtick(&x->dp); - wn[0] = x->dp.wn2; - wn[1] = x->dp.wn1; + filter_tilde_dsp_dp_tick(&x->x_para.dp); + wn[0] = x->x_para.dp.wn2; + wn[1] = x->x_para.dp.wn1; for(i=0; i<n; i+=8, in+=8, out+=8) { wn[2] = (double)(in[0]) + b1*wn[1] + b2*wn[0]; - out[0] = (t_float)(a0*wn[2] + a1*wn[1] + a2*wn[0]); + out[0] = (t_sample)(a0*wn[2] + a1*wn[1] + a2*wn[0]); wn[3] = (double)(in[1]) + b1*wn[2] + b2*wn[1]; - out[1] = (t_float)(a0*wn[3] + a1*wn[2] + a2*wn[1]); + out[1] = (t_sample)(a0*wn[3] + a1*wn[2] + a2*wn[1]); wn[4] = (double)(in[2]) + b1*wn[3] + b2*wn[2]; - out[2] = (t_float)(a0*wn[4] + a1*wn[3] + a2*wn[2]); + out[2] = (t_sample)(a0*wn[4] + a1*wn[3] + a2*wn[2]); wn[5] = (double)(in[3]) + b1*wn[4] + b2*wn[3]; - out[3] = (t_float)(a0*wn[5] + a1*wn[4] + a2*wn[3]); + out[3] = (t_sample)(a0*wn[5] + a1*wn[4] + a2*wn[3]); wn[6] = (double)(in[4]) + b1*wn[5] + b2*wn[4]; - out[4] = (t_float)(a0*wn[6] + a1*wn[5] + a2*wn[4]); + out[4] = (t_sample)(a0*wn[6] + a1*wn[5] + a2*wn[4]); wn[7] = (double)(in[5]) + b1*wn[6] + b2*wn[5]; - out[5] = (t_float)(a0*wn[7] + a1*wn[6] + a2*wn[5]); + out[5] = (t_sample)(a0*wn[7] + a1*wn[6] + a2*wn[5]); wn[8] = (double)(in[6]) + b1*wn[7] + b2*wn[6]; - out[6] = (t_float)(a0*wn[8] + a1*wn[7] + a2*wn[6]); + out[6] = (t_sample)(a0*wn[8] + a1*wn[7] + a2*wn[6]); wn[9] = (double)(in[7]) + b1*wn[8] + b2*wn[7]; - out[7] = (t_float)(a0*wn[9] + a1*wn[8] + a2*wn[7]); + out[7] = (t_sample)(a0*wn[9] + a1*wn[8] + a2*wn[7]); wn[0] = wn[8]; wn[1] = wn[9]; } @@ -882,211 +887,218 @@ static t_int *filter_tilde_dperf8_2o(t_int *w) */ - x->dp.wn1 = wn[1]; - x->dp.wn2 = wn[0]; + x->x_para.dp.wn1 = wn[1]; + x->x_para.dp.wn2 = wn[0]; return(w+5); } -static t_int *filter_tilde_dperform_1o(t_int *w) +static t_int *filter_tilde_dp_perform_1o(t_int *w) { - t_float *in = (t_float *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); t_filter_tilde *x = (t_filter_tilde *)(w[3]); int i, n = (t_int)(w[4]); - double wn0, wn1=x->dp.wn1; - double a0=x->dp.a0, a1=x->dp.a1; - double b1=x->dp.b1; + double wn0, wn1=x->x_para.dp.wn1; + double a0=x->x_para.dp.a0, a1=x->x_para.dp.a1; + double b1=x->x_para.dp.b1; - filter_tilde_dsp_dtick(&x->dp); + filter_tilde_dsp_dp_tick(&x->x_para.dp); for(i=0; i<n; i++) { wn0 = (double)(*in++) + b1*wn1; - *out++ = (t_float)(a0*wn0 + a1*wn1); + *out++ = (t_sample)(a0*wn0 + a1*wn1); wn1 = wn0; } /* NAN protect */ // if(IEM_DENORMAL(wn1)) // wn1 = 0.0f; - x->dp.wn1 = wn1; + x->x_para.dp.wn1 = wn1; return(w+5); } -static t_int *filter_tilde_dperf8_1o(t_int *w) +static t_int *filter_tilde_dp_perf8_1o(t_int *w) { - t_float *in = (t_float *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); t_filter_tilde *x = (t_filter_tilde *)(w[3]); int i, n = (t_int)(w[4]); double wn[9]; - double a0=x->dp.a0, a1=x->dp.a1; - double b1=x->dp.b1; + double a0=x->x_para.dp.a0, a1=x->x_para.dp.a1; + double b1=x->x_para.dp.b1; - filter_tilde_dsp_dtick(&x->dp); - wn[0] = x->dp.wn1; + filter_tilde_dsp_dp_tick(&x->x_para.dp); + wn[0] = x->x_para.dp.wn1; for(i=0; i<n; i+=8, in+=8, out+=8) { wn[1] = (double)(in[0]) + b1*wn[0]; - out[0] = (t_float)(a0*wn[1] + a1*wn[0]); + out[0] = (t_sample)(a0*wn[1] + a1*wn[0]); wn[2] = (double)(in[1]) + b1*wn[1]; - out[1] = (t_float)(a0*wn[2] + a1*wn[1]); + out[1] = (t_sample)(a0*wn[2] + a1*wn[1]); wn[3] = (double)(in[2]) + b1*wn[2]; - out[2] = (t_float)(a0*wn[3] + a1*wn[2]); + out[2] = (t_sample)(a0*wn[3] + a1*wn[2]); wn[4] = (double)(in[3]) + b1*wn[3]; - out[3] = (t_float)(a0*wn[4] + a1*wn[3]); + out[3] = (t_sample)(a0*wn[4] + a1*wn[3]); wn[5] = (double)(in[4]) + b1*wn[4]; - out[4] = (t_float)(a0*wn[5] + a1*wn[4]); + out[4] = (t_sample)(a0*wn[5] + a1*wn[4]); wn[6] = (double)(in[5]) + b1*wn[5]; - out[5] = (t_float)(a0*wn[6] + a1*wn[5]); + out[5] = (t_sample)(a0*wn[6] + a1*wn[5]); wn[7] = (double)(in[6]) + b1*wn[6]; - out[6] = (t_float)(a0*wn[7] + a1*wn[6]); + out[6] = (t_sample)(a0*wn[7] + a1*wn[6]); wn[8] = (double)(in[7]) + b1*wn[7]; - out[7] = (t_float)(a0*wn[8] + a1*wn[7]); + out[7] = (t_sample)(a0*wn[8] + a1*wn[7]); wn[0] = wn[8]; } /* NAN protect */ // if(IEM_DENORMAL(wn[0])) // wn[0] = 0.0f; - x->dp.wn1 = wn[0]; + x->x_para.dp.wn1 = wn[0]; return(w+5); } -static void filter_tilde_ft4(t_filter_tilde *x, t_float t) +static void filter_tilde_ft4(t_filter_tilde *x, t_floatarg t) { - if(x->precision_d1_f0) + if(x->x_precision_dp1_sp0) { - double dt=(double)t; - int di = (int)((x->dp.ticks_per_interpol_time)*dt+0.49999); + double dt = (double)t; + int di = (int)((x->x_para.dp.ticks_per_interpol_time)*dt+0.49999); - x->dp.interpol_time = dt; + x->x_para.dp.interpol_time = dt; if(di <= 0) { - x->dp.ticks = 1; - x->dp.rcp_ticks = 1.0; + x->x_para.dp.ticks = 1; + x->x_para.dp.rcp_ticks = 1.0; } else { - x->dp.ticks = di; - x->dp.rcp_ticks = 1.0 / (double)di; + x->x_para.dp.ticks = di; + x->x_para.dp.rcp_ticks = 1.0 / (double)di; } } else { - int i = (int)((x->fp.ticks_per_interpol_time)*t+0.49999f); + t_float st = (t_float)t; + int i = (int)((x->x_para.sp.ticks_per_interpol_time)*st+0.49999f); - x->fp.interpol_time = t; + x->x_para.sp.interpol_time = st; if(i <= 0) { - x->fp.ticks = 1; - x->fp.rcp_ticks = 1.0; + x->x_para.sp.ticks = 1; + x->x_para.sp.rcp_ticks = 1.0f; } else { - x->fp.ticks = i; - x->fp.rcp_ticks = 1.0 / (t_float)i; + x->x_para.sp.ticks = i; + x->x_para.sp.rcp_ticks = 1.0f / (t_float)i; } } } -static void filter_tilde_ft3(t_filter_tilde *x, t_float b) +static void filter_tilde_ft3(t_filter_tilde *x, t_floatarg b) { - if(x->precision_d1_f0) + if(x->x_precision_dp1_sp0) { - double db=(double)b; + double db = (double)b; if(db <= 0.0) db = 0.000001; - if(x->dp.filter_function_is_highpass) + if(x->x_para.dp.filter_function_is_highpass) db = 1.0 / db; - if(db != x->dp.cur_b) + if(db != x->x_para.dp.cur_b) { - x->dp.end_b = db; - x->dp.counter_b = x->dp.ticks; - x->dp.delta_b = exp(log(db/x->dp.cur_b)*x->dp.rcp_ticks); - x->dp.event_mask |= 4;/*set event_mask_bit 2 = 1*/ + x->x_para.dp.end_b = db; + x->x_para.dp.counter_b = x->x_para.dp.ticks; + x->x_para.dp.delta_b = exp(log(db/x->x_para.dp.cur_b)*x->x_para.dp.rcp_ticks); + x->x_para.dp.event_mask |= 4;/*set event_mask_bit 2 = 1*/ } } else { - if(b <= 0.0f) - b = 0.000001f; - if(x->fp.filter_function_is_highpass) - b = 1.0f / b; - if(b != x->fp.cur_b) + t_float sb = (t_float)b; + + if(sb <= 0.0f) + sb = 0.000001f; + if(x->x_para.sp.filter_function_is_highpass) + sb = 1.0f / sb; + if(sb != x->x_para.sp.cur_b) { - x->fp.end_b = b; - x->fp.counter_b = x->fp.ticks; - x->fp.delta_b = exp(log(b/x->fp.cur_b)*x->fp.rcp_ticks); - x->fp.event_mask |= 4;/*set event_mask_bit 2 = 1*/ + x->x_para.sp.end_b = sb; + x->x_para.sp.counter_b = x->x_para.sp.ticks; + x->x_para.sp.delta_b = exp(log(sb/x->x_para.sp.cur_b)*x->x_para.sp.rcp_ticks); + x->x_para.sp.event_mask |= 4;/*set event_mask_bit 2 = 1*/ } } } -static void filter_tilde_ft2(t_filter_tilde *x, t_float a) +static void filter_tilde_ft2(t_filter_tilde *x, t_floatarg a) { - if(x->precision_d1_f0) + if(x->x_precision_dp1_sp0) { - double da=(double)a; + double da = (double)a; if(da <= 0.0) da = 0.000001; - if(x->dp.inlet3_is_Q1_or_damping0) + if(x->x_para.dp.inlet3_is_Q) da = 1.0 / da; - if(x->dp.filter_function_is_highpass) - da /= x->dp.cur_b; - if(da != x->dp.cur_a) + if(x->x_para.dp.filter_function_is_highpass) + da /= x->x_para.dp.cur_b; + if(da != x->x_para.dp.cur_a) { - x->dp.end_a = da; - x->dp.counter_a = x->dp.ticks; - x->dp.delta_a = exp(log(da/x->dp.cur_a)*x->dp.rcp_ticks); - x->dp.event_mask |= 2;/*set event_mask_bit 1 = 1*/ + x->x_para.dp.end_a = da; + x->x_para.dp.counter_a = x->x_para.dp.ticks; + x->x_para.dp.delta_a = exp(log(da/x->x_para.dp.cur_a)*x->x_para.dp.rcp_ticks); + x->x_para.dp.event_mask |= 2;/*set event_mask_bit 1 = 1*/ } } else { - if(a <= 0.0f) - a = 0.000001f; - if(x->fp.inlet3_is_Q1_or_damping0) - a = 1.0f / a; - if(x->fp.filter_function_is_highpass) - a /= x->fp.cur_b; - if(a != x->fp.cur_a) + t_float sa = (t_float)a; + + if(sa <= 0.0f) + sa = 0.000001f; + if(x->x_para.sp.inlet3_is_Q) + sa = 1.0f / sa; + if(x->x_para.sp.filter_function_is_highpass) + sa /= x->x_para.sp.cur_b; + if(sa != x->x_para.sp.cur_a) { - x->fp.end_a = a; - x->fp.counter_a = x->fp.ticks; - x->fp.delta_a = exp(log(a/x->fp.cur_a)*x->fp.rcp_ticks); - x->fp.event_mask |= 2;/*set event_mask_bit 1 = 1*/ + x->x_para.sp.end_a = sa; + x->x_para.sp.counter_a = x->x_para.sp.ticks; + x->x_para.sp.delta_a = exp(log(sa/x->x_para.sp.cur_a)*x->x_para.sp.rcp_ticks); + x->x_para.sp.event_mask |= 2;/*set event_mask_bit 1 = 1*/ } } } -static void filter_tilde_ft1(t_filter_tilde *x, t_float f) +static void filter_tilde_ft1(t_filter_tilde *x, t_floatarg f) { - if(x->precision_d1_f0) + if(x->x_precision_dp1_sp0) { - double df=(double)f; + double df = (double)f; if(df <= 0.0) df = 0.000001; - if(df != x->dp.cur_f) + if(df != x->x_para.dp.cur_f) { - x->dp.end_f = df; - x->dp.counter_f = x->dp.ticks; - x->dp.delta_f = exp(log(df/x->dp.cur_f)*x->dp.rcp_ticks); - x->dp.event_mask |= 1;/*set event_mask_bit 0 = 1*/ + x->x_para.dp.end_f = df; + x->x_para.dp.counter_f = x->x_para.dp.ticks; + x->x_para.dp.delta_f = exp(log(df/x->x_para.dp.cur_f)*x->x_para.dp.rcp_ticks); + x->x_para.dp.event_mask |= 1;/*set event_mask_bit 0 = 1*/ } } else { - if(f <= 0.0f) - f = 0.000001f; - if(f != x->fp.cur_f) + t_float sf = (t_float)f; + + if(sf <= 0.0f) + sf = 0.000001f; + if(sf != x->x_para.sp.cur_f) { - x->fp.end_f = f; - x->fp.counter_f = x->fp.ticks; - x->fp.delta_f = exp(log(f/x->fp.cur_f)*x->fp.rcp_ticks); - x->fp.event_mask |= 1;/*set event_mask_bit 0 = 1*/ + x->x_para.sp.end_f = sf; + x->x_para.sp.counter_f = x->x_para.sp.ticks; + x->x_para.sp.delta_f = exp(log(sf/x->x_para.sp.cur_f)*x->x_para.sp.rcp_ticks); + x->x_para.sp.event_mask |= 1;/*set event_mask_bit 0 = 1*/ } } } @@ -1094,113 +1106,131 @@ static void filter_tilde_ft1(t_filter_tilde *x, t_float f) static void filter_tilde_print(t_filter_tilde *x) { // post("fb1 = %g, fb2 = %g, ff1 = %g, ff2 = %g, ff3 = %g", x->b1, x->b2, x->a0, x->a1, x->a2); - if(x->precision_d1_f0) + if(x->x_precision_dp1_sp0) { - x->x_at[0].a_w.w_float = (t_float)x->dp.b1; - x->x_at[1].a_w.w_float = (t_float)x->dp.b2; - x->x_at[2].a_w.w_float = (t_float)x->dp.a0; - x->x_at[3].a_w.w_float = (t_float)x->dp.a1; - x->x_at[4].a_w.w_float = (t_float)x->dp.a2; + x->x_at[0].a_w.w_float = (t_float)x->x_para.dp.b1; + x->x_at[1].a_w.w_float = (t_float)x->x_para.dp.b2; + x->x_at[2].a_w.w_float = (t_float)x->x_para.dp.a0; + x->x_at[3].a_w.w_float = (t_float)x->x_para.dp.a1; + x->x_at[4].a_w.w_float = (t_float)x->x_para.dp.a2; } else { - x->x_at[0].a_w.w_float = x->fp.b1; - x->x_at[1].a_w.w_float = x->fp.b2; - x->x_at[2].a_w.w_float = x->fp.a0; - x->x_at[3].a_w.w_float = x->fp.a1; - x->x_at[4].a_w.w_float = x->fp.a2; + x->x_at[0].a_w.w_float = x->x_para.sp.b1; + x->x_at[1].a_w.w_float = x->x_para.sp.b2; + x->x_at[2].a_w.w_float = x->x_para.sp.a0; + x->x_at[3].a_w.w_float = x->x_para.sp.a1; + x->x_at[4].a_w.w_float = x->x_para.sp.a2; } outlet_list(x->x_debug_outlet, &s_list, 5, x->x_at); } +static void filter_tilde_set(t_filter_tilde *x, t_symbol *s, int argc, t_atom *argv) +{ + if((argc >= 1) && IS_A_FLOAT(argv, 0)) + { + if(x->x_precision_dp1_sp0) + x->x_para.dp.wn1 = (double)atom_getfloatarg(0, argc, argv); + else + x->x_para.sp.wn1 = (t_float)atom_getfloatarg(0, argc, argv); + } + if((argc >= 2) && IS_A_FLOAT(argv, 1) && (x->x_para.dp.filter_function_is_first_order == 0)) + { + if(x->x_precision_dp1_sp0) + x->x_para.dp.wn2 = (double)atom_getfloatarg(1, argc, argv); + else + x->x_para.sp.wn2 = (t_float)atom_getfloatarg(1, argc, argv); + } +} + static void filter_tilde_dsp(t_filter_tilde *x, t_signal **sp) { int i, n=(int)sp[0]->s_n; - if(x->precision_d1_f0) + if(x->x_precision_dp1_sp0) { double si, co, f; - x->dp.pi_over_sr = 3.14159265358979323846 / (double)(sp[0]->s_sr); - x->dp.ticks_per_interpol_time = 0.001 * (double)(sp[0]->s_sr) / (double)n; - i = (int)((x->dp.ticks_per_interpol_time)*(x->dp.interpol_time)+0.49999); + x->x_para.dp.pi_over_sr = 3.14159265358979323846 / (double)(sp[0]->s_sr); + x->x_para.dp.ticks_per_interpol_time = 0.001 * (double)(sp[0]->s_sr) / (double)n; + i = (int)((x->x_para.dp.ticks_per_interpol_time)*(x->x_para.dp.interpol_time)+0.49999); if(i <= 0) { - x->dp.ticks = 1; - x->dp.rcp_ticks = 1.0; + x->x_para.dp.ticks = 1; + x->x_para.dp.rcp_ticks = 1.0; } else { - x->dp.ticks = i; - x->dp.rcp_ticks = 1.0 / (double)i; + x->x_para.dp.ticks = i; + x->x_para.dp.rcp_ticks = 1.0 / (double)i; } - f = x->dp.cur_f * x->dp.pi_over_sr; + f = x->x_para.dp.cur_f * x->x_para.dp.pi_over_sr; if(f < 1.0e-20) - x->dp.cur_l = 1.0e20; + x->x_para.dp.cur_l = 1.0e20; else if(f > 1.57079632) - x->dp.cur_l = 0.0; + x->x_para.dp.cur_l = 0.0; else { si = sin(f); co = cos(f); - x->dp.cur_l = co/si; + x->x_para.dp.cur_l = co/si; } - if(x->dp.filter_function_is_first_order) + if(x->x_para.dp.filter_function_is_first_order) { if(n&7) - dsp_add(filter_tilde_dperform_1o, 4, sp[0]->s_vec, sp[1]->s_vec, x, n); + dsp_add(filter_tilde_dp_perform_1o, 4, sp[0]->s_vec, sp[1]->s_vec, x, n); else - dsp_add(filter_tilde_dperf8_1o, 4, sp[0]->s_vec, sp[1]->s_vec, x, n); + dsp_add(filter_tilde_dp_perf8_1o, 4, sp[0]->s_vec, sp[1]->s_vec, x, n); } else { if(n&7) - dsp_add(filter_tilde_dperform_2o, 4, sp[0]->s_vec, sp[1]->s_vec, x, n); + dsp_add(filter_tilde_dp_perform_2o, 4, sp[0]->s_vec, sp[1]->s_vec, x, n); else - dsp_add(filter_tilde_dperf8_2o, 4, sp[0]->s_vec, sp[1]->s_vec, x, n); + dsp_add(filter_tilde_dp_perf8_2o, 4, sp[0]->s_vec, sp[1]->s_vec, x, n); } } else { t_float si, co, f; - x->fp.pi_over_sr = 3.14159265358979323846f / (t_float)(sp[0]->s_sr); - x->fp.ticks_per_interpol_time = 0.001f * (t_float)(sp[0]->s_sr) / (t_float)n; - i = (int)((x->fp.ticks_per_interpol_time)*(x->fp.interpol_time)+0.49999f); + x->x_para.sp.pi_over_sr = 3.14159265358979323846f / (t_float)(sp[0]->s_sr); + x->x_para.sp.ticks_per_interpol_time = 0.001f * (t_float)(sp[0]->s_sr) / (t_float)n; + i = (int)((x->x_para.sp.ticks_per_interpol_time)*(x->x_para.sp.interpol_time)+0.49999f); if(i <= 0) { - x->fp.ticks = 1; - x->fp.rcp_ticks = 1.0f; + x->x_para.sp.ticks = 1; + x->x_para.sp.rcp_ticks = 1.0f; } else { - x->fp.ticks = i; - x->fp.rcp_ticks = 1.0f / (t_float)i; + x->x_para.sp.ticks = i; + x->x_para.sp.rcp_ticks = 1.0f / (t_float)i; } - f = x->fp.cur_f * x->fp.pi_over_sr; + f = x->x_para.sp.cur_f * x->x_para.sp.pi_over_sr; if(f < 1.0e-20f) - x->fp.cur_l = 1.0e20f; + x->x_para.sp.cur_l = 1.0e20f; else if(f > 1.57079632f) - x->fp.cur_l = 0.0f; + x->x_para.sp.cur_l = 0.0f; else { si = sin(f); co = cos(f); - x->fp.cur_l = co/si; + x->x_para.sp.cur_l = co/si; } - if(x->fp.filter_function_is_first_order) + if(x->x_para.sp.filter_function_is_first_order) { if(n&7) - dsp_add(filter_tilde_perform_1o, 4, sp[0]->s_vec, sp[1]->s_vec, x, n); + dsp_add(filter_tilde_sp_perform_1o, 4, sp[0]->s_vec, sp[1]->s_vec, x, n); else - dsp_add(filter_tilde_perf8_1o, 4, sp[0]->s_vec, sp[1]->s_vec, x, n); + dsp_add(filter_tilde_sp_perf8_1o, 4, sp[0]->s_vec, sp[1]->s_vec, x, n); } else { if(n&7) - dsp_add(filter_tilde_perform_2o, 4, sp[0]->s_vec, sp[1]->s_vec, x, n); + dsp_add(filter_tilde_sp_perform_2o, 4, sp[0]->s_vec, sp[1]->s_vec, x, n); else - dsp_add(filter_tilde_perf8_2o, 4, sp[0]->s_vec, sp[1]->s_vec, x, n); + dsp_add(filter_tilde_sp_perf8_2o, 4, sp[0]->s_vec, sp[1]->s_vec, x, n); } } } @@ -1217,7 +1247,7 @@ static void *filter_tilde_new(t_symbol *s, int argc, t_atom *argv) inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft4")); outlet_new(&x->x_obj, &s_signal); x->x_debug_outlet = outlet_new(&x->x_obj, &s_list); - x->x_msi = 0.0f; + x->x_float_sig_in = 0.0f; x->x_at[0].a_type = A_FLOAT; x->x_at[1].a_type = A_FLOAT; @@ -1225,51 +1255,51 @@ static void *filter_tilde_new(t_symbol *s, int argc, t_atom *argv) x->x_at[3].a_type = A_FLOAT; x->x_at[4].a_type = A_FLOAT; - x->dp.delta_f = 0.0; - x->dp.delta_a = 0.0; - x->dp.delta_b = 0.0; - x->dp.interpol_time = 0.0; - x->dp.wn1 = 0.0; - x->dp.wn2 = 0.0; - x->dp.a0 = 0.0; - x->dp.a1 = 0.0; - x->dp.a2 = 0.0; - x->dp.b1 = 0.0; - x->dp.b2 = 0.0; - x->dp.pi_over_sr = 3.14159265358979323846 / 44100.0; - x->dp.event_mask = 1; - x->dp.counter_f = 1; - x->dp.counter_a = 0; - x->dp.counter_b = 0; - x->dp.filter_function_is_first_order = 0; + x->x_para.dp.delta_f = 0.0; + x->x_para.dp.delta_a = 0.0; + x->x_para.dp.delta_b = 0.0; + x->x_para.dp.interpol_time = 0.0; + x->x_para.dp.wn1 = 0.0; + x->x_para.dp.wn2 = 0.0; + x->x_para.dp.a0 = 0.0; + x->x_para.dp.a1 = 0.0; + x->x_para.dp.a2 = 0.0; + x->x_para.dp.b1 = 0.0; + x->x_para.dp.b2 = 0.0; + x->x_para.dp.pi_over_sr = 3.14159265358979323846 / 44100.0; + x->x_para.dp.event_mask = 1; + x->x_para.dp.counter_f = 1; + x->x_para.dp.counter_a = 0; + x->x_para.dp.counter_b = 0; + x->x_para.dp.filter_function_is_first_order = 0; - x->fp.delta_f = 0.0f; - x->fp.delta_a = 0.0f; - x->fp.delta_b = 0.0f; - x->fp.interpol_time = 0.0f; - x->fp.wn1 = 0.0f; - x->fp.wn2 = 0.0f; - x->fp.a0 = 0.0f; - x->fp.a1 = 0.0f; - x->fp.a2 = 0.0f; - x->fp.b1 = 0.0f; - x->fp.b2 = 0.0f; - x->fp.pi_over_sr = 3.14159265358979323846f / 44100.0f; - x->fp.event_mask = 1; - x->fp.counter_f = 1; - x->fp.counter_a = 0; - x->fp.counter_b = 0; - x->fp.filter_function_is_first_order = 0; + x->x_para.sp.delta_f = 0.0f; + x->x_para.sp.delta_a = 0.0f; + x->x_para.sp.delta_b = 0.0f; + x->x_para.sp.interpol_time = 0.0f; + x->x_para.sp.wn1 = 0.0f; + x->x_para.sp.wn2 = 0.0f; + x->x_para.sp.a0 = 0.0f; + x->x_para.sp.a1 = 0.0f; + x->x_para.sp.a2 = 0.0f; + x->x_para.sp.b1 = 0.0f; + x->x_para.sp.b2 = 0.0f; + x->x_para.sp.pi_over_sr = 3.14159265358979323846f / 44100.0f; + x->x_para.sp.event_mask = 1; + x->x_para.sp.counter_f = 1; + x->x_para.sp.counter_a = 0; + x->x_para.sp.counter_b = 0; + x->x_para.sp.filter_function_is_first_order = 0; if((argc >= 1) && IS_A_SYMBOL(argv,0)) filt_typ = atom_getsymbolarg(0, argc, argv); if(filt_typ->s_name[0] == 'd') - x->precision_d1_f0 = 1; + x->x_precision_dp1_sp0 = 1; else - x->precision_d1_f0 = 0; + x->x_precision_dp1_sp0 = 0; - if(x->precision_d1_f0) + if(x->x_precision_dp1_sp0) { double si, co, f=0.0, a=0.0, b=0.0, interpol=0.0; @@ -1280,17 +1310,17 @@ static void *filter_tilde_new(t_symbol *s, int argc, t_atom *argv) b = (double)atom_getfloatarg(3, argc, argv); interpol = (double)atom_getfloatarg(4, argc, argv); } - x->dp.cur_f = f; - f *= x->dp.pi_over_sr; + x->x_para.dp.cur_f = f; + f *= x->x_para.dp.pi_over_sr; if(f < 1.0e-20) - x->dp.cur_l = 1.0e20; + x->x_para.dp.cur_l = 1.0e20; else if(f > 1.57079632) - x->dp.cur_l = 0.0; + x->x_para.dp.cur_l = 0.0; else { si = sin(f); co = cos(f); - x->dp.cur_l = co/si; + x->x_para.dp.cur_l = co/si; } if(a <= 0.0) a = 0.000001; @@ -1299,128 +1329,128 @@ static void *filter_tilde_new(t_symbol *s, int argc, t_atom *argv) if(interpol <= 0.0) interpol = 0.0; - x->dp.interpol_time = interpol; - x->dp.ticks_per_interpol_time = 0.001 * 44100.0 / 64.0; - i = (int)((x->dp.ticks_per_interpol_time)*(x->dp.interpol_time)+0.49999); + x->x_para.dp.interpol_time = interpol; + x->x_para.dp.ticks_per_interpol_time = 0.001 * 44100.0 / 64.0; + i = (int)((x->x_para.dp.ticks_per_interpol_time)*(x->x_para.dp.interpol_time)+0.49999); if(i <= 0) { - x->dp.ticks = 1; - x->dp.rcp_ticks = 1.0; + x->x_para.dp.ticks = 1; + x->x_para.dp.rcp_ticks = 1.0; } else { - x->dp.ticks = i; - x->dp.rcp_ticks = 1.0 / (double)i; + x->x_para.dp.ticks = i; + x->x_para.dp.rcp_ticks = 1.0 / (double)i; } - x->dp.cur_b = b; - x->dp.cur_a = 1.0/a; /*"a" is default Q*/ - x->dp.inlet3_is_Q1_or_damping0 = 1; - x->dp.filter_function_is_highpass = 0; - x->dp.calc = filter_tilde_snafu; + x->x_para.dp.cur_b = b; + x->x_para.dp.cur_a = 1.0/a; /*"a" is default Q*/ + x->x_para.dp.inlet3_is_Q = 1; + x->x_para.dp.filter_function_is_highpass = 0; + x->x_para.dp.calc = filter_tilde_dp_dummy; if(filt_typ->s_name) { if(filt_typ == gensym("dap1")) { - x->dp.calc = filter_tilde_dap1; - x->dp.a1 = 1.0; - x->dp.filter_function_is_first_order = 1; + x->x_para.dp.calc = filter_tilde_dp_ap1; + x->x_para.dp.a1 = 1.0; + x->x_para.dp.filter_function_is_first_order = 1; } else if(filt_typ == gensym("dap2")) { - x->dp.calc = filter_tilde_dap2; - x->dp.a2 = 1.0; + x->x_para.dp.calc = filter_tilde_dp_ap2; + x->x_para.dp.a2 = 1.0; } else if(filt_typ == gensym("dap1c")) { - x->dp.calc = filter_tilde_dap1; - x->dp.a1 = 1.0; - x->dp.inlet3_is_Q1_or_damping0 = 0; - x->dp.cur_a = a; /*"a" was damping*/ - x->dp.filter_function_is_first_order = 1; + x->x_para.dp.calc = filter_tilde_dp_ap1; + x->x_para.dp.a1 = 1.0; + x->x_para.dp.inlet3_is_Q = 0; + x->x_para.dp.cur_a = a; /*"a" was damping*/ + x->x_para.dp.filter_function_is_first_order = 1; } else if(filt_typ == gensym("dap2c")) { - x->dp.calc = filter_tilde_dap2; - x->dp.a2 = 1.0; - x->dp.inlet3_is_Q1_or_damping0 = 0; - x->dp.cur_a = a; /*"a" was damping*/ + x->x_para.dp.calc = filter_tilde_dp_ap2; + x->x_para.dp.a2 = 1.0; + x->x_para.dp.inlet3_is_Q = 0; + x->x_para.dp.cur_a = a; /*"a" was damping*/ } else if(filt_typ == gensym("dbpq2")) { - x->dp.calc = filter_tilde_dbp2; + x->x_para.dp.calc = filter_tilde_dp_bp2; } else if(filt_typ == gensym("drbpq2")) { - x->dp.calc = filter_tilde_drp2; + x->x_para.dp.calc = filter_tilde_dp_rp2; } else if(filt_typ == gensym("dbsq2")) { - x->dp.calc = filter_tilde_dbs2; + x->x_para.dp.calc = filter_tilde_dp_bs2; } else if(filt_typ == gensym("dbpw2")) { - x->dp.calc = filter_tilde_dbpw2; - x->dp.inlet3_is_Q1_or_damping0 = 0; - x->dp.cur_a = a; /*"a" was bw*/ + x->x_para.dp.calc = filter_tilde_dp_bpw2; + x->x_para.dp.inlet3_is_Q = 0; + x->x_para.dp.cur_a = a; /*"a" was bw*/ } else if(filt_typ == gensym("drbpw2")) { - x->dp.calc = filter_tilde_drpw2; - x->dp.inlet3_is_Q1_or_damping0 = 0; - x->dp.cur_a = a; /*"a" was bw*/ + x->x_para.dp.calc = filter_tilde_dp_rpw2; + x->x_para.dp.inlet3_is_Q = 0; + x->x_para.dp.cur_a = a; /*"a" was bw*/ } else if(filt_typ == gensym("dbsw2")) { - x->dp.calc = filter_tilde_dbsw2; - x->dp.inlet3_is_Q1_or_damping0 = 0; - x->dp.cur_a = a; /*"a" was bw*/ + x->x_para.dp.calc = filter_tilde_dp_bsw2; + x->x_para.dp.inlet3_is_Q = 0; + x->x_para.dp.cur_a = a; /*"a" was bw*/ } else if(filt_typ == gensym("dhp1")) { - x->dp.calc = filter_tilde_dhp1; - x->dp.filter_function_is_first_order = 1; + x->x_para.dp.calc = filter_tilde_dp_hp1; + x->x_para.dp.filter_function_is_first_order = 1; } else if(filt_typ == gensym("dhp2")) { - x->dp.calc = filter_tilde_dhp2; + x->x_para.dp.calc = filter_tilde_dp_hp2; } else if(filt_typ == gensym("dlp1")) { - x->dp.calc = filter_tilde_dlp1; - x->dp.filter_function_is_first_order = 1; + x->x_para.dp.calc = filter_tilde_dp_lp1; + x->x_para.dp.filter_function_is_first_order = 1; } else if(filt_typ == gensym("dlp2")) { - x->dp.calc = filter_tilde_dlp2; + x->x_para.dp.calc = filter_tilde_dp_lp2; } else if(filt_typ == gensym("dhp1c")) { - x->dp.calc = filter_tilde_dhp1; - x->dp.cur_a = 1.0 / a; - x->dp.filter_function_is_first_order = 1; + x->x_para.dp.calc = filter_tilde_dp_hp1; + x->x_para.dp.cur_a = 1.0 / a; + x->x_para.dp.filter_function_is_first_order = 1; } else if(filt_typ == gensym("dhp2c")) { - x->dp.calc = filter_tilde_dhp2; - x->dp.inlet3_is_Q1_or_damping0 = 0; - x->dp.cur_a = a / b; - x->dp.cur_b = 1.0 / b; - x->dp.filter_function_is_highpass = 1; + x->x_para.dp.calc = filter_tilde_dp_hp2; + x->x_para.dp.inlet3_is_Q = 0; + x->x_para.dp.cur_a = a / b; + x->x_para.dp.cur_b = 1.0 / b; + x->x_para.dp.filter_function_is_highpass = 1; } else if(filt_typ == gensym("dlp1c")) { - x->dp.calc = filter_tilde_dlp1; - x->dp.inlet3_is_Q1_or_damping0 = 0; - x->dp.cur_a = a; /*"a" was damping*/ - x->dp.filter_function_is_first_order = 1; + x->x_para.dp.calc = filter_tilde_dp_lp1; + x->x_para.dp.inlet3_is_Q = 0; + x->x_para.dp.cur_a = a; /*"a" was damping*/ + x->x_para.dp.filter_function_is_first_order = 1; } else if(filt_typ == gensym("dlp2c")) { - x->dp.calc = filter_tilde_dlp2; - x->dp.inlet3_is_Q1_or_damping0 = 0; - x->dp.cur_a = a; /*"a" was damping*/ + x->x_para.dp.calc = filter_tilde_dp_lp2; + x->x_para.dp.inlet3_is_Q = 0; + x->x_para.dp.cur_a = a; /*"a" was damping*/ } else { @@ -1436,9 +1466,9 @@ dap1, dap2, dap1c, dap2c, \ dbpq2, drbpq2, dbsq2, \ dbpw2, drbpw2, dbsw2 !"); } - x->dp.end_f = x->dp.cur_f; - x->dp.end_a = x->dp.cur_a; - x->dp.end_b = x->dp.cur_b; + x->x_para.dp.end_f = x->x_para.dp.cur_f; + x->x_para.dp.end_a = x->x_para.dp.cur_a; + x->x_para.dp.end_b = x->x_para.dp.cur_b; } } else @@ -1452,17 +1482,17 @@ dbpw2, drbpw2, dbsw2 !"); b = (t_float)atom_getfloatarg(3, argc, argv); interpol = (t_float)atom_getfloatarg(4, argc, argv); } - x->fp.cur_f = f; - f *= x->fp.pi_over_sr; + x->x_para.sp.cur_f = f; + f *= x->x_para.sp.pi_over_sr; if(f < 1.0e-20f) - x->fp.cur_l = 1.0e20f; + x->x_para.sp.cur_l = 1.0e20f; else if(f > 1.57079632f) - x->fp.cur_l = 0.0f; + x->x_para.sp.cur_l = 0.0f; else { si = sin(f); co = cos(f); - x->fp.cur_l = co/si; + x->x_para.sp.cur_l = co/si; } if(a <= 0.0f) a = 0.000001f; @@ -1471,128 +1501,128 @@ dbpw2, drbpw2, dbsw2 !"); if(interpol <= 0.0f) interpol = 0.0f; - x->fp.interpol_time = interpol; - x->fp.ticks_per_interpol_time = 0.001f * 44100.0f / 64.0f; - i = (int)((x->fp.ticks_per_interpol_time)*(x->fp.interpol_time)+0.49999f); + x->x_para.sp.interpol_time = interpol; + x->x_para.sp.ticks_per_interpol_time = 0.001f * 44100.0f / 64.0f; + i = (int)((x->x_para.sp.ticks_per_interpol_time)*(x->x_para.sp.interpol_time)+0.49999f); if(i <= 0) { - x->fp.ticks = 1; - x->fp.rcp_ticks = 1.0f; + x->x_para.sp.ticks = 1; + x->x_para.sp.rcp_ticks = 1.0f; } else { - x->fp.ticks = i; - x->fp.rcp_ticks = 1.0f / (t_float)i; + x->x_para.sp.ticks = i; + x->x_para.sp.rcp_ticks = 1.0f / (t_float)i; } - x->fp.cur_b = b; - x->fp.cur_a = 1.0f/a; /*"a" is default Q*/ - x->fp.inlet3_is_Q1_or_damping0 = 1; - x->fp.filter_function_is_highpass = 0; - x->fp.calc = filter_tilde_snafu; + x->x_para.sp.cur_b = b; + x->x_para.sp.cur_a = 1.0f/a; /*"a" is default Q*/ + x->x_para.sp.inlet3_is_Q = 1; + x->x_para.sp.filter_function_is_highpass = 0; + x->x_para.sp.calc = filter_tilde_sp_dummy; if(filt_typ->s_name) { if(filt_typ == gensym("ap1")) { - x->fp.calc = filter_tilde_ap1; - x->fp.a1 = 1.0f; - x->fp.filter_function_is_first_order = 1; + x->x_para.sp.calc = filter_tilde_sp_ap1; + x->x_para.sp.a1 = 1.0f; + x->x_para.sp.filter_function_is_first_order = 1; } else if(filt_typ == gensym("ap2")) { - x->fp.calc = filter_tilde_ap2; - x->fp.a2 = 1.0f; + x->x_para.sp.calc = filter_tilde_sp_ap2; + x->x_para.sp.a2 = 1.0f; } else if(filt_typ == gensym("ap1c")) { - x->fp.calc = filter_tilde_ap1; - x->fp.a1 = 1.0f; - x->fp.inlet3_is_Q1_or_damping0 = 0; - x->fp.cur_a = a; /*"a" was damping*/ - x->fp.filter_function_is_first_order = 1; + x->x_para.sp.calc = filter_tilde_sp_ap1; + x->x_para.sp.a1 = 1.0f; + x->x_para.sp.inlet3_is_Q = 0; + x->x_para.sp.cur_a = a; /*"a" was damping*/ + x->x_para.sp.filter_function_is_first_order = 1; } else if(filt_typ == gensym("ap2c")) { - x->fp.calc = filter_tilde_ap2; - x->fp.a2 = 1.0f; - x->fp.inlet3_is_Q1_or_damping0 = 0; - x->fp.cur_a = a; /*"a" was damping*/ + x->x_para.sp.calc = filter_tilde_sp_ap2; + x->x_para.sp.a2 = 1.0f; + x->x_para.sp.inlet3_is_Q = 0; + x->x_para.sp.cur_a = a; /*"a" was damping*/ } else if(filt_typ == gensym("bpq2")) { - x->fp.calc = filter_tilde_bp2; + x->x_para.sp.calc = filter_tilde_sp_bp2; } else if(filt_typ == gensym("rbpq2")) { - x->fp.calc = filter_tilde_rp2; + x->x_para.sp.calc = filter_tilde_sp_rp2; } else if(filt_typ == gensym("bsq2")) { - x->fp.calc = filter_tilde_bs2; + x->x_para.sp.calc = filter_tilde_sp_bs2; } else if(filt_typ == gensym("bpw2")) { - x->fp.calc = filter_tilde_bpw2; - x->fp.inlet3_is_Q1_or_damping0 = 0; - x->fp.cur_a = a; /*"a" was bw*/ + x->x_para.sp.calc = filter_tilde_sp_bpw2; + x->x_para.sp.inlet3_is_Q = 0; + x->x_para.sp.cur_a = a; /*"a" was bw*/ } else if(filt_typ == gensym("rbpw2")) { - x->fp.calc = filter_tilde_rpw2; - x->fp.inlet3_is_Q1_or_damping0 = 0; - x->fp.cur_a = a; /*"a" was bw*/ + x->x_para.sp.calc = filter_tilde_sp_rpw2; + x->x_para.sp.inlet3_is_Q = 0; + x->x_para.sp.cur_a = a; /*"a" was bw*/ } else if(filt_typ == gensym("bsw2")) { - x->fp.calc = filter_tilde_bsw2; - x->fp.inlet3_is_Q1_or_damping0 = 0; - x->fp.cur_a = a; /*"a" was bw*/ + x->x_para.sp.calc = filter_tilde_sp_bsw2; + x->x_para.sp.inlet3_is_Q = 0; + x->x_para.sp.cur_a = a; /*"a" was bw*/ } else if(filt_typ == gensym("hp1")) { - x->fp.calc = filter_tilde_hp1; - x->fp.filter_function_is_first_order = 1; + x->x_para.sp.calc = filter_tilde_sp_hp1; + x->x_para.sp.filter_function_is_first_order = 1; } else if(filt_typ == gensym("hp2")) { - x->fp.calc = filter_tilde_hp2; + x->x_para.sp.calc = filter_tilde_sp_hp2; } else if(filt_typ == gensym("lp1")) { - x->fp.calc = filter_tilde_lp1; - x->fp.filter_function_is_first_order = 1; + x->x_para.sp.calc = filter_tilde_sp_lp1; + x->x_para.sp.filter_function_is_first_order = 1; } else if(filt_typ == gensym("lp2")) { - x->fp.calc = filter_tilde_lp2; + x->x_para.sp.calc = filter_tilde_sp_lp2; } else if(filt_typ == gensym("hp1c")) { - x->fp.calc = filter_tilde_hp1; - x->fp.cur_a = 1.0f / a; - x->fp.filter_function_is_first_order = 1; + x->x_para.sp.calc = filter_tilde_sp_hp1; + x->x_para.sp.cur_a = 1.0f / a; + x->x_para.sp.filter_function_is_first_order = 1; } else if(filt_typ == gensym("hp2c")) { - x->fp.calc = filter_tilde_hp2; - x->fp.inlet3_is_Q1_or_damping0 = 0; - x->fp.cur_a = a / b; - x->fp.cur_b = 1.0f / b; - x->fp.filter_function_is_highpass = 1; + x->x_para.sp.calc = filter_tilde_sp_hp2; + x->x_para.sp.inlet3_is_Q = 0; + x->x_para.sp.cur_a = a / b; + x->x_para.sp.cur_b = 1.0f / b; + x->x_para.sp.filter_function_is_highpass = 1; } else if(filt_typ == gensym("lp1c")) { - x->fp.calc = filter_tilde_lp1; - x->fp.inlet3_is_Q1_or_damping0 = 0; - x->fp.cur_a = a; /*"a" was damping*/ - x->fp.filter_function_is_first_order = 1; + x->x_para.sp.calc = filter_tilde_sp_lp1; + x->x_para.sp.inlet3_is_Q = 0; + x->x_para.sp.cur_a = a; /*"a" was damping*/ + x->x_para.sp.filter_function_is_first_order = 1; } else if(filt_typ == gensym("lp2c")) { - x->fp.calc = filter_tilde_lp2; - x->fp.inlet3_is_Q1_or_damping0 = 0; - x->fp.cur_a = a; /*"a" was damping*/ + x->x_para.sp.calc = filter_tilde_sp_lp2; + x->x_para.sp.inlet3_is_Q = 0; + x->x_para.sp.cur_a = a; /*"a" was damping*/ } else { @@ -1608,9 +1638,9 @@ dap1, dap2, dap1c, dap2c, \ dbpq2, drbpq2, dbsq2, \ dbpw2, drbpw2, dbsw2 !"); } - x->fp.end_f = x->fp.cur_f; - x->fp.end_a = x->fp.cur_a; - x->fp.end_b = x->fp.cur_b; + x->x_para.sp.end_f = x->x_para.sp.cur_f; + x->x_para.sp.end_a = x->x_para.sp.cur_a; + x->x_para.sp.end_b = x->x_para.sp.cur_b; } } return (x); @@ -1620,11 +1650,12 @@ void filter_tilde_setup(void) { filter_tilde_class = class_new(gensym("filter~"), (t_newmethod)filter_tilde_new, 0, sizeof(t_filter_tilde), 0, A_GIMME, 0); - CLASS_MAINSIGNALIN(filter_tilde_class, t_filter_tilde, x_msi); + CLASS_MAINSIGNALIN(filter_tilde_class, t_filter_tilde, x_float_sig_in); class_addmethod(filter_tilde_class, (t_method)filter_tilde_dsp, gensym("dsp"), 0); class_addmethod(filter_tilde_class, (t_method)filter_tilde_ft1, gensym("ft1"), A_FLOAT, 0); class_addmethod(filter_tilde_class, (t_method)filter_tilde_ft2, gensym("ft2"), A_FLOAT, 0); class_addmethod(filter_tilde_class, (t_method)filter_tilde_ft3, gensym("ft3"), A_FLOAT, 0); class_addmethod(filter_tilde_class, (t_method)filter_tilde_ft4, gensym("ft4"), A_FLOAT, 0); + class_addmethod(filter_tilde_class, (t_method)filter_tilde_set, gensym("set"), A_GIMME, 0); class_addmethod(filter_tilde_class, (t_method)filter_tilde_print, gensym("print"), 0); } diff --git a/externals/iemlib/iemlib1/src/for++.c b/externals/iemlib/iemlib1/src/for++.c index 76daecc24c388361f59e1fe7af3b1ab7b525d8f3..5c3bf189c901a3892db62b7fb01874b85306daf4 100644 --- a/externals/iemlib/iemlib1/src/for++.c +++ b/externals/iemlib/iemlib1/src/for++.c @@ -1,88 +1,86 @@ /* For information on usage and redistribution, and for a DISCLAIMER OF ALL * WARRANTIES, see the file, "LICENSE.txt," in this distribution. -iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */ +iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2011 */ #include "m_pd.h" #include "iemlib.h" -/* ----------------------------- for++ -------------------------------- */ -/* -- an internal timed counter (start-, stop-number and metro-time) -- */ +/* ------------------------------------ for++ -------------------------------------- */ +/* -- an optional timed counter (begin number, end number, metro time, increment) -- */ typedef struct _forpp { t_object x_obj; - int x_beg; - int x_end; - t_float x_delay; - int x_cur; - int x_incr; - void *x_out_end; - void *x_clock; - void *x_clock2; + double x_beg; + double x_end; + double x_delay; + double x_cur; + double x_incr; + t_outlet *x_out_counter; + t_outlet *x_out_end; + t_clock *x_clock_incr; + t_clock *x_clock_end; } t_forpp; static t_class *forpp_class; -static void forpp_tick2(t_forpp *x) +static void forpp_tick_end(t_forpp *x) { outlet_bang(x->x_out_end); - clock_unset(x->x_clock2); + clock_unset(x->x_clock_end); } -static void forpp_tick(t_forpp *x) +static void forpp_tick_incr(t_forpp *x) { - outlet_float(x->x_obj.ob_outlet, x->x_cur); + int stop_it=1; + + outlet_float(x->x_out_counter, (t_float)x->x_cur); x->x_cur += x->x_incr; if(x->x_incr > 0) { if(x->x_cur <= x->x_end) - clock_delay(x->x_clock, x->x_delay); - else - { - clock_unset(x->x_clock); - clock_delay(x->x_clock2, x->x_delay); - } + stop_it = 0; } else { if(x->x_cur >= x->x_end) - clock_delay(x->x_clock, x->x_delay); - else - { - clock_unset(x->x_clock); - clock_delay(x->x_clock2, x->x_delay); - } + stop_it = 0; } + + if(stop_it) + { + clock_unset(x->x_clock_incr); + clock_delay(x->x_clock_end, x->x_delay); + } + else + clock_delay(x->x_clock_incr, x->x_delay); } static void forpp_bang(t_forpp *x) { - x->x_cur = x->x_beg; - outlet_float(x->x_obj.ob_outlet, x->x_cur); - x->x_cur += x->x_incr; - if(x->x_incr > 0) + if(x->x_delay > 0.0) { - if(x->x_cur <= x->x_end) - clock_delay(x->x_clock, x->x_delay); - else - { - clock_unset(x->x_clock); - clock_delay(x->x_clock2, x->x_delay); - } + x->x_cur = x->x_beg; + forpp_tick_incr(x); } else { - if(x->x_cur >= x->x_end) - clock_delay(x->x_clock, x->x_delay); + double cur=x->x_beg, end=x->x_end, incr=x->x_incr; + + if(x->x_end < x->x_beg) + { + for(; cur >= end; cur += incr) + outlet_float(x->x_out_counter, (t_float)cur); + } else { - clock_unset(x->x_clock); - clock_delay(x->x_clock2, x->x_delay); + for(; cur <= end; cur += incr) + outlet_float(x->x_out_counter, (t_float)cur); } + outlet_bang(x->x_out_end); } - } static void forpp_start(t_forpp *x) @@ -92,90 +90,99 @@ static void forpp_start(t_forpp *x) static void forpp_stop(t_forpp *x) { - if(x->x_incr > 0) - x->x_cur = x->x_end + 1; - else - x->x_cur = x->x_end - 1; - clock_unset(x->x_clock); - clock_unset(x->x_clock2); + x->x_cur = x->x_end + x->x_incr; + clock_unset(x->x_clock_incr); + clock_unset(x->x_clock_end); } -static void forpp_float(t_forpp *x, t_floatarg beg) +static void forpp_ft3(t_forpp *x, t_floatarg incr) { - x->x_beg = (int)beg; if(x->x_end < x->x_beg) - x->x_incr = -1; + { + if(incr > 0.0) + incr = -incr; + } else - x->x_incr = 1; + { + if(incr < 0.0) + incr = -incr; + } + x->x_incr = (double)incr; +} + +static void forpp_ft2(t_forpp *x, t_floatarg delay) +{ + if(delay < 0.0) + delay = 0.0; + x->x_delay = (double)delay; } static void forpp_ft1(t_forpp *x, t_floatarg end) { - x->x_end = (int)end; - if(x->x_end < x->x_beg) - x->x_incr = -1; - else - x->x_incr = 1; + x->x_end = (double)end; + forpp_ft3(x, (t_floatarg)x->x_incr); } -static void forpp_ft2(t_forpp *x, t_floatarg delay) +static void forpp_float(t_forpp *x, t_floatarg beg) { - if(delay < 0.0) - delay = 0.0; - x->x_delay = delay; + x->x_beg = (double)beg; + forpp_ft3(x, (t_floatarg)x->x_incr); } static void forpp_list(t_forpp *x, t_symbol *s, int argc, t_atom *argv) { - if(argc == 2) - { - forpp_float(x, atom_getfloatarg(0, argc, argv)); + if((argc >= 4) && IS_A_FLOAT(argv, 3)) + forpp_ft3(x, atom_getfloatarg(3, argc, argv)); + if((argc >= 3) && IS_A_FLOAT(argv, 2)) + forpp_ft2(x, atom_getfloatarg(2, argc, argv)); + if((argc >= 2) && IS_A_FLOAT(argv, 1)) forpp_ft1(x, atom_getfloatarg(1, argc, argv)); - } - else if(argc == 3) - { + if((argc >= 1) && IS_A_FLOAT(argv, 0)) forpp_float(x, atom_getfloatarg(0, argc, argv)); - forpp_ft1(x, atom_getfloatarg(1, argc, argv)); - forpp_ft2(x, atom_getfloatarg(2, argc, argv)); - } } -static void *forpp_new(t_floatarg beg, t_floatarg end, t_floatarg delay) +static void *forpp_new(t_symbol *s, int argc, t_atom *argv) { t_forpp *x = (t_forpp *)pd_new(forpp_class); + t_float fbeg=0.0, fend=0.0, fdelay=0.0, fincr=1.0; // default + + if((argc >= 1) && IS_A_FLOAT(argv, 0)) + fbeg = (t_float)atom_getfloatarg(0, argc, argv); + if((argc >= 2) && IS_A_FLOAT(argv, 1)) + fend = (t_float)atom_getfloatarg(1, argc, argv); + if((argc >= 3) && IS_A_FLOAT(argv, 2)) + fdelay = (t_float)atom_getfloatarg(2, argc, argv); + if((argc >= 4) && IS_A_FLOAT(argv, 3)) + fincr = (t_float)atom_getfloatarg(3, argc, argv); inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft1")); inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft2")); - outlet_new(&x->x_obj, &s_float); + inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft3")); + x->x_out_counter = outlet_new(&x->x_obj, &s_float); x->x_out_end = outlet_new(&x->x_obj, &s_bang); - x->x_clock = clock_new(x, (t_method)forpp_tick); - x->x_clock2 = clock_new(x, (t_method)forpp_tick2); - x->x_beg = (int)beg; - x->x_end = (int)end; - if(x->x_end < x->x_beg) - x->x_incr = -1; - else - x->x_incr = 1; - if(delay < 0.0) - delay = 0.0; - x->x_delay = delay; + x->x_clock_incr = clock_new(x, (t_method)forpp_tick_incr); + x->x_clock_end = clock_new(x, (t_method)forpp_tick_end); + + x->x_beg = (double)fbeg; + x->x_end = (double)fend; + forpp_ft3(x, (t_floatarg)fincr); + forpp_ft2(x, (t_floatarg)fdelay); x->x_cur = x->x_beg; return(x); } static void forpp_ff(t_forpp *x) { - clock_free(x->x_clock); - clock_free(x->x_clock2); + clock_free(x->x_clock_incr); + clock_free(x->x_clock_end); } void forpp_setup(void) { forpp_class = class_new(gensym("for++"), (t_newmethod)forpp_new, (t_method)forpp_ff, sizeof(t_forpp), - 0, A_DEFFLOAT, A_DEFFLOAT, A_DEFFLOAT, 0); - class_addcreator((t_newmethod)forpp_new, gensym("for_pp"), A_DEFFLOAT, A_DEFFLOAT, A_DEFFLOAT, 0); - + 0, A_GIMME, 0); + class_addcreator((t_newmethod)forpp_new, gensym("for_pp"), A_GIMME, 0); class_addbang(forpp_class, forpp_bang); class_addfloat(forpp_class, forpp_float); class_addlist(forpp_class, forpp_list); @@ -183,5 +190,10 @@ void forpp_setup(void) class_addmethod(forpp_class, (t_method)forpp_stop, gensym("stop"), 0); class_addmethod(forpp_class, (t_method)forpp_ft1, gensym("ft1"), A_FLOAT, 0); class_addmethod(forpp_class, (t_method)forpp_ft2, gensym("ft2"), A_FLOAT, 0); -// class_sethelpsymbol(forpp_class, gensym("iemhelp/help-for++")); + class_addmethod(forpp_class, (t_method)forpp_ft3, gensym("ft3"), A_FLOAT, 0); +} + +void setup_for0x2b0x2b(void) +{ + forpp_setup(); } diff --git a/externals/iemlib/iemlib1/src/hml_shelf~.c b/externals/iemlib/iemlib1/src/hml_shelf~.c index f2ec44254acc873545c604f730da4f8f04d9a228..cad58b0a72ccc9aa948edc4d721986535deeb424 100644 --- a/externals/iemlib/iemlib1/src/hml_shelf~.c +++ b/externals/iemlib/iemlib1/src/hml_shelf~.c @@ -1,7 +1,7 @@ /* For information on usage and redistribution, and for a DISCLAIMER OF ALL * WARRANTIES, see the file, "LICENSE.txt," in this distribution. -iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */ +iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2011 */ #include "m_pd.h" #include "iemlib.h" @@ -47,7 +47,7 @@ typedef struct _hml_shelf_tilde int event_mask; void *x_debug_outlet; t_atom x_at[5]; - t_float x_msi; + t_float x_float_sig_in; } t_hml_shelf_tilde; static t_class *hml_shelf_tilde_class; @@ -425,6 +425,15 @@ static void hml_shelf_tilde_ft1(t_hml_shelf_tilde *x, t_floatarg ll) } } +static void hml_shelf_tilde_set(t_hml_shelf_tilde *x, t_symbol *s, int argc, t_atom *argv) +{ + if((argc >= 2) && IS_A_FLOAT(argv, 1) && IS_A_FLOAT(argv, 0)) + { + x->wn1 = (t_float)atom_getfloatarg(0, argc, argv); + x->wn2 = (t_float)atom_getfloatarg(1, argc, argv); + } +} + static void hml_shelf_tilde_print(t_hml_shelf_tilde *x) { // post("fb1 = %g, fb2 = %g, ff1 = %g, ff2 = %g, ff3 = %g", x->b1, x->b2, x->a0, x->a1, x->a2); @@ -467,7 +476,7 @@ static void *hml_shelf_tilde_new(t_symbol *s, int argc, t_atom *argv) inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft6")); outlet_new(&x->x_obj, &s_signal); x->x_debug_outlet = outlet_new(&x->x_obj, &s_list); - x->x_msi = 0; + x->x_float_sig_in = 0.0f; x->x_at[0].a_type = A_FLOAT; x->x_at[1].a_type = A_FLOAT; @@ -535,7 +544,7 @@ void hml_shelf_tilde_setup(void) { hml_shelf_tilde_class = class_new(gensym("hml_shelf~"), (t_newmethod)hml_shelf_tilde_new, 0, sizeof(t_hml_shelf_tilde), 0, A_GIMME, 0); - CLASS_MAINSIGNALIN(hml_shelf_tilde_class, t_hml_shelf_tilde, x_msi); + CLASS_MAINSIGNALIN(hml_shelf_tilde_class, t_hml_shelf_tilde, x_float_sig_in); class_addmethod(hml_shelf_tilde_class, (t_method)hml_shelf_tilde_dsp, gensym("dsp"), 0); class_addmethod(hml_shelf_tilde_class, (t_method)hml_shelf_tilde_ft1, gensym("ft1"), A_FLOAT, 0); class_addmethod(hml_shelf_tilde_class, (t_method)hml_shelf_tilde_ft2, gensym("ft2"), A_FLOAT, 0); @@ -543,6 +552,6 @@ void hml_shelf_tilde_setup(void) class_addmethod(hml_shelf_tilde_class, (t_method)hml_shelf_tilde_ft4, gensym("ft4"), A_FLOAT, 0); class_addmethod(hml_shelf_tilde_class, (t_method)hml_shelf_tilde_ft5, gensym("ft5"), A_FLOAT, 0); class_addmethod(hml_shelf_tilde_class, (t_method)hml_shelf_tilde_ft6, gensym("ft6"), A_FLOAT, 0); + class_addmethod(hml_shelf_tilde_class, (t_method)hml_shelf_tilde_set, gensym("set"), A_GIMME, 0); class_addmethod(hml_shelf_tilde_class, (t_method)hml_shelf_tilde_print, gensym("print"), 0); -// class_sethelpsymbol(hml_shelf_tilde_class, gensym("iemhelp/help-hml_shelf~")); } diff --git a/externals/iemlib/iemlib1/src/iem_cot4~.c b/externals/iemlib/iemlib1/src/iem_cot4~.c index c4e5dc75abeffb08aa3f5d0a4e8adc726d66ac0f..70de93fe533df3c4377d6b6ed552eaf71e3d0b87 100644 --- a/externals/iemlib/iemlib1/src/iem_cot4~.c +++ b/externals/iemlib/iemlib1/src/iem_cot4~.c @@ -19,7 +19,7 @@ typedef struct _iem_cot4_tilde { t_object x_obj; t_float x_sr; - t_float x_msi; + t_float x_float_sig_in; } t_iem_cot4_tilde; static t_int *iem_cot4_tilde_perform(t_int *w) @@ -152,7 +152,7 @@ static void *iem_cot4_tilde_new(void) t_iem_cot4_tilde *x = (t_iem_cot4_tilde *)pd_new(iem_cot4_tilde_class); outlet_new(&x->x_obj, gensym("signal")); - x->x_msi = 0; + x->x_float_sig_in = 0.0f; return (x); } @@ -161,8 +161,7 @@ void iem_cot4_tilde_setup(void) iem_cot4_tilde_class = class_new(gensym("iem_cot4~"), (t_newmethod)iem_cot4_tilde_new, 0, sizeof(t_iem_cot4_tilde), 0, 0); class_addcreator((t_newmethod)iem_cot4_tilde_new, gensym("iem_cot~"), 0); - CLASS_MAINSIGNALIN(iem_cot4_tilde_class, t_iem_cot4_tilde, x_msi); + CLASS_MAINSIGNALIN(iem_cot4_tilde_class, t_iem_cot4_tilde, x_float_sig_in); class_addmethod(iem_cot4_tilde_class, (t_method)iem_cot4_tilde_dsp, gensym("dsp"), 0); iem_cot4_tilde_maketable(); -// class_sethelpsymbol(iem_cot4_tilde_class, gensym("iemhelp/help-iem_cot4~")); } diff --git a/externals/iemlib/iemlib1/src/iem_delay~.c b/externals/iemlib/iemlib1/src/iem_delay~.c index 03a1636ecb46fe2b3e0dbf3d0863e3c080594bdb..dd9c9e405bd6fa7aeb43dabdbcaf2ec78fdbd08a 100644 --- a/externals/iemlib/iemlib1/src/iem_delay~.c +++ b/externals/iemlib/iemlib1/src/iem_delay~.c @@ -25,7 +25,7 @@ typedef struct _iem_delay_tilde int x_blocksize; int x_delay_samples; t_float x_sr; - t_float x_msi; + t_float x_float_sig_in; } t_iem_delay_tilde; static void iem_delay_tilde_cur_del(t_iem_delay_tilde *x, t_floatarg f) @@ -182,7 +182,7 @@ static void *iem_delay_tilde_new(t_floatarg max_delay_ms, t_floatarg current_del x->x_sr = 0.0f; inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft1")); outlet_new(&x->x_obj, &s_signal); - x->x_msi = 0.0f; + x->x_float_sig_in = 0.0f; return (x); } @@ -195,7 +195,7 @@ void iem_delay_tilde_setup(void) { iem_delay_tilde_class = class_new(gensym("iem_delay~"), (t_newmethod)iem_delay_tilde_new, (t_method)iem_delay_tilde_free, sizeof(t_iem_delay_tilde), 0, A_DEFFLOAT, A_DEFFLOAT, 0); - CLASS_MAINSIGNALIN(iem_delay_tilde_class, t_iem_delay_tilde, x_msi); + CLASS_MAINSIGNALIN(iem_delay_tilde_class, t_iem_delay_tilde, x_float_sig_in); class_addmethod(iem_delay_tilde_class, (t_method)iem_delay_tilde_dsp, gensym("dsp"), 0); class_addmethod(iem_delay_tilde_class, (t_method)iem_delay_tilde_cur_del, gensym("ft1"), A_FLOAT, 0); } diff --git a/externals/iemlib/iemlib1/src/iem_pow4~.c b/externals/iemlib/iemlib1/src/iem_pow4~.c index 838ed5fe7722a21e338b0369126a79f9ff54efb8..3a870647b67771b29a3b4c0a490739f1a18b3ae6 100644 --- a/externals/iemlib/iemlib1/src/iem_pow4~.c +++ b/externals/iemlib/iemlib1/src/iem_pow4~.c @@ -1,7 +1,7 @@ /* For information on usage and redistribution, and for a DISCLAIMER OF ALL * WARRANTIES, see the file, "LICENSE.txt," in this distribution. -iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */ +iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2012 */ #include "m_pd.h" #include "iemlib.h" @@ -14,37 +14,49 @@ static t_class *iem_pow4_tilde_class; typedef struct _iem_pow4_tilde { t_object x_obj; - t_float x_exp; - t_float x_msi; + t_sample x_expo; + t_float x_float_sig_in; } t_iem_pow4_tilde; static void iem_pow4_tilde_ft1(t_iem_pow4_tilde *x, t_floatarg f) { - x->x_exp = f; + x->x_expo = (t_sample)f; } static t_int *iem_pow4_tilde_perform(t_int *w) { - t_float *in = (t_float *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); t_iem_pow4_tilde *x = (t_iem_pow4_tilde *)(w[3]); - t_float y=x->x_exp; - t_float f, g; + t_sample expo=x->x_expo; + t_sample f, g; int n = (int)(w[4])/4; while (n--) { - f = *in; - if(f < 0.01f) - f = 0.01f; - else if(f > 1000.0f) - f = 1000.0f; - g = log(f); - f = exp(g*y); - *out++ = f; - *out++ = f; - *out++ = f; - *out++ = f; + f = (t_sample)(*in); + if(f > 0.0) + { + g = log(f); + f = exp(g * expo); + *out++ = f; + *out++ = f; + *out++ = f; + *out++ = f; + + /*g = pow(f, expo); + *out++ = g; + *out++ = g; + *out++ = g; + *out++ = g;*/ + } + else + { + *out++ = 0.0; + *out++ = 0.0; + *out++ = 0.0; + *out++ = 0.0; + } in += 4; } return (w+5); @@ -59,10 +71,10 @@ static void *iem_pow4_tilde_new(t_floatarg f) { t_iem_pow4_tilde *x = (t_iem_pow4_tilde *)pd_new(iem_pow4_tilde_class); - x->x_exp = f; + x->x_expo = (t_sample)f; inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft1")); outlet_new(&x->x_obj, gensym("signal")); - x->x_msi = 0; + x->x_float_sig_in = 0.0; return (x); } @@ -70,9 +82,7 @@ void iem_pow4_tilde_setup(void) { iem_pow4_tilde_class = class_new(gensym("iem_pow4~"), (t_newmethod)iem_pow4_tilde_new, 0, sizeof(t_iem_pow4_tilde), 0, A_DEFFLOAT, 0); - class_addcreator((t_newmethod)iem_pow4_tilde_new, gensym("icot~"), 0); - CLASS_MAINSIGNALIN(iem_pow4_tilde_class, t_iem_pow4_tilde, x_msi); + CLASS_MAINSIGNALIN(iem_pow4_tilde_class, t_iem_pow4_tilde, x_float_sig_in); class_addmethod(iem_pow4_tilde_class, (t_method)iem_pow4_tilde_dsp, gensym("dsp"), 0); class_addmethod(iem_pow4_tilde_class, (t_method)iem_pow4_tilde_ft1, gensym("ft1"), A_FLOAT, 0); -// class_sethelpsymbol(iem_pow4_tilde_class, gensym("iemhelp/help-iem_pow4~")); } diff --git a/externals/iemlib/iemlib1/src/iem_sqrt4~.c b/externals/iemlib/iemlib1/src/iem_sqrt4~.c index 50d837a0c094d9fd6f21a43ce61581bc1411f116..0b4049d1ebcd07d9046cf057d7c6ce7cec41790e 100644 --- a/externals/iemlib/iemlib1/src/iem_sqrt4~.c +++ b/externals/iemlib/iemlib1/src/iem_sqrt4~.c @@ -1,7 +1,7 @@ /* For information on usage and redistribution, and for a DISCLAIMER OF ALL * WARRANTIES, see the file, "LICENSE.txt," in this distribution. -iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */ +iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2012 */ #include "m_pd.h" #include "iemlib.h" @@ -12,40 +12,40 @@ iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 /* ------------------------ iem_sqrt4~ ----------------------------- */ -t_float *iem_sqrt4_tilde_exptab=(t_float *)0L; -t_float *iem_sqrt4_tilde_mantissatab=(t_float *)0L; +static t_float iem_rsqrt4_tilde_exptab[IEMSQRT4TAB1SIZE]; +static t_float iem_rsqrt4_tilde_mantissatab[IEMSQRT4TAB2SIZE]; static t_class *iem_sqrt4_tilde_class; typedef struct _iem_sqrt4_tilde { t_object x_obj; - t_float x_msi; + t_float x_float_sig_in; } t_iem_sqrt4_tilde; static t_int *iem_sqrt4_tilde_perform(t_int *w) { - t_float *in = (t_float *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); t_int n = (t_int)(w[3])/4; while(n--) { - t_float f = *in; - t_float g, h; + t_sample f = *in; + t_sample g, h; union tabfudge_f tf; - if(f < 0.0f) + if(f <= 0.0) { - *out++ = 0.0f; - *out++ = 0.0f; - *out++ = 0.0f; - *out++ = 0.0f; + *out++ = 0.0; + *out++ = 0.0; + *out++ = 0.0; + *out++ = 0.0; } else { tf.tf_f = f; - g = iem_sqrt4_tilde_exptab[((tf.tf_l) >> 23) & 0xff] * iem_sqrt4_tilde_mantissatab[((tf.tf_l) >> 13) & 0x3ff]; + g = iem_rsqrt4_tilde_exptab[((tf.tf_l) >> 23) & 0xff] * iem_rsqrt4_tilde_mantissatab[((tf.tf_l) >> 13) & 0x3ff]; h = f * (1.5f * g - 0.5f * g * g * g * f); *out++ = h; *out++ = h; @@ -62,30 +62,21 @@ static void iem_sqrt4_tilde_dsp(t_iem_sqrt4_tilde *x, t_signal **sp) dsp_add(iem_sqrt4_tilde_perform, 3, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n); } -static void iem_sqrt4_tilde_maketable(void) +static void iem_sqrt4_tilde_init(void) { int i; t_float f; - long l; + union tabfudge_f tf; - if(!iem_sqrt4_tilde_exptab) + for(i=0; i<IEMSQRT4TAB1SIZE; i++) { - iem_sqrt4_tilde_exptab = (t_float *)getbytes(sizeof(t_float) * IEMSQRT4TAB1SIZE); - for(i=0; i<IEMSQRT4TAB1SIZE; i++) - { - l = (i ? (i == IEMSQRT4TAB1SIZE-1 ? IEMSQRT4TAB1SIZE-2 : i) : 1)<< 23; - *(long *)(&f) = l; - iem_sqrt4_tilde_exptab[i] = 1.0f/sqrt(f); - } + tf.tf_l = (i ? (i == IEMSQRT4TAB1SIZE-1 ? IEMSQRT4TAB1SIZE-2 : i) : 1)<< 23; + iem_rsqrt4_tilde_exptab[i] = 1.0/sqrt(tf.tf_f); } - if(!iem_sqrt4_tilde_mantissatab) + for(i=0; i<IEMSQRT4TAB2SIZE; i++) { - iem_sqrt4_tilde_mantissatab = (t_float *)getbytes(sizeof(t_float) * IEMSQRT4TAB2SIZE); - for(i=0; i<IEMSQRT4TAB2SIZE; i++) - { - f = 1.0f + (1.0f/(t_float)IEMSQRT4TAB2SIZE) * (t_float)i; - iem_sqrt4_tilde_mantissatab[i] = 1.0f/sqrt(f); - } + f = 1.0 + (1.0/(t_float)IEMSQRT4TAB2SIZE) * (t_float)i; + iem_rsqrt4_tilde_mantissatab[i] = 1.0/sqrt(f); } } @@ -94,16 +85,15 @@ static void *iem_sqrt4_tilde_new(void) t_iem_sqrt4_tilde *x = (t_iem_sqrt4_tilde *)pd_new(iem_sqrt4_tilde_class); outlet_new(&x->x_obj, gensym("signal")); - x->x_msi = 0; + x->x_float_sig_in = 0; return (x); } void iem_sqrt4_tilde_setup(void) { + iem_sqrt4_tilde_init(); iem_sqrt4_tilde_class = class_new(gensym("iem_sqrt4~"), (t_newmethod)iem_sqrt4_tilde_new, 0, sizeof(t_iem_sqrt4_tilde), 0, 0); - CLASS_MAINSIGNALIN(iem_sqrt4_tilde_class, t_iem_sqrt4_tilde, x_msi); + CLASS_MAINSIGNALIN(iem_sqrt4_tilde_class, t_iem_sqrt4_tilde, x_float_sig_in); class_addmethod(iem_sqrt4_tilde_class, (t_method)iem_sqrt4_tilde_dsp, gensym("dsp"), 0); - iem_sqrt4_tilde_maketable(); -// class_sethelpsymbol(iem_sqrt4_tilde_class, gensym("iemhelp/help-iem_sqrt4~")); } diff --git a/externals/iemlib/iemlib1/src/iemlib.h b/externals/iemlib/iemlib1/src/iemlib.h deleted file mode 100644 index 973bfebcd9f46088839bbf5c7af217bc51714dba..0000000000000000000000000000000000000000 --- a/externals/iemlib/iemlib1/src/iemlib.h +++ /dev/null @@ -1,102 +0,0 @@ -/* For information on usage and redistribution, and for a DISCLAIMER OF ALL -* WARRANTIES, see the file, "LICENSE.txt," in this distribution. - -iemlib written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2007 */ - -#ifndef __IEMLIB_H__ -#define __IEMLIB_H__ - - -#define IS_A_POINTER(atom,index) ((atom+index)->a_type == A_POINTER) -#define IS_A_FLOAT(atom,index) ((atom+index)->a_type == A_FLOAT) -#define IS_A_SYMBOL(atom,index) ((atom+index)->a_type == A_SYMBOL) -#define IS_A_DOLLAR(atom,index) ((atom+index)->a_type == A_DOLLAR) -#define IS_A_DOLLSYM(atom,index) ((atom+index)->a_type == A_DOLLSYM) -#define IS_A_SEMI(atom,index) ((atom+index)->a_type == A_SEMI) -#define IS_A_COMMA(atom,index) ((atom+index)->a_type == A_COMMA) - -/* now miller's code starts : - for 4 point interpolation - for lookup tables - for denormal floats - */ - -#ifdef MSW -int sys_noloadbang; -//t_symbol *iemgui_key_sym=0; -#include <io.h> -#else -extern int sys_noloadbang; -//extern t_symbol *iemgui_key_sym; -#include <unistd.h> -#endif - -#define DEFDELVS 64 -#define XTRASAMPS 4 -#define SAMPBLK 4 - -#define UNITBIT32 1572864. /* 3*2^19; bit 32 has place value 1 */ - - /* machine-dependent definitions. These ifdefs really - should have been by CPU type and not by operating system! */ -#ifdef IRIX - /* big-endian. Most significant byte is at low address in memory */ -#define HIOFFSET 0 /* word offset to find MSB */ -#define LOWOFFSET 1 /* word offset to find LSB */ -#define int32 long /* a data type that has 32 bits */ -#endif /* IRIX */ - -#ifdef MSW - /* little-endian; most significant byte is at highest address */ -#define HIOFFSET 1 -#define LOWOFFSET 0 -#define int32 long -#endif /* MSW */ - -#if defined(__FreeBSD__) || defined(__APPLE__) -#include <machine/endian.h> -#endif - -#ifdef __linux__ -#include <endian.h> -#endif - -#if defined(__unix__) || defined(__APPLE__) -#if !defined(BYTE_ORDER) || !defined(LITTLE_ENDIAN) -#error No byte order defined -#endif - -#if BYTE_ORDER == LITTLE_ENDIAN -#define HIOFFSET 1 -#define LOWOFFSET 0 -#else -#define HIOFFSET 0 /* word offset to find MSB */ -#define LOWOFFSET 1 /* word offset to find LSB */ -#endif /* __BYTE_ORDER */ -#include <sys/types.h> -#define int32 int32_t -#endif /* __unix__ or __APPLE__*/ - -union tabfudge_d -{ - double tf_d; - int32 tf_i[2]; -}; - -union tabfudge_f -{ - float tf_f; - long tf_l; -}; - -#if defined __i386__ || defined __x86_64__ -#define IEM_DENORMAL(f) ((((*(unsigned int*)&(f))&0x60000000)==0) || \ -(((*(unsigned int*)&(f))&0x60000000)==0x60000000)) -/* more stringent test: anything not between 1e-19 and 1e19 in absolute val */ -#else - -#define IEM_DENORMAL(f) 0 - -#endif - -#endif diff --git a/externals/iemlib/iemlib1/src/iemlib1.c b/externals/iemlib/iemlib1/src/iemlib1.c index fcc6615c960755d4d9191cefff8296506e843dfb..c4aa6b23a3028202ec0d2f1935f30b8abf31fe58 100644 --- a/externals/iemlib/iemlib1/src/iemlib1.c +++ b/externals/iemlib/iemlib1/src/iemlib1.c @@ -36,6 +36,7 @@ void peakenv_hold_tilde_setup(void); void prvu_tilde_setup(void); void pvu_tilde_setup(void); void rvu_tilde_setup(void); +void sin_freq_tilde_setup(void); void sin_phase_tilde_setup(void); void sparse_FIR_tilde_setup(void); void soundfile_info_setup(void); @@ -70,6 +71,7 @@ void iemlib1_setup(void) prvu_tilde_setup(); pvu_tilde_setup(); rvu_tilde_setup(); + sin_freq_tilde_setup(); sin_phase_tilde_setup(); sparse_FIR_tilde_setup(); soundfile_info_setup(); @@ -77,6 +79,6 @@ void iemlib1_setup(void) v2db_setup(); vcf_filter_tilde_setup(); - post("iemlib1 (R-1.17) library loaded! (c) Thomas Musil 11.2010"); + post("iemlib1 (R-1.20) library loaded! (c) Thomas Musil 07.2013"); post(" musil%ciem.at iem KUG Graz Austria", '@'); } diff --git a/externals/iemlib/iemlib1/src/iemlib1.sln b/externals/iemlib/iemlib1/src/iemlib1.sln new file mode 100644 index 0000000000000000000000000000000000000000..ddf7a557045bd67810098d006c47f85851b220ec --- /dev/null +++ b/externals/iemlib/iemlib1/src/iemlib1.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iemlib1", "iemlib1.vcproj", "{5ECC5EEF-09A4-4DDD-B1C8-D4FA1D5B8BD5}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {5ECC5EEF-09A4-4DDD-B1C8-D4FA1D5B8BD5}.Debug|Win32.ActiveCfg = Release|Win32 + {5ECC5EEF-09A4-4DDD-B1C8-D4FA1D5B8BD5}.Debug|Win32.Build.0 = Release|Win32 + {5ECC5EEF-09A4-4DDD-B1C8-D4FA1D5B8BD5}.Release|Win32.ActiveCfg = Release|Win32 + {5ECC5EEF-09A4-4DDD-B1C8-D4FA1D5B8BD5}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/externals/iemlib/iemlib1/src/iemlib1.vcproj b/externals/iemlib/iemlib1/src/iemlib1.vcproj new file mode 100644 index 0000000000000000000000000000000000000000..47d01192c47dff3687b8a0deb478b3e1865b3e9d --- /dev/null +++ b/externals/iemlib/iemlib1/src/iemlib1.vcproj @@ -0,0 +1,77 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="9,00" + Name="iemlib1" + ProjectGUID="{5ECC5EEF-09A4-4DDD-B1C8-D4FA1D5B8BD5}" + Keyword="MakeFileProj" + TargetFrameworkVersion="0" + > + <Platforms> + <Platform + Name="Win32" + /> + </Platforms> + <ToolFiles> + </ToolFiles> + <Configurations> + <Configuration + Name="Debug|Win32" + OutputDirectory=".\Debug" + IntermediateDirectory=".\Debug" + ConfigurationType="0" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" + ATLMinimizesCRunTimeLibraryUsage="false" + > + <Tool + Name="VCNMakeTool" + BuildCommandLine="NMAKE /f makefile_win" + ReBuildCommandLine="NMAKE /f makefile_win /a" + CleanCommandLine="" + Output="iemlib1.exe" + PreprocessorDefinitions="" + IncludeSearchPath="" + ForcedIncludes="" + AssemblySearchPath="" + ForcedUsingAssemblies="" + CompileAsManaged="" + /> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory=".\Release" + IntermediateDirectory=".\Release" + ConfigurationType="0" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" + ATLMinimizesCRunTimeLibraryUsage="false" + > + <Tool + Name="VCNMakeTool" + BuildCommandLine="NMAKE /f makefile_win" + ReBuildCommandLine="NMAKE /f makefile_win /a" + CleanCommandLine="" + Output="iemlib1.exe" + PreprocessorDefinitions="" + IncludeSearchPath="" + ForcedIncludes="" + AssemblySearchPath="" + ForcedUsingAssemblies="" + CompileAsManaged="" + /> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <File + RelativePath="iemlib1.bsc" + > + </File> + <File + RelativePath="makefile_win" + > + </File> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/externals/iemlib/iemlib1/src/lp1_t~.c b/externals/iemlib/iemlib1/src/lp1_t~.c index 96e4a4ecbbb9d5e9ce1b4951e2e49fd3354f49fa..1444e21a5f58f55163c9ea19b8175ca661481a12 100644 --- a/externals/iemlib/iemlib1/src/lp1_t~.c +++ b/externals/iemlib/iemlib1/src/lp1_t~.c @@ -1,13 +1,14 @@ /* For information on usage and redistribution, and for a DISCLAIMER OF ALL * WARRANTIES, see the file, "LICENSE.txt," in this distribution. -iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2010 */ +iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2011 */ #include "m_pd.h" #include "iemlib.h" #include <math.h> -/* -- lp1_t~ - slow dynamic lowpass-filter 1. order with tau input --- */ +/* -- lp1_t~ - slow dynamic lowpass-filter 1. order controlled by time constant tau input --- */ +/* -- now with double precision; for low-frequency filters it is important to calculate the filter in double precision -- */ typedef struct _lp1_t_tilde { @@ -24,7 +25,7 @@ typedef struct _lp1_t_tilde t_float interpol_time; int ticks; int counter_t; - t_float x_msi; + t_float x_float_sig_in; } t_lp1_t_tilde; static t_class *lp1_t_tilde_class; @@ -53,8 +54,8 @@ static void lp1_t_tilde_dsp_tick(t_lp1_t_tilde *x) static t_int *lp1_t_tilde_perform(t_int *w) { - t_float *in = (t_float *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); t_lp1_t_tilde *x = (t_lp1_t_tilde *)(w[3]); int i, n = (t_int)(w[4]); double yn0, yn1=x->yn1; @@ -64,7 +65,7 @@ static t_int *lp1_t_tilde_perform(t_int *w) for(i=0; i<n; i++) { yn0 = (double)(*in++)*c0 + yn1*c1; - *out++ = (t_float)yn0; + *out++ = (t_sample)yn0; yn1 = yn0; } /* NAN protect */ @@ -76,8 +77,8 @@ static t_int *lp1_t_tilde_perform(t_int *w) static t_int *lp1_t_tilde_perf8(t_int *w) { - t_float *in = (t_float *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); t_lp1_t_tilde *x = (t_lp1_t_tilde *)(w[3]); int i, n = (t_int)(w[4]); double ynn[9]; @@ -88,21 +89,21 @@ static t_int *lp1_t_tilde_perf8(t_int *w) for(i=0; i<n; i+=8, in+=8, out+=8) { ynn[1] = (double)in[0]*c0 + ynn[0]*c1; - out[0] = (t_float)ynn[1]; + out[0] = (t_sample)ynn[1]; ynn[2] = (double)in[1]*c0 + ynn[1]*c1; - out[1] = (t_float)ynn[2]; + out[1] = (t_sample)ynn[2]; ynn[3] = (double)in[2]*c0 + ynn[2]*c1; - out[2] = (t_float)ynn[3]; + out[2] = (t_sample)ynn[3]; ynn[4] = (double)in[3]*c0 + ynn[3]*c1; - out[3] = (t_float)ynn[4]; + out[3] = (t_sample)ynn[4]; ynn[5] = (double)in[4]*c0 + ynn[4]*c1; - out[4] = (t_float)ynn[5]; + out[4] = (t_sample)ynn[5]; ynn[6] = (double)in[5]*c0 + ynn[5]*c1; - out[5] = (t_float)ynn[6]; + out[5] = (t_sample)ynn[6]; ynn[7] = (double)in[6]*c0 + ynn[6]*c1; - out[6] = (t_float)ynn[7]; + out[6] = (t_sample)ynn[7]; ynn[8] = (double)in[7]*c0 + ynn[7]*c1; - out[7] = (t_float)ynn[8]; + out[7] = (t_sample)ynn[8]; ynn[0] = ynn[8]; } /* NAN protect */ @@ -121,15 +122,15 @@ static void lp1_t_tilde_ft2(t_lp1_t_tilde *x, t_floatarg interpol) if(i <= 0) i = 1; x->ticks = i; - x->rcp_ticks = 1.0f / (t_float)i; + x->rcp_ticks = 1.0 / (t_float)i; } static void lp1_t_tilde_ft1(t_lp1_t_tilde *x, t_floatarg f_time_const) { double d_time_const; - if(f_time_const < 0.0f) - f_time_const = 0.0f; + if(f_time_const < 0.0) + f_time_const = 0.0; d_time_const = (double)f_time_const; if(d_time_const != x->cur_t) { @@ -139,17 +140,22 @@ static void lp1_t_tilde_ft1(t_lp1_t_tilde *x, t_floatarg f_time_const) } } +static void lp1_t_tilde_set(t_lp1_t_tilde *x, t_floatarg w1) +{ + x->yn1 = (double)w1; +} + static void lp1_t_tilde_dsp(t_lp1_t_tilde *x, t_signal **sp) { int i, n=(int)sp[0]->s_n; x->sr = -1000.0 / (double)(sp[0]->s_sr); - x->ticks_per_interpol_time = 0.001f * (t_float)(sp[0]->s_sr) / (t_float)n; + x->ticks_per_interpol_time = 0.001 * (t_float)(sp[0]->s_sr) / (t_float)n; i = (int)((x->ticks_per_interpol_time)*(x->interpol_time)); if(i <= 0) i = 1; x->ticks = i; - x->rcp_ticks = 1.0f / (t_float)i; + x->rcp_ticks = 1.0 / (t_float)i; if(x->cur_t == 0.0) x->c1 = 0.0; else @@ -165,16 +171,16 @@ static void *lp1_t_tilde_new(t_symbol *s, int argc, t_atom *argv) { t_lp1_t_tilde *x = (t_lp1_t_tilde *)pd_new(lp1_t_tilde_class); int i; - t_float interpol=0.0f; + t_float interpol=0.0; double time_const=0.0; inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft1")); inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft2")); outlet_new(&x->x_obj, &s_signal); - x->x_msi = 0; + x->x_float_sig_in = 0.0; x->counter_t = 1; x->delta_t = 0.0; - x->interpol_time = 0.0f; + x->interpol_time = 0.0; x->yn1 = 0.0; x->sr = -1.0 / 44.1; if((argc >= 1)&&IS_A_FLOAT(argv,0)) @@ -189,15 +195,15 @@ static void *lp1_t_tilde_new(t_symbol *s, int argc, t_atom *argv) else x->c1 = exp((x->sr)/time_const); x->c0 = 1.0 - x->c1; - if(interpol < 0.0f) - interpol = 0.0f; + if(interpol < 0.0) + interpol = 0.0; x->interpol_time = interpol; - x->ticks_per_interpol_time = 0.5f; + x->ticks_per_interpol_time = 0.5; i = (int)((x->ticks_per_interpol_time)*(x->interpol_time)); if(i <= 0) i = 1; x->ticks = i; - x->rcp_ticks = 1.0f / (t_float)i; + x->rcp_ticks = 1.0 / (t_float)i; x->end_t = x->cur_t; return (x); } @@ -206,8 +212,9 @@ void lp1_t_tilde_setup(void) { lp1_t_tilde_class = class_new(gensym("lp1_t~"), (t_newmethod)lp1_t_tilde_new, 0, sizeof(t_lp1_t_tilde), 0, A_GIMME, 0); - CLASS_MAINSIGNALIN(lp1_t_tilde_class, t_lp1_t_tilde, x_msi); + CLASS_MAINSIGNALIN(lp1_t_tilde_class, t_lp1_t_tilde, x_float_sig_in); class_addmethod(lp1_t_tilde_class, (t_method)lp1_t_tilde_dsp, gensym("dsp"), 0); class_addmethod(lp1_t_tilde_class, (t_method)lp1_t_tilde_ft1, gensym("ft1"), A_FLOAT, 0); class_addmethod(lp1_t_tilde_class, (t_method)lp1_t_tilde_ft2, gensym("ft2"), A_FLOAT, 0); + class_addmethod(lp1_t_tilde_class, (t_method)lp1_t_tilde_set, gensym("set"), A_FLOAT, 0); } diff --git a/externals/iemlib/iemlib1/src/makefile b/externals/iemlib/iemlib1/src/makefile index f1fa0e469517bd8d89e97dc0be1bfe7319979db5..3e23fcfa48c605b3a55e0382b40c212e89b455d9 100644 --- a/externals/iemlib/iemlib1/src/makefile +++ b/externals/iemlib/iemlib1/src/makefile @@ -1,4 +1,34 @@ TARGET = iemlib1 + +SRC = biquad_freq_resp.c \ + db2v.c \ + f2note.c \ + filter~.c \ + FIR~.c \ + for++.c \ + gate.c \ + hml_shelf~.c \ + iem_cot4~.c \ + iem_delay~.c \ + iem_pow4~.c \ + iem_sqrt4~.c \ + lp1_t~.c \ + mov_avrg_kern~.c \ + para_bp2~.c \ + peakenv~.c \ + peakenv_hold~.c \ + prvu~.c \ + pvu~.c \ + rvu~.c \ + sin_freq~.c \ + sin_phase~.c \ + sparse_FIR~.c \ + soundfile_info.c \ + split.c \ + v2db.c \ + vcf_filter~.c \ + $(TARGET).c + include ../../Make.include diff --git a/externals/iemlib/iemlib1/src/makefile_d_fat b/externals/iemlib/iemlib1/src/makefile_d_fat index b0c6b9a344e4922668039ca6f0cd6a50ea624e28..d8ac5f8e15ce757954f8ea0344e2f28155c78cb3 100644 --- a/externals/iemlib/iemlib1/src/makefile_d_fat +++ b/externals/iemlib/iemlib1/src/makefile_d_fat @@ -1,19 +1,25 @@ -current: all - +current: all + .SUFFIXES: .d_fat -PD_INSTALL_PATH ?= "/Applications/Pd.app/Contents/Resources" - -INCLUDE = -I. -I$(PD_INSTALL_PATH)/src - -CFLAGS =-DPD -O2 -Wall -W -Wshadow -Wstrict-prototypes \ - -Wno-unused -Wno-parentheses -Wno-switch - -LFLAGS = -bundle -undefined suppress -flat_namespace - -# the sources - -SRC = biquad_freq_resp.c \ +PDSOURCE = "/Applications/Pd.app/Contents/Resources/src" + +IEMLIB_INCLUDE = ../../include + +PD_INCLUDES = -I. -I$(IEMLIB_INCLUDE) -I$(PDSOURCE) + +PD_DEFINES = -DPD + +CFLAGS =-O2 -Wall -W -Wshadow -Wstrict-prototypes \ + -Wno-unused -Wno-parentheses -Wno-switch -fPIC + +LFLAGS = -bundle -undefined suppress -flat_namespace + +ARCH_FLAGS=-arch i386 -arch ppc + +# the sources + +SRC = biquad_freq_resp.c \ db2v.c \ f2note.c \ filter~.c \ @@ -33,8 +39,9 @@ SRC = biquad_freq_resp.c \ prvu~.c \ pvu~.c \ rvu~.c \ + sin_freq~.c \ sin_phase~.c \ - sparse_FIR~ \ + sparse_FIR~.c \ soundfile_info.c \ split.c \ v2db.c \ @@ -44,26 +51,23 @@ SRC = biquad_freq_resp.c \ TARGET = iemlib1.d_fat -OBJ = $(SRC:.c=.o) - -# -# ------------------ targets ------------------------------------ -# - -clean: - rm ../$(TARGET) - rm *.o - -all: $(OBJ) - @echo :: $(OBJ) - $(CC) -arch i386 -arch ppc $(LFLAGS) -o $(TARGET) *.o - strip -S -x $(TARGET) - mv $(TARGET) .. - -$(OBJ) : %.o : %.c - touch $*.c - $(CC) -arch i386 -arch ppc $(CFLAGS) $(INCLUDE) -c -o $*.o $*.c +OBJ = $(SRC:.c=.o) + +# +# ------------------ targets ------------------------------------ +# + +clean: + rm -f ../$(TARGET) + rm -f *.o +all: $(OBJ) + @echo :: $(OBJ) + $(CC) $(ARCH_FLAGS) $(LFLAGS) -o $(TARGET) *.o + strip -S -x $(TARGET) + mv $(TARGET) .. +$(OBJ) : %.o : %.c + $(CC) $(ARCH_FLAGS) $(PD_DEFINES) $(CFLAGS) $(PD_INCLUDES) -c -o $*.o $*.c diff --git a/externals/iemlib/iemlib1/src/makefile_d_ppc b/externals/iemlib/iemlib1/src/makefile_d_ppc index a90c68b2bfc11918d563e5513cdcc1cc8d0a3d81..1b5c6914adb7f864019e111016b0bca37076d93f 100644 --- a/externals/iemlib/iemlib1/src/makefile_d_ppc +++ b/externals/iemlib/iemlib1/src/makefile_d_ppc @@ -1,17 +1,17 @@ -current: all - +current: all + .SUFFIXES: .d_ppc -PD_INSTALL_PATH = "/Applications/Pd.app/Contents/Resources" - -INCLUDE = -I. -I$(PD_INSTALL_PATH)/src - +PD_INSTALL_PATH = "/Applications/Pd.app/Contents/Resources" + +INCLUDE = -I. -I$(PD_INSTALL_PATH)/src + CFLAGS =-DPD -O2 -Wall -W -Wshadow -Wstrict-prototypes \ - -Wno-unused -Wno-parentheses -Wno-switch - -LFLAGS = -bundle -undefined suppress -flat_namespace - -# the sources + -Wno-unused -Wno-parentheses -Wno-switch + +LFLAGS = -bundle -undefined suppress -flat_namespace + +# the sources SRC = biquad_freq_resp.c \ db2v.c \ @@ -43,24 +43,24 @@ SRC = biquad_freq_resp.c \ TARGET = iemlib1.d_ppc -OBJ = $(SRC:.c=.o) - -# -# ------------------ targets ------------------------------------ -# - -clean: - rm ../$(TARGET) - rm *.o - -all: $(OBJ) - @echo :: $(OBJ) +OBJ = $(SRC:.c=.o) + +# +# ------------------ targets ------------------------------------ +# + +clean: + rm ../$(TARGET) + rm *.o + +all: $(OBJ) + @echo :: $(OBJ) $(CC) $(LFLAGS) -o $(TARGET) *.o - strip -S -x $(TARGET) - mv $(TARGET) .. - -$(OBJ) : %.o : %.c - touch $*.c + strip -S -x $(TARGET) + mv $(TARGET) .. + +$(OBJ) : %.o : %.c + touch $*.c $(CC) $(CFLAGS) $(INCLUDE) -c -o $*.o $*.c diff --git a/externals/iemlib/iemlib1/src/makefile_darwin b/externals/iemlib/iemlib1/src/makefile_darwin index 11e7d68cc167d3c57070afc00307c1c79253187a..1d0869ed7dfb7b0e5cf5c1fc9b06b686de352ad0 100644 --- a/externals/iemlib/iemlib1/src/makefile_darwin +++ b/externals/iemlib/iemlib1/src/makefile_darwin @@ -1,22 +1,22 @@ -current: all - +current: all + .SUFFIXES: .pd_darwin -PD_INSTALL_PATH = "/Applications/Pd.app/Contents/Resources" - -INCLUDE = -I. -I$(PD_INSTALL_PATH)/src - -LIB = -ldl -lm -lpthread - -CFLAGS = -DPD -DUNIX -g -Wall -W -Werror -Wno-unused \ - -Wno-parentheses -Wno-switch -O2 -fno-strict-aliasing \ - $(INCLUDE) $(UCFLAGS) $(AFLAGS) \ - -MACOSXLINKFLAGS = -bundle -bundle_loader $(PD_INSTALL_PATH)/bin/pd - -SYSTEM = $(shell uname -m) - -# the sources +PD_INSTALL_PATH = "/Applications/Pd.app/Contents/Resources" + +INCLUDE = -I. -I$(PD_INSTALL_PATH)/src + +LIB = -ldl -lm -lpthread + +CFLAGS = -DPD -DUNIX -g -Wall -W -Werror -Wno-unused \ + -Wno-parentheses -Wno-switch -O2 -fno-strict-aliasing \ + $(INCLUDE) $(UCFLAGS) $(AFLAGS) \ + +MACOSXLINKFLAGS = -bundle -bundle_loader $(PD_INSTALL_PATH)/bin/pd + +SYSTEM = $(shell uname -m) + +# the sources SRC = biquad_freq_resp.c \ db2v.c \ @@ -48,24 +48,24 @@ SRC = biquad_freq_resp.c \ TARGET = iemlib1.pd_darwin -OBJ = $(SRC:.c=.o) - -# -# ------------------ targets ------------------------------------ -# - -clean: - rm ../$(TARGET) - rm *.o - -all: $(OBJ) - @echo :: $(OBJ) +OBJ = $(SRC:.c=.o) + +# +# ------------------ targets ------------------------------------ +# + +clean: + rm ../$(TARGET) + rm *.o + +all: $(OBJ) + @echo :: $(OBJ) $(CC) $(MACOSXLINKFLAGS) -o $(TARGET) *.o $(LIB) - strip -S -x $(TARGET) - mv $(TARGET) .. - -$(OBJ) : %.o : %.c - touch $*.c + strip -S -x $(TARGET) + mv $(TARGET) .. + +$(OBJ) : %.o : %.c + touch $*.c $(CC) $(CFLAGS) -DPD $(INCLUDE) -c -o $*.o $*.c diff --git a/externals/iemlib/iemlib1/src/makefile_linux b/externals/iemlib/iemlib1/src/makefile_linux deleted file mode 100644 index 6eb4543fe4d845e58fcdb2ba502693ba93c0a6c6..0000000000000000000000000000000000000000 --- a/externals/iemlib/iemlib1/src/makefile_linux +++ /dev/null @@ -1,72 +0,0 @@ -current: all - -.SUFFIXES: .pd_linux - -INCLUDE = -I. -I/usr/local/src/pd/src - -LDFLAGS = -export-dynamic -shared -LIB = -ldl -lm -lpthread - -#select either the DBG and OPT compiler flags below: - -CFLAGS = -DPD -DUNIX -W -Werror -Wno-unused \ - -Wno-parentheses -Wno-switch -O2 -funroll-loops -fomit-frame-pointer -fno-strict-aliasing \ - -DDL_OPEN -fPIC - -SYSTEM = $(shell uname -m) - -# the sources - -SRC = biquad_freq_resp.c \ - db2v.c \ - f2note.c \ - filter~.c \ - FIR~.c \ - for++.c \ - gate.c \ - hml_shelf~.c \ - iem_cot4~.c \ - iem_delay~.c \ - iem_pow4~.c \ - iem_sqrt4~.c \ - lp1_t~.c \ - mov_avrg_kern~.c \ - para_bp2~.c \ - peakenv~.c \ - peakenv_hold~.c \ - prvu~.c \ - pvu~.c \ - rvu~.c \ - sin_phase~.c \ - sparse_FIR~ \ - soundfile_info.c \ - split.c \ - v2db.c \ - vcf_filter~.c \ - iemlib1.c - -TARGET = iemlib1.pd_linux - - -OBJ = $(SRC:.c=.o) - -# -# ------------------ targets ------------------------------------ -# - -clean: - rm ../$(TARGET) - rm *.o - -all: $(OBJ) - @echo :: $(OBJ) - $(LD) $(LDFLAGS) -o $(TARGET) *.o $(LIB) - strip --strip-unneeded $(TARGET) - mv $(TARGET) .. - -$(OBJ) : %.o : %.c - $(CC) $(CFLAGS) $(INCLUDE) -c -o $*.o $*.c - - - - diff --git a/externals/iemlib/iemlib1/src/makefile_win b/externals/iemlib/iemlib1/src/makefile_win index 161bf97aaf922ae8932cfb3734e3a42a584ca414..c611e8e93efed002148271b19870248f6e9b4fb9 100644 --- a/externals/iemlib/iemlib1/src/makefile_win +++ b/externals/iemlib/iemlib1/src/makefile_win @@ -2,19 +2,17 @@ TARGET = iemlib1 all: ..\$(TARGET).dll -VIS_CPP_PATH = "C:\Programme\Microsoft Visual Studio\Vc98" -PD_INST_PATH = "C:\Programme\pd" +VIS_CPP_PATH = "$(PROGRAMFILES)\Microsoft Visual Studio 9.0\VC" +VIS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDKs\Windows\v6.0A" +PD_INST_PATH = "$(PROGRAMFILES)\pd" PD_WIN_INCLUDE_PATH = /I. /I$(PD_INST_PATH)\src /I$(VIS_CPP_PATH)\include -PD_WIN_C_FLAGS = /nologo /W3 /WX /DMSW /DNT /DPD /DWIN32 /DWINDOWS /Ox -DPA_LITTLE_ENDIAN +PD_WIN_C_FLAGS = /nologo /W3 /WX /DMSW /DNT /DPD /DWIN32 /DWINDOWS /DHAVE_G_CANVAS_H /Ox -D_CRT_SECURE_NO_WARNINGS PD_WIN_L_FLAGS = /nologo -PD_WIN_LIB = /NODEFAULTLIB:libc /NODEFAULTLIB:oldnames /NODEFAULTLIB:kernel /NODEFAULTLIB:uuid \ - $(VIS_CPP_PATH)\lib\libc.lib \ +PD_WIN_LIB = /NODEFAULTLIB:libcmt /NODEFAULTLIB:oldnames /NODEFAULTLIB:kernel32 \ + $(VIS_CPP_PATH)\lib\libcmt.lib \ $(VIS_CPP_PATH)\lib\oldnames.lib \ - $(VIS_CPP_PATH)\lib\kernel32.lib \ - $(VIS_CPP_PATH)\lib\wsock32.lib \ - $(VIS_CPP_PATH)\lib\winmm.lib \ - $(PD_INST_PATH)\bin\pthreadVC.lib \ + $(VIS_SDK_PATH)\lib\kernel32.lib \ $(PD_INST_PATH)\bin\pd.lib SRC = biquad_freq_resp.c \ @@ -37,8 +35,7 @@ SRC = biquad_freq_resp.c \ prvu~.c \ pvu~.c \ rvu~.c \ - sin_phase~.c \ - sparse_FIR~ \ + sin_phase~.c \ soundfile_info.c \ split.c \ v2db.c \ diff --git a/externals/iemlib/iemlib1/src/mov_avrg_kern~.c b/externals/iemlib/iemlib1/src/mov_avrg_kern~.c index 0b7c160aa3c738138d43d8211ed3e1fcc1e19061..20a6f855edfa4321fa128c4a8903630970028dcf 100644 --- a/externals/iemlib/iemlib1/src/mov_avrg_kern~.c +++ b/externals/iemlib/iemlib1/src/mov_avrg_kern~.c @@ -19,16 +19,16 @@ typedef struct _mov_avrg_kern_tilde double x_mstime; int x_nsamps; int x_counter; - t_float x_msi; + t_float x_float_sig_in; } t_mov_avrg_kern_tilde; static t_class *mov_avrg_kern_tilde_class; static t_int *mov_avrg_kern_tilde_perform(t_int *w) { - t_float *in_direct = (t_float *)(w[1]); - t_float *in_delayed = (t_float *)(w[2]); - t_float *out = (t_float *)(w[3]); + t_sample *in_direct = (t_sample *)(w[1]); + t_sample *in_delayed = (t_sample *)(w[2]); + t_sample *out = (t_sample *)(w[3]); t_mov_avrg_kern_tilde *x = (t_mov_avrg_kern_tilde *)(w[4]); int i, n = (int)(w[5]); double wn0, wn1=x->x_wn1, a0=x->x_a0; @@ -43,7 +43,7 @@ static t_int *mov_avrg_kern_tilde_perform(t_int *w) for(i=0; i<n; i++) { wn0 = wn1 + a0*(double)(*in_direct++); - *out++ = (t_float)wn0; + *out++ = (t_sample)wn0; wn1 = wn0; } } @@ -53,13 +53,13 @@ static t_int *mov_avrg_kern_tilde_perform(t_int *w) for(i=0; i<counter; i++) { wn0 = wn1 + a0*(double)(*in_direct++); - *out++ = (t_float)wn0; + *out++ = (t_sample)wn0; wn1 = wn0; } for(i=counter; i<n; i++) { wn0 = wn1 + a0*(double)(*in_direct++ - *in_delayed++); - *out++ = (t_float)wn0; + *out++ = (t_sample)wn0; wn1 = wn0; } } @@ -69,7 +69,7 @@ static t_int *mov_avrg_kern_tilde_perform(t_int *w) for(i=0; i<n; i++) { wn0 = wn1 + a0*(double)(*in_direct++ - *in_delayed++); - *out++ = (t_float)wn0; + *out++ = (t_sample)wn0; wn1 = wn0; } } @@ -120,7 +120,7 @@ static void *mov_avrg_kern_tilde_new(t_floatarg mstime) inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal); inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft1")); outlet_new(&x->x_obj, &s_signal); - x->x_msi = 0; + x->x_float_sig_in = 0.0; return(x); } @@ -128,7 +128,7 @@ void mov_avrg_kern_tilde_setup(void) { mov_avrg_kern_tilde_class = class_new(gensym("mov_avrg_kern~"), (t_newmethod)mov_avrg_kern_tilde_new, 0, sizeof(t_mov_avrg_kern_tilde), 0, A_FLOAT, 0); - CLASS_MAINSIGNALIN(mov_avrg_kern_tilde_class, t_mov_avrg_kern_tilde, x_msi); + CLASS_MAINSIGNALIN(mov_avrg_kern_tilde_class, t_mov_avrg_kern_tilde, x_float_sig_in); class_addmethod(mov_avrg_kern_tilde_class, (t_method)mov_avrg_kern_tilde_dsp, gensym("dsp"), 0); class_addmethod(mov_avrg_kern_tilde_class, (t_method)mov_avrg_kern_tilde_ft1, gensym("ft1"), A_FLOAT, 0); class_addmethod(mov_avrg_kern_tilde_class, (t_method)mov_avrg_kern_tilde_reset, gensym("reset"), 0); diff --git a/externals/iemlib/iemlib1/src/para_bp2~.c b/externals/iemlib/iemlib1/src/para_bp2~.c index d946c7115781da30180922b15c8e7c1be54667d5..9ee17e8f8e63a44bb995ab7ab2c8d0b06d430851 100644 --- a/externals/iemlib/iemlib1/src/para_bp2~.c +++ b/externals/iemlib/iemlib1/src/para_bp2~.c @@ -1,7 +1,7 @@ /* For information on usage and redistribution, and for a DISCLAIMER OF ALL * WARRANTIES, see the file, "LICENSE.txt," in this distribution. -iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */ +iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2011 */ #include "m_pd.h" #include "iemlib.h" @@ -41,7 +41,7 @@ typedef struct _para_bp2_tilde int event_mask; void *x_debug_outlet; t_atom x_at[5]; - t_float x_msi; + t_float x_float_sig_in; } t_para_bp2_tilde; static t_class *para_bp2_tilde_class; @@ -51,12 +51,12 @@ static void para_bp2_tilde_calc(t_para_bp2_tilde *x) t_float l, al, gal, l2, rcp; l = x->cur_l; - l2 = l*l + 1.0f; + l2 = l*l + 1.0; al = l*x->cur_a; gal = al*x->cur_g; - rcp = 1.0f/(al + l2); + rcp = 1.0/(al + l2); x->a0 = rcp*(l2 + gal); - x->a1 = rcp*2.0f*(2.0f - l2); + x->a1 = rcp*2.0*(2.0 - l2); x->a2 = rcp*(l2 - gal); x->b1 = -x->a1; x->b2 = rcp*(al - l2); @@ -84,10 +84,10 @@ static void para_bp2_tilde_dsp_tick(t_para_bp2_tilde *x) x->cur_f *= x->delta_f; } l = x->cur_f * x->sr; - if(l < 1.0e-20f) - x->cur_l = 1.0e20f; - else if(l > 1.57079632f) - x->cur_l = 0.0f; + if(l < 1.0e-20) + x->cur_l = 1.0e20; + else if(l > 1.57079632) + x->cur_l = 0.0; else { si = sin(l); @@ -128,31 +128,31 @@ static void para_bp2_tilde_dsp_tick(t_para_bp2_tilde *x) /* stability check */ - discriminant = x->b1 * x->b1 + 4.0f * x->b2; - if(x->b1 <= -1.9999996f) - x->b1 = -1.9999996f; - else if(x->b1 >= 1.9999996f) - x->b1 = 1.9999996f; + discriminant = x->b1 * x->b1 + 4.0 * x->b2; + if(x->b1 <= -1.9999996) + x->b1 = -1.9999996; + else if(x->b1 >= 1.9999996) + x->b1 = 1.9999996; - if(x->b2 <= -0.9999998f) - x->b2 = -0.9999998f; - else if(x->b2 >= 0.9999998f) - x->b2 = 0.9999998f; + if(x->b2 <= -0.9999998) + x->b2 = -0.9999998; + else if(x->b2 >= 0.9999998) + x->b2 = 0.9999998; - if(discriminant >= 0.0f) + if(discriminant >= 0.0) { - if(0.9999998f - x->b1 - x->b2 < 0.0f) - x->b2 = 0.9999998f - x->b1; - if(0.9999998f + x->b1 - x->b2 < 0.0f) - x->b2 = 0.9999998f + x->b1; + if(0.9999998 - x->b1 - x->b2 < 0.0) + x->b2 = 0.9999998 - x->b1; + if(0.9999998 + x->b1 - x->b2 < 0.0) + x->b2 = 0.9999998 + x->b1; } } } static t_int *para_bp2_tilde_perform(t_int *w) { - t_float *in = (t_float *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); t_para_bp2_tilde *x = (t_para_bp2_tilde *)(w[3]); int i, n = (t_int)(w[4]); t_float wn0, wn1=x->wn1, wn2=x->wn2; @@ -162,16 +162,16 @@ static t_int *para_bp2_tilde_perform(t_int *w) para_bp2_tilde_dsp_tick(x); for(i=0; i<n; i++) { - wn0 = *in++ + b1*wn1 + b2*wn2; - *out++ = a0*wn0 + a1*wn1 + a2*wn2; + wn0 = (t_float)(*in++) + b1*wn1 + b2*wn2; + *out++ = (t_sample)(a0*wn0 + a1*wn1 + a2*wn2); wn2 = wn1; wn1 = wn0; } /* NAN protect */ if(IEM_DENORMAL(wn2)) - wn2 = 0.0f; + wn2 = 0.0; if(IEM_DENORMAL(wn1)) - wn1 = 0.0f; + wn1 = 0.0; x->wn1 = wn1; x->wn2 = wn2; @@ -190,8 +190,8 @@ y/x = (a0 + a1*z-1 + a2*z-2)/(1 - b1*z-1 - b2*z-2);*/ static t_int *para_bp2_tilde_perf8(t_int *w) { - t_float *in = (t_float *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); t_para_bp2_tilde *x = (t_para_bp2_tilde *)(w[3]); int i, n = (t_int)(w[4]); t_float wn[10]; @@ -203,22 +203,22 @@ static t_int *para_bp2_tilde_perf8(t_int *w) wn[1] = x->wn1; for(i=0; i<n; i+=8, in+=8, out+=8) { - wn[2] = in[0] + b1*wn[1] + b2*wn[0]; - out[0] = a0*wn[2] + a1*wn[1] + a2*wn[0]; - wn[3] = in[1] + b1*wn[2] + b2*wn[1]; - out[1] = a0*wn[3] + a1*wn[2] + a2*wn[1]; - wn[4] = in[2] + b1*wn[3] + b2*wn[2]; - out[2] = a0*wn[4] + a1*wn[3] + a2*wn[2]; - wn[5] = in[3] + b1*wn[4] + b2*wn[3]; - out[3] = a0*wn[5] + a1*wn[4] + a2*wn[3]; - wn[6] = in[4] + b1*wn[5] + b2*wn[4]; - out[4] = a0*wn[6] + a1*wn[5] + a2*wn[4]; - wn[7] = in[5] + b1*wn[6] + b2*wn[5]; - out[5] = a0*wn[7] + a1*wn[6] + a2*wn[5]; - wn[8] = in[6] + b1*wn[7] + b2*wn[6]; - out[6] = a0*wn[8] + a1*wn[7] + a2*wn[6]; - wn[9] = in[7] + b1*wn[8] + b2*wn[7]; - out[7] = a0*wn[9] + a1*wn[8] + a2*wn[7]; + wn[2] = (t_float)in[0] + b1*wn[1] + b2*wn[0]; + out[0] = (t_sample)(a0*wn[2] + a1*wn[1] + a2*wn[0]); + wn[3] = (t_float)in[1] + b1*wn[2] + b2*wn[1]; + out[1] = (t_sample)(a0*wn[3] + a1*wn[2] + a2*wn[1]); + wn[4] = (t_float)in[2] + b1*wn[3] + b2*wn[2]; + out[2] = (t_sample)(a0*wn[4] + a1*wn[3] + a2*wn[2]); + wn[5] = (t_float)in[3] + b1*wn[4] + b2*wn[3]; + out[3] = (t_sample)(a0*wn[5] + a1*wn[4] + a2*wn[3]); + wn[6] = (t_float)in[4] + b1*wn[5] + b2*wn[4]; + out[4] = (t_sample)(a0*wn[6] + a1*wn[5] + a2*wn[4]); + wn[7] = (t_float)in[5] + b1*wn[6] + b2*wn[5]; + out[5] = (t_sample)(a0*wn[7] + a1*wn[6] + a2*wn[5]); + wn[8] = (t_float)in[6] + b1*wn[7] + b2*wn[6]; + out[6] = (t_sample)(a0*wn[8] + a1*wn[7] + a2*wn[6]); + wn[9] = (t_float)in[7] + b1*wn[8] + b2*wn[7]; + out[7] = (t_sample)(a0*wn[9] + a1*wn[8] + a2*wn[7]); wn[0] = wn[8]; wn[1] = wn[9]; } @@ -261,9 +261,9 @@ static void para_bp2_tilde_ft2(t_para_bp2_tilde *x, t_floatarg q) { t_float a; - if(q <= 0.0f) - q = 0.000001f; - a = 1.0f/q; + if(q <= 0.0) + q = 0.000001; + a = 1.0/q; if(a != x->cur_a) { x->end_a = a; @@ -275,8 +275,8 @@ static void para_bp2_tilde_ft2(t_para_bp2_tilde *x, t_floatarg q) static void para_bp2_tilde_ft1(t_para_bp2_tilde *x, t_floatarg f) { - if(f <= 0.0f) - f = 0.000001f; + if(f <= 0.0) + f = 0.000001; if(f != x->cur_f) { x->end_f = f; @@ -286,6 +286,15 @@ static void para_bp2_tilde_ft1(t_para_bp2_tilde *x, t_floatarg f) } } +static void para_bp2_tilde_set(t_para_bp2_tilde *x, t_symbol *s, int argc, t_atom *argv) +{ + if((argc >= 2) && IS_A_FLOAT(argv, 1) && IS_A_FLOAT(argv, 0)) + { + x->wn1 = (t_float)atom_getfloatarg(0, argc, argv); + x->wn2 = (t_float)atom_getfloatarg(1, argc, argv); + } +} + static void para_bp2_tilde_print(t_para_bp2_tilde *x) { // post("fb1 = %g, fb2 = %g, ff1 = %g, ff2 = %g, ff3 = %g", x->b1, x->b2, x->a0, x->a1, x->a2); @@ -302,18 +311,18 @@ static void para_bp2_tilde_dsp(t_para_bp2_tilde *x, t_signal **sp) t_float si, co, f; int i, n=(int)sp[0]->s_n; - x->sr = 3.14159265358979323846f / (t_float)(sp[0]->s_sr); - x->ticks_per_interpol_time = 0.001f * (t_float)(sp[0]->s_sr) / (t_float)n; + x->sr = 3.14159265358979323846 / (t_float)(sp[0]->s_sr); + x->ticks_per_interpol_time = 0.001 * (t_float)(sp[0]->s_sr) / (t_float)n; i = (int)((x->ticks_per_interpol_time)*(x->interpol_time)); if(i <= 0) i = 1; x->ticks = i; - x->rcp_ticks = 1.0f / (t_float)i; + x->rcp_ticks = 1.0 / (t_float)i; f = x->cur_f * x->sr; - if(f < 1.0e-20f) - x->cur_l = 1.0e20f; - else if(f > 1.57079632f) - x->cur_l = 0.0f; + if(f < 1.0e-20) + x->cur_l = 1.0e20; + else if(f > 1.57079632) + x->cur_l = 0.0; else { si = sin(f); @@ -330,7 +339,7 @@ static void *para_bp2_tilde_new(t_symbol *s, int argc, t_atom *argv) { t_para_bp2_tilde *x = (t_para_bp2_tilde *)pd_new(para_bp2_tilde_class); int i; - t_float si, co, f=0.0f, q=1.0f, l=0.0f, interpol=0.0f; + t_float si, co, f=0.0, q=1.0, l=0.0, interpol=0.0; inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft1")); inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft2")); @@ -338,7 +347,7 @@ static void *para_bp2_tilde_new(t_symbol *s, int argc, t_atom *argv) inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft4")); outlet_new(&x->x_obj, &s_signal); x->x_debug_outlet = outlet_new(&x->x_obj, &s_list); - x->x_msi = 0; + x->x_float_sig_in = 0.0; x->x_at[0].a_type = A_FLOAT; x->x_at[1].a_type = A_FLOAT; @@ -350,19 +359,19 @@ static void *para_bp2_tilde_new(t_symbol *s, int argc, t_atom *argv) x->counter_f = 1; x->counter_a = 0; x->counter_g = 0; - x->delta_f = 0.0f; - x->delta_a = 0.0f; - x->delta_g = 0.0f; - x->interpol_time = 500.0f; - x->wn1 = 0.0f; - x->wn2 = 0.0f; - x->a0 = 0.0f; - x->a1 = 0.0f; - x->a2 = 0.0f; - x->b1 = 0.0f; - x->b2 = 0.0f; - x->sr = 3.14159265358979323846f / 44100.0f; - x->cur_a = 1.0f; + x->delta_f = 0.0; + x->delta_a = 0.0; + x->delta_g = 0.0; + x->interpol_time = 500.0; + x->wn1 = 0.0; + x->wn2 = 0.0; + x->a0 = 0.0; + x->a1 = 0.0; + x->a2 = 0.0; + x->b1 = 0.0; + x->b2 = 0.0; + x->sr = 3.14159265358979323846 / 44100.0; + x->cur_a = 1.0; if((argc == 4)&&IS_A_FLOAT(argv,3)&&IS_A_FLOAT(argv,2)&&IS_A_FLOAT(argv,1)&&IS_A_FLOAT(argv,0)) { f = (t_float)atom_getfloatarg(0, argc, argv); @@ -370,33 +379,33 @@ static void *para_bp2_tilde_new(t_symbol *s, int argc, t_atom *argv) l = (t_float)atom_getfloatarg(2, argc, argv); interpol = (t_float)atom_getfloatarg(3, argc, argv); } - if(f <= 0.0f) - f = 0.000001f; + if(f <= 0.0) + f = 0.000001; x->cur_f = f; f *= x->sr; - if(f < 1.0e-20f) - x->cur_l = 1.0e20f; - else if(f > 1.57079632f) - x->cur_l = 0.0f; + if(f < 1.0e-20) + x->cur_l = 1.0e20; + else if(f > 1.57079632) + x->cur_l = 0.0; else { si = sin(f); co = cos(f); x->cur_l = co/si; } - if(q <= 0.0f) - q = 0.000001f; - x->cur_a = 1.0f/q; + if(q <= 0.0) + q = 0.000001; + x->cur_a = 1.0/q; x->cur_g = exp(0.11512925465 * l); - if(interpol <= 0.0f) - interpol = 0.0f; + if(interpol <= 0.0) + interpol = 0.0; x->interpol_time = interpol; - x->ticks_per_interpol_time = 0.5f; + x->ticks_per_interpol_time = 0.5; i = (int)((x->ticks_per_interpol_time)*(x->interpol_time)); if(i <= 0) i = 1; x->ticks = i; - x->rcp_ticks = 1.0f / (t_float)i; + x->rcp_ticks = 1.0 / (t_float)i; x->end_f = x->cur_f; x->end_a = x->cur_a; x->end_g = x->cur_g; @@ -407,12 +416,12 @@ void para_bp2_tilde_setup(void) { para_bp2_tilde_class = class_new(gensym("para_bp2~"), (t_newmethod)para_bp2_tilde_new, 0, sizeof(t_para_bp2_tilde), 0, A_GIMME, 0); - CLASS_MAINSIGNALIN(para_bp2_tilde_class, t_para_bp2_tilde, x_msi); + CLASS_MAINSIGNALIN(para_bp2_tilde_class, t_para_bp2_tilde, x_float_sig_in); class_addmethod(para_bp2_tilde_class, (t_method)para_bp2_tilde_dsp, gensym("dsp"), 0); class_addmethod(para_bp2_tilde_class, (t_method)para_bp2_tilde_ft1, gensym("ft1"), A_FLOAT, 0); class_addmethod(para_bp2_tilde_class, (t_method)para_bp2_tilde_ft2, gensym("ft2"), A_FLOAT, 0); class_addmethod(para_bp2_tilde_class, (t_method)para_bp2_tilde_ft3, gensym("ft3"), A_FLOAT, 0); class_addmethod(para_bp2_tilde_class, (t_method)para_bp2_tilde_ft4, gensym("ft4"), A_FLOAT, 0); + class_addmethod(para_bp2_tilde_class, (t_method)para_bp2_tilde_set, gensym("set"), A_GIMME, 0); class_addmethod(para_bp2_tilde_class, (t_method)para_bp2_tilde_print, gensym("print"), 0); -// class_sethelpsymbol(para_bp2_tilde_class, gensym("iemhelp/help-para_bp2~")); } diff --git a/externals/iemlib/iemlib1/src/peakenv_hold~.c b/externals/iemlib/iemlib1/src/peakenv_hold~.c index 715bed9a8e4e2d88695c51c8595f50eae68ab118..6b64808e7ca32e24e4a0347119f414183c4f556f 100644 --- a/externals/iemlib/iemlib1/src/peakenv_hold~.c +++ b/externals/iemlib/iemlib1/src/peakenv_hold~.c @@ -9,6 +9,7 @@ iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2010 #include <math.h> /* ---------------- peakenv_hold~ - simple peak-envelope-converter with peak hold time and release time. ----------------- */ +/* -- now with double precision; for low-frequency filters it is important to calculate the filter in double precision -- */ typedef struct _peakenv_hold_tilde { @@ -20,7 +21,7 @@ typedef struct _peakenv_hold_tilde double x_holdtime; t_int x_n_hold; t_int x_counter; - t_float x_msi; + t_float x_float_sig_in; } t_peakenv_hold_tilde; static t_class *peakenv_hold_tilde_class; @@ -34,8 +35,8 @@ static void peakenv_hold_tilde_ft1(t_peakenv_hold_tilde *x, t_float t_hold)/* ho { double dhold; - if(t_hold < 0.0f) - t_hold = 0.0f; + if(t_hold < 0.0) + t_hold = 0.0; x->x_holdtime = (double)t_hold; dhold = x->x_sr*0.001*x->x_holdtime; if(dhold > 2147483647.0) @@ -45,16 +46,16 @@ static void peakenv_hold_tilde_ft1(t_peakenv_hold_tilde *x, t_float t_hold)/* ho static void peakenv_hold_tilde_ft2(t_peakenv_hold_tilde *x, t_float t_rel)/* release-time in ms */ { - if(t_rel < 0.0f) - t_rel = 0.0f; + if(t_rel < 0.0) + t_rel = 0.0; x->x_releasetime = (double)t_rel; x->x_c1 = exp(-1.0/(x->x_sr*0.001*x->x_releasetime)); } static t_int *peakenv_hold_tilde_perform(t_int *w) { - t_float *in = (t_float *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); t_peakenv_hold_tilde *x = (t_peakenv_hold_tilde *)(w[3]); int n = (int)(w[4]); double peak = x->x_old_peak; @@ -75,7 +76,7 @@ static t_int *peakenv_hold_tilde_perform(t_int *w) peak = absolute; counter = x->x_n_hold;// new hold initialisation } - *out++ = (t_float)peak; + *out++ = (t_sample)peak; } /* NAN protect */ //if(IEM_DENORMAL(peak)) @@ -105,7 +106,7 @@ static void *peakenv_hold_tilde_new(t_float t_hold, t_float t_rel) inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft1")); inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft2")); outlet_new(&x->x_obj, &s_signal); - x->x_msi = 0; + x->x_float_sig_in = 0.0; return(x); } @@ -113,7 +114,7 @@ void peakenv_hold_tilde_setup(void) { peakenv_hold_tilde_class = class_new(gensym("peakenv_hold~"), (t_newmethod)peakenv_hold_tilde_new, 0, sizeof(t_peakenv_hold_tilde), 0, A_DEFFLOAT, A_DEFFLOAT, 0); - CLASS_MAINSIGNALIN(peakenv_hold_tilde_class, t_peakenv_hold_tilde, x_msi); + CLASS_MAINSIGNALIN(peakenv_hold_tilde_class, t_peakenv_hold_tilde, x_float_sig_in); class_addmethod(peakenv_hold_tilde_class, (t_method)peakenv_hold_tilde_dsp, gensym("dsp"), 0); class_addmethod(peakenv_hold_tilde_class, (t_method)peakenv_hold_tilde_ft1, gensym("ft1"), A_FLOAT, 0); class_addmethod(peakenv_hold_tilde_class, (t_method)peakenv_hold_tilde_ft2, gensym("ft2"), A_FLOAT, 0); diff --git a/externals/iemlib/iemlib1/src/peakenv~.c b/externals/iemlib/iemlib1/src/peakenv~.c index d9ebeff7db4d43dbb91495e618277b3dbeed2ce6..174624c4147b3b90c38e5cc9a022e21b029dfaaf 100644 --- a/externals/iemlib/iemlib1/src/peakenv~.c +++ b/externals/iemlib/iemlib1/src/peakenv~.c @@ -9,6 +9,7 @@ iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2010 #include <math.h> /* ---------------- peakenv~ - simple peak-envelope-converter. ----------------- */ +/* -- now with double precision; for low-frequency filters it is important to calculate the filter in double precision -- */ typedef struct _peakenv_tilde { @@ -17,7 +18,7 @@ typedef struct _peakenv_tilde double x_old_peak; double x_c1; double x_releasetime; - t_float x_msi; + t_float x_float_sig_in; } t_peakenv_tilde; static t_class *peakenv_tilde_class; @@ -29,16 +30,16 @@ static void peakenv_tilde_reset(t_peakenv_tilde *x) static void peakenv_tilde_ft1(t_peakenv_tilde *x, t_floatarg f)/* release-time in ms */ { - if(f < 0.0f) - f = 0.0f; + if(f < 0.0) + f = 0.0; x->x_releasetime = (double)f; x->x_c1 = exp(-1.0/(x->x_sr*0.001*x->x_releasetime)); } static t_int *peakenv_tilde_perform(t_int *w) { - t_float *in = (t_float *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); t_peakenv_tilde *x = (t_peakenv_tilde *)(w[3]); int n = (int)(w[4]); double peak = x->x_old_peak; @@ -52,7 +53,7 @@ static t_int *peakenv_tilde_perform(t_int *w) peak *= c1; if(absolute > peak) peak = absolute; - *out++ = (t_float)peak; + *out++ = (t_sample)peak; } /* NAN protect */ //if(IEM_DENORMAL(peak)) @@ -72,14 +73,14 @@ static void *peakenv_tilde_new(t_floatarg f) { t_peakenv_tilde *x = (t_peakenv_tilde *)pd_new(peakenv_tilde_class); - if(f <= 0.0f) - f = 0.0f; + if(f <= 0.0) + f = 0.0; x->x_sr = 44100.0; peakenv_tilde_ft1(x, f); x->x_old_peak = 0.0; inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft1")); outlet_new(&x->x_obj, &s_signal); - x->x_msi = 0; + x->x_float_sig_in = 0.0; return(x); } @@ -87,7 +88,7 @@ void peakenv_tilde_setup(void) { peakenv_tilde_class = class_new(gensym("peakenv~"), (t_newmethod)peakenv_tilde_new, 0, sizeof(t_peakenv_tilde), 0, A_DEFFLOAT, 0); - CLASS_MAINSIGNALIN(peakenv_tilde_class, t_peakenv_tilde, x_msi); + CLASS_MAINSIGNALIN(peakenv_tilde_class, t_peakenv_tilde, x_float_sig_in); class_addmethod(peakenv_tilde_class, (t_method)peakenv_tilde_dsp, gensym("dsp"), 0); class_addmethod(peakenv_tilde_class, (t_method)peakenv_tilde_ft1, gensym("ft1"), A_FLOAT, 0); class_addmethod(peakenv_tilde_class, (t_method)peakenv_tilde_reset, gensym("reset"), 0); diff --git a/externals/iemlib/iemlib1/src/prvu~.c b/externals/iemlib/iemlib1/src/prvu~.c index b79a7fedb73c77e43896dff483de8384cadb6cd2..0f2e6a492f9a3bed9530824c2bde3746564dc067 100644 --- a/externals/iemlib/iemlib1/src/prvu~.c +++ b/externals/iemlib/iemlib1/src/prvu~.c @@ -30,7 +30,7 @@ typedef struct _prvu_tilde t_float x_release_time; t_float x_c1; int x_started; - t_float x_msi; + t_float x_float_sig_in; } t_prvu_tilde; static t_class *prvu_tilde_class; @@ -39,16 +39,16 @@ static void prvu_tilde_tick_hold(t_prvu_tilde *x); static void prvu_tilde_reset(t_prvu_tilde *x) { - x->x_at[0].a_w.w_float = -99.9f; - x->x_at[1].a_w.w_float = -99.9f; - x->x_at[2].a_w.w_float = 0.0f; + x->x_at[0].a_w.w_float = -99.9; + x->x_at[1].a_w.w_float = -99.9; + x->x_at[2].a_w.w_float = 0.0; outlet_list(x->x_obj.ob_outlet, &s_list, 3, x->x_at); x->x_overflow_counter = 0; - x->x_cur_peak = 0.0f; - x->x_old_peak = 0.0f; - x->x_hold_peak = 0.0f; - x->x_sum_rms = 0.0f; - x->x_old_rms = 0.0f; + x->x_cur_peak = 0.0; + x->x_old_peak = 0.0; + x->x_hold_peak = 0.0; + x->x_sum_rms = 0.0; + x->x_old_rms = 0.0; x->x_hold = 0; clock_unset(x->x_clock_hold); clock_delay(x->x_clock_metro, x->x_metro_time); @@ -82,25 +82,25 @@ static void prvu_tilde_float(t_prvu_tilde *x, t_floatarg f) static void prvu_tilde_t_release(t_prvu_tilde *x, t_floatarg release_time) { - if(release_time <= 5.0f) - release_time = 5.0f; + if(release_time <= 5.0) + release_time = 5.0; x->x_release_time = release_time; - x->x_c1 = exp(-2.0f*x->x_metro_time/x->x_release_time); + x->x_c1 = exp(-2.0*x->x_metro_time/x->x_release_time); } static void prvu_tilde_t_metro(t_prvu_tilde *x, t_floatarg metro_time) { - if(metro_time <= 5.0f) - metro_time = 5.0f; + if(metro_time <= 5.0) + metro_time = 5.0; x->x_metro_time = metro_time; - x->x_c1 = exp(-2.0f*x->x_metro_time/x->x_release_time); - x->x_rcp = 1.0f/(x->x_sr*(t_float)x->x_metro_time); + x->x_c1 = exp(-2.0*x->x_metro_time/x->x_release_time); + x->x_rcp = 1.0/(x->x_sr*(t_float)x->x_metro_time); } static void prvu_tilde_t_hold(t_prvu_tilde *x, t_floatarg hold_time) { - if(hold_time <= 5.0f) - hold_time = 5.0f; + if(hold_time <= 5.0) + hold_time = 5.0; x->x_hold_time = hold_time; } @@ -111,7 +111,7 @@ static void prvu_tilde_threshold(t_prvu_tilde *x, t_floatarg thresh) static t_int *prvu_tilde_perform(t_int *w) { - t_float *in = (t_float *)(w[1]); + t_sample *in = (t_sample *)(w[1]); t_prvu_tilde *x = (t_prvu_tilde *)(w[2]); int n = (int)(w[3]); t_float peak = x->x_cur_peak, power, sum=x->x_sum_rms; @@ -121,7 +121,7 @@ static t_int *prvu_tilde_perform(t_int *w) { for(i=0; i<n; i++) { - power = in[i]*in[i]; + power = (t_float)(in[i]*in[i]); if(power > peak) peak = power; sum += power; @@ -135,7 +135,7 @@ static t_int *prvu_tilde_perform(t_int *w) static void prvu_tilde_dsp(t_prvu_tilde *x, t_signal **sp) { x->x_sr = 0.001*(t_float)sp[0]->s_sr; - x->x_rcp = 1.0f/(x->x_sr*x->x_metro_time); + x->x_rcp = 1.0/(x->x_sr*x->x_metro_time); dsp_add(prvu_tilde_perform, 3, sp[0]->s_vec, x, sp[0]->s_n); clock_delay(x->x_clock_metro, x->x_metro_time); } @@ -153,7 +153,7 @@ static void prvu_tilde_tick_metro(t_prvu_tilde *x) x->x_old_peak *= c1; /* NAN protect */ if(IEM_DENORMAL(x->x_old_peak)) - x->x_old_peak = 0.0f; + x->x_old_peak = 0.0; if(x->x_cur_peak > x->x_old_peak) x->x_old_peak = x->x_cur_peak; @@ -165,37 +165,37 @@ static void prvu_tilde_tick_metro(t_prvu_tilde *x) } if(!x->x_hold) x->x_hold_peak = x->x_old_peak; - if(x->x_hold_peak <= 0.0000000001f) - dbp = -99.9f; - else if(x->x_hold_peak > 1000000.0f) + if(x->x_hold_peak <= 0.0000000001) + dbp = -99.9; + else if(x->x_hold_peak > 1000000.0) { - dbp = 60.0f; - x->x_hold_peak = 1000000.0f; - x->x_old_peak = 1000000.0f; + dbp = 60.0; + x->x_hold_peak = 1000000.0; + x->x_old_peak = 1000000.0; } else - dbp = 4.3429448195f*log(x->x_hold_peak); - x->x_cur_peak = 0.0f; + dbp = 4.3429448195*log(x->x_hold_peak); + x->x_cur_peak = 0.0; if(dbp >= x->x_threshold_over) x->x_overflow_counter++; x->x_at[1].a_w.w_float = dbp; x->x_at[2].a_w.w_float = (t_float)x->x_overflow_counter; - cur_rms = (1.0f - c1)*x->x_sum_rms*x->x_rcp + c1*x->x_old_rms; + cur_rms = (1.0 - c1)*x->x_sum_rms*x->x_rcp + c1*x->x_old_rms; /* NAN protect */ if(IEM_DENORMAL(cur_rms)) - cur_rms = 0.0f; + cur_rms = 0.0; - if(cur_rms <= 0.0000000001f) - dbr = -99.9f; - else if(cur_rms > 1000000.0f) + if(cur_rms <= 0.0000000001) + dbr = -99.9; + else if(cur_rms > 1000000.0) { - dbr = 60.0f; - x->x_old_rms = 1000000.0f; + dbr = 60.0; + x->x_old_rms = 1000000.0; } else - dbr = 4.3429448195f*log(cur_rms); - x->x_sum_rms = 0.0f; + dbr = 4.3429448195*log(cur_rms); + x->x_sum_rms = 0.0; x->x_old_rms = cur_rms; x->x_at[0].a_w.w_float = dbr; outlet_list(x->x_obj.ob_outlet, &s_list, 3, x->x_at); @@ -216,33 +216,33 @@ static void *prvu_tilde_new(t_floatarg metro_time, t_floatarg hold_time, int i; x = (t_prvu_tilde *)pd_new(prvu_tilde_class); - if(metro_time <= 0.0f) - metro_time = 300.0f; - if(metro_time <= 5.0f) - metro_time = 5.0f; - if(release_time <= 0.0f) - release_time = 300.0f; - if(release_time <= 5.0f) - release_time = 5.0f; - if(hold_time <= 0.0f) - hold_time = 1000.0f; - if(hold_time <= 5.0f) - hold_time = 5.0f; - if(threshold == 0.0f) - threshold = -0.01f; + if(metro_time <= 0.0) + metro_time = 300.0; + if(metro_time <= 5.0) + metro_time = 5.0; + if(release_time <= 0.0) + release_time = 300.0; + if(release_time <= 5.0) + release_time = 5.0; + if(hold_time <= 0.0) + hold_time = 1000.0; + if(hold_time <= 5.0) + hold_time = 5.0; + if(threshold == 0.0) + threshold = -0.01; x->x_metro_time = metro_time; x->x_release_time = release_time; x->x_hold_time = hold_time; x->x_threshold_over = threshold; - x->x_c1 = exp(-2.0f*x->x_metro_time/x->x_release_time); - x->x_cur_peak = 0.0f; - x->x_old_peak = 0.0f; - x->x_hold_peak = 0.0f; + x->x_c1 = exp(-2.0*x->x_metro_time/x->x_release_time); + x->x_cur_peak = 0.0; + x->x_old_peak = 0.0; + x->x_hold_peak = 0.0; x->x_hold = 0; - x->x_sum_rms = 0.0f; - x->x_old_rms = 0.0f; - x->x_sr = 44.1f; - x->x_rcp = 1.0f/(x->x_sr*x->x_metro_time); + x->x_sum_rms = 0.0; + x->x_old_rms = 0.0; + x->x_sr = 44.1; + x->x_rcp = 1.0/(x->x_sr*x->x_metro_time); x->x_overflow_counter = 0; x->x_clock_metro = clock_new(x, (t_method)prvu_tilde_tick_metro); x->x_clock_hold = clock_new(x, (t_method)prvu_tilde_tick_hold); @@ -251,7 +251,7 @@ static void *prvu_tilde_new(t_floatarg metro_time, t_floatarg hold_time, x->x_at[0].a_type = A_FLOAT; x->x_at[1].a_type = A_FLOAT; x->x_at[2].a_type = A_FLOAT; - x->x_msi = 0.0f; + x->x_float_sig_in = 0.0; return(x); } @@ -260,7 +260,7 @@ void prvu_tilde_setup(void) prvu_tilde_class = class_new(gensym("prvu~"), (t_newmethod)prvu_tilde_new, (t_method)prvu_tilde_ff, sizeof(t_prvu_tilde), 0, A_DEFFLOAT, A_DEFFLOAT, A_DEFFLOAT, A_DEFFLOAT, 0); - CLASS_MAINSIGNALIN(prvu_tilde_class, t_prvu_tilde, x_msi); + CLASS_MAINSIGNALIN(prvu_tilde_class, t_prvu_tilde, x_float_sig_in); class_addmethod(prvu_tilde_class, (t_method)prvu_tilde_dsp, gensym("dsp"), 0); class_addfloat(prvu_tilde_class, prvu_tilde_float); class_addmethod(prvu_tilde_class, (t_method)prvu_tilde_reset, gensym("reset"), 0); @@ -270,5 +270,4 @@ void prvu_tilde_setup(void) class_addmethod(prvu_tilde_class, (t_method)prvu_tilde_t_metro, gensym("t_metro"), A_FLOAT, 0); class_addmethod(prvu_tilde_class, (t_method)prvu_tilde_t_hold, gensym("t_hold"), A_FLOAT, 0); class_addmethod(prvu_tilde_class, (t_method)prvu_tilde_threshold, gensym("threshold"), A_FLOAT, 0); -// class_sethelpsymbol(prvu_tilde_class, gensym("iemhelp/help-prvu~")); } diff --git a/externals/iemlib/iemlib1/src/pvu~.c b/externals/iemlib/iemlib1/src/pvu~.c index dc18f4a20ba1c383edc203723595ae11a40613e2..74b496af463ce77589bdddbb761cc142b59f4749 100644 --- a/externals/iemlib/iemlib1/src/pvu~.c +++ b/externals/iemlib/iemlib1/src/pvu~.c @@ -23,7 +23,7 @@ typedef struct _pvu_tilde t_float x_release_time; int x_overflow_counter; int x_started; - t_float x_msi; + t_float x_float_sig_in; } t_pvu_tilde; static t_class *pvu_tilde_class; @@ -31,11 +31,11 @@ static void pvu_tilde_tick(t_pvu_tilde *x); static void pvu_tilde_reset(t_pvu_tilde *x) { - outlet_float(x->x_outlet_over, 0.0f); - outlet_float(x->x_outlet_meter, -199.9f); + outlet_float(x->x_outlet_over, 0.0); + outlet_float(x->x_outlet_meter, -199.9); x->x_overflow_counter = 0; - x->x_cur_peak = 0.0f; - x->x_old_peak = 0.0f; + x->x_cur_peak = 0.0; + x->x_old_peak = 0.0; clock_delay(x->x_clock, x->x_metro_time); } @@ -67,16 +67,16 @@ static void pvu_tilde_float(t_pvu_tilde *x, t_floatarg f) static void pvu_tilde_t_release(t_pvu_tilde *x, t_floatarg release_time) { - if(release_time <= 5.0f) - release_time = 5.0f; + if(release_time <= 5.0) + release_time = 5.0; x->x_release_time = release_time; x->x_c1 = exp(-x->x_metro_time/release_time); } static void pvu_tilde_t_metro(t_pvu_tilde *x, t_floatarg metro_time) { - if(metro_time <= 5.0f) - metro_time = 5.0f; + if(metro_time <= 5.0) + metro_time = 5.0; x->x_metro_time = (int)metro_time; x->x_c1 = exp(-metro_time/x->x_release_time); } @@ -88,7 +88,7 @@ static void pvu_tilde_threshold(t_pvu_tilde *x, t_floatarg thresh) static t_int *pvu_tilde_perform(t_int *w) { - t_float *in = (t_float *)(w[1]); + t_sample *in = (t_sample *)(w[1]); t_pvu_tilde *x = (t_pvu_tilde *)(w[2]); int n = (int)(w[3]); t_float peak = x->x_cur_peak; @@ -99,7 +99,7 @@ static t_int *pvu_tilde_perform(t_int *w) { for(i=0; i<n; i++) { - absolute = fabs(*in++); + absolute = (t_float)fabs(*in++); if(absolute > peak) peak = absolute; } @@ -122,26 +122,26 @@ static void pvu_tilde_tick(t_pvu_tilde *x) x->x_old_peak *= x->x_c1; /* NAN protect */ if(IEM_DENORMAL(x->x_old_peak)) - x->x_old_peak = 0.0f; + x->x_old_peak = 0.0; if(x->x_cur_peak > x->x_old_peak) x->x_old_peak = x->x_cur_peak; - if(x->x_old_peak <= 0.0000000001f) - db = -199.9f; - else if(x->x_old_peak > 1000000.0f) + if(x->x_old_peak <= 0.0000000001) + db = -199.9; + else if(x->x_old_peak > 1000000.0) { - db = 120.0f; - x->x_old_peak = 1000000.0f; + db = 120.0; + x->x_old_peak = 1000000.0; } else - db = 8.6858896381f*log(x->x_old_peak); + db = 8.6858896381*log(x->x_old_peak); if(db >= x->x_threshold_over) { x->x_overflow_counter++; outlet_float(x->x_outlet_over, (t_float)x->x_overflow_counter); } outlet_float(x->x_outlet_meter, db); - x->x_cur_peak = 0.0f; + x->x_cur_peak = 0.0; clock_delay(x->x_clock, x->x_metro_time); } @@ -151,28 +151,28 @@ static void *pvu_tilde_new(t_floatarg metro_time, t_floatarg release_time, t_flo t_float t; x = (t_pvu_tilde *)pd_new(pvu_tilde_class); - if(metro_time <= 0.0f) - metro_time = 300.0f; - if(metro_time <= 5.0f) - metro_time = 5.0f; - if(release_time <= 0.0f) - release_time = 300.0f; - if(release_time <= 5.0f) - release_time = 5.0f; - if(threshold == 0.0f) - threshold = -0.01f; + if(metro_time <= 0.0) + metro_time = 300.0; + if(metro_time <= 5.0) + metro_time = 5.0; + if(release_time <= 0.0) + release_time = 300.0; + if(release_time <= 5.0) + release_time = 5.0; + if(threshold == 0.0) + threshold = -0.01; x->x_threshold_over = threshold; x->x_overflow_counter = 0; x->x_metro_time = metro_time; x->x_release_time = release_time; x->x_c1 = exp(-metro_time/release_time); - x->x_cur_peak = 0.0f; - x->x_old_peak = 0.0f; + x->x_cur_peak = 0.0; + x->x_old_peak = 0.0; x->x_clock = clock_new(x, (t_method)pvu_tilde_tick); x->x_outlet_meter = outlet_new(&x->x_obj, &s_float);/* left */ x->x_outlet_over = outlet_new(&x->x_obj, &s_float); /* right */ x->x_started = 1; - x->x_msi = 0; + x->x_float_sig_in = 0.0; return(x); } @@ -185,7 +185,7 @@ void pvu_tilde_setup(void ) { pvu_tilde_class = class_new(gensym("pvu~"), (t_newmethod)pvu_tilde_new, (t_method)pvu_tilde_ff, sizeof(t_pvu_tilde), 0, A_DEFFLOAT, A_DEFFLOAT, A_DEFFLOAT, 0); - CLASS_MAINSIGNALIN(pvu_tilde_class, t_pvu_tilde, x_msi); + CLASS_MAINSIGNALIN(pvu_tilde_class, t_pvu_tilde, x_float_sig_in); class_addmethod(pvu_tilde_class, (t_method)pvu_tilde_dsp, gensym("dsp"), 0); class_addfloat(pvu_tilde_class, pvu_tilde_float); class_addmethod(pvu_tilde_class, (t_method)pvu_tilde_reset, gensym("reset"), 0); @@ -194,5 +194,4 @@ void pvu_tilde_setup(void ) class_addmethod(pvu_tilde_class, (t_method)pvu_tilde_t_release, gensym("t_release"), A_FLOAT, 0); class_addmethod(pvu_tilde_class, (t_method)pvu_tilde_t_metro, gensym("t_metro"), A_FLOAT, 0); class_addmethod(pvu_tilde_class, (t_method)pvu_tilde_threshold, gensym("threshold"), A_FLOAT, 0); -// class_sethelpsymbol(pvu_tilde_class, gensym("iemhelp/help-pvu~")); } diff --git a/externals/iemlib/iemlib1/src/rvu~.c b/externals/iemlib/iemlib1/src/rvu~.c index f295bfbd8bc27c6893f8c791ef7df8fe889a8e90..e93e420945906783756589b15ab4d0678850c14e 100644 --- a/externals/iemlib/iemlib1/src/rvu~.c +++ b/externals/iemlib/iemlib1/src/rvu~.c @@ -22,7 +22,7 @@ typedef struct _rvu_tilde t_float x_release_time; t_float x_c1; int x_started; - t_float x_msi; + t_float x_float_sig_in; } t_rvu_tilde; static t_class *rvu_tilde_class; @@ -30,9 +30,9 @@ static void rvu_tilde_tick_metro(t_rvu_tilde *x); static void rvu_tilde_reset(t_rvu_tilde *x) { - outlet_float(x->x_obj.ob_outlet, -99.9f); - x->x_sum_rms = 0.0f; - x->x_old_rms = 0.0f; + outlet_float(x->x_obj.ob_outlet, -99.9); + x->x_sum_rms = 0.0; + x->x_old_rms = 0.0; clock_delay(x->x_clock_metro, x->x_metro_time); } @@ -50,7 +50,7 @@ static void rvu_tilde_start(t_rvu_tilde *x) static void rvu_tilde_float(t_rvu_tilde *x, t_floatarg f) { - if(f == 0.0f) + if(f == 0.0) { clock_unset(x->x_clock_metro); x->x_started = 0; @@ -64,24 +64,24 @@ static void rvu_tilde_float(t_rvu_tilde *x, t_floatarg f) static void rvu_tilde_t_release(t_rvu_tilde *x, t_floatarg release_time) { - if(release_time <= 5.0f) - release_time = 5.0f; + if(release_time <= 5.0) + release_time = 5.0; x->x_release_time = release_time; - x->x_c1 = exp(-2.0f*x->x_metro_time/x->x_release_time); + x->x_c1 = exp(-2.0*x->x_metro_time/x->x_release_time); } static void rvu_tilde_t_metro(t_rvu_tilde *x, t_floatarg metro_time) { - if(metro_time <= 5.0f) - metro_time = 5.0f; + if(metro_time <= 5.0) + metro_time = 5.0; x->x_metro_time = metro_time; - x->x_c1 = exp(-2.0f*x->x_metro_time/x->x_release_time); - x->x_rcp = 1.0f/(x->x_sr*x->x_metro_time); + x->x_c1 = exp(-2.0*x->x_metro_time/x->x_release_time); + x->x_rcp = 1.0/(x->x_sr*x->x_metro_time); } static t_int *rvu_tilde_perform(t_int *w) { - t_float *in = (t_float *)(w[1]); + t_sample *in = (t_sample *)(w[1]); t_rvu_tilde *x = (t_rvu_tilde *)(w[2]); int n = (int)(w[3]); t_float sum=x->x_sum_rms; @@ -91,7 +91,7 @@ static t_int *rvu_tilde_perform(t_int *w) { for(i=0; i<n; i++) { - sum += in[i]*in[i]; + sum += (t_float)(in[i]*in[i]); } x->x_sum_rms = sum; } @@ -101,7 +101,7 @@ static t_int *rvu_tilde_perform(t_int *w) static void rvu_tilde_dsp(t_rvu_tilde *x, t_signal **sp) { x->x_sr = 0.001*(t_float)sp[0]->s_sr; - x->x_rcp = 1.0f/(x->x_sr*x->x_metro_time); + x->x_rcp = 1.0/(x->x_sr*x->x_metro_time); dsp_add(rvu_tilde_perform, 3, sp[0]->s_vec, x, sp[0]->s_n); clock_delay(x->x_clock_metro, x->x_metro_time); } @@ -110,21 +110,21 @@ static void rvu_tilde_tick_metro(t_rvu_tilde *x) { t_float dbr, cur_rms, c1=x->x_c1; - cur_rms = (1.0f - c1)*x->x_sum_rms*x->x_rcp + c1*x->x_old_rms; + cur_rms = (1.0 - c1)*x->x_sum_rms*x->x_rcp + c1*x->x_old_rms; /* NAN protect */ if(IEM_DENORMAL(cur_rms)) - cur_rms = 0.0f; + cur_rms = 0.0; - if(cur_rms <= 0.0000000001f) - dbr = -99.9f; - else if(cur_rms > 1000000.0f) + if(cur_rms <= 0.0000000001) + dbr = -99.9; + else if(cur_rms > 1000000.0) { - dbr = 60.0f; - x->x_old_rms = 1000000.0f; + dbr = 60.0; + x->x_old_rms = 1000000.0; } else - dbr = 4.3429448195f*log(cur_rms); - x->x_sum_rms = 0.0f; + dbr = 4.3429448195*log(cur_rms); + x->x_sum_rms = 0.0; x->x_old_rms = cur_rms; outlet_float(x->x_obj.ob_outlet, dbr); clock_delay(x->x_clock_metro, x->x_metro_time); @@ -139,25 +139,25 @@ static void *rvu_tilde_new(t_floatarg metro_time, t_floatarg release_time) { t_rvu_tilde *x=(t_rvu_tilde *)pd_new(rvu_tilde_class); - if(metro_time <= 0.0f) - metro_time = 300.0f; - if(metro_time <= 5.0f) - metro_time = 5.0f; - if(release_time <= 0.0f) - release_time = 300.0f; - if(release_time <= 5.0f) - release_time = 5.0f; + if(metro_time <= 0.0) + metro_time = 300.0; + if(metro_time <= 5.0) + metro_time = 5.0; + if(release_time <= 0.0) + release_time = 300.0; + if(release_time <= 5.0) + release_time = 5.0; x->x_metro_time = metro_time; x->x_release_time = release_time; - x->x_c1 = exp(-2.0f*x->x_metro_time/x->x_release_time); - x->x_sum_rms = 0.0f; - x->x_old_rms = 0.0f; - x->x_sr = 44.1f; - x->x_rcp = 1.0f/(x->x_sr*x->x_metro_time); + x->x_c1 = exp(-2.0*x->x_metro_time/x->x_release_time); + x->x_sum_rms = 0.0; + x->x_old_rms = 0.0; + x->x_sr = 44.1; + x->x_rcp = 1.0/(x->x_sr*x->x_metro_time); x->x_clock_metro = clock_new(x, (t_method)rvu_tilde_tick_metro); x->x_started = 1; outlet_new(&x->x_obj, &s_float); - x->x_msi = 0.0f; + x->x_float_sig_in = 0.0; return(x); } @@ -166,7 +166,7 @@ void rvu_tilde_setup(void) rvu_tilde_class = class_new(gensym("rvu~"), (t_newmethod)rvu_tilde_new, (t_method)rvu_tilde_ff, sizeof(t_rvu_tilde), 0, A_DEFFLOAT, A_DEFFLOAT, 0); - CLASS_MAINSIGNALIN(rvu_tilde_class, t_rvu_tilde, x_msi); + CLASS_MAINSIGNALIN(rvu_tilde_class, t_rvu_tilde, x_float_sig_in); class_addmethod(rvu_tilde_class, (t_method)rvu_tilde_dsp, gensym("dsp"), 0); class_addfloat(rvu_tilde_class, rvu_tilde_float); class_addmethod(rvu_tilde_class, (t_method)rvu_tilde_reset, gensym("reset"), 0); @@ -174,5 +174,4 @@ void rvu_tilde_setup(void) class_addmethod(rvu_tilde_class, (t_method)rvu_tilde_stop, gensym("stop"), 0); class_addmethod(rvu_tilde_class, (t_method)rvu_tilde_t_release, gensym("t_release"), A_FLOAT, 0); class_addmethod(rvu_tilde_class, (t_method)rvu_tilde_t_metro, gensym("t_metro"), A_FLOAT, 0); -// class_sethelpsymbol(rvu_tilde_class, gensym("iemhelp/help-rvu~")); } diff --git a/externals/iemlib/iemlib1/src/sin_freq~.c b/externals/iemlib/iemlib1/src/sin_freq~.c new file mode 100644 index 0000000000000000000000000000000000000000..0744fa51e9c386309cae2c8f7c1fba062d18276a --- /dev/null +++ b/externals/iemlib/iemlib1/src/sin_freq~.c @@ -0,0 +1,102 @@ +/* For information on usage and redistribution, and for a DISCLAIMER OF ALL +* WARRANTIES, see the file, "LICENSE.txt," in this distribution. + +iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2011 */ + +#include "m_pd.h" +#include "iemlib.h" + +/* --- sin_freq~ - output the frequency of a --- */ +/* --- sinewave in Hz ----- */ +/* --- as a signal ----------------------------- */ + +typedef struct _sin_freq_tilde +{ + t_object x_obj; + t_sample x_prev; + t_sample x_cur_out; + t_sample x_counter; + t_sample x_sr; + t_float x_float_sig_in; +} t_sin_freq_tilde; + +static t_class *sin_freq_tilde_class; + +static t_int *sin_freq_tilde_perform(t_int *w) +{ + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); + t_sin_freq_tilde *x = (t_sin_freq_tilde *)(w[3]); + int i, n = (t_int)(w[4]); + t_sample prev=x->x_prev; + t_sample cur_out=x->x_cur_out; + t_sample counter=x->x_counter; + t_sample sr=x->x_sr; + t_sample delta_x=0.0; + + for(i=0; i<n; i++) + { + if((in[i] >= 0.0) && (prev < 0.0)) /* begin of counting, pos. zero cross of sig_in */ + { + delta_x = prev / (prev - in[i]); /* dx = y1 / (y1 - y2) */ + counter += delta_x; + cur_out = sr / counter; + + counter = 1.0 - delta_x; + } + else + { + counter += 1.0; + } + + prev = in[i]; + out[i] = cur_out; + } + + x->x_prev = prev; + x->x_cur_out = cur_out; + x->x_counter = counter; + + return(w+5); +} + +static void sin_freq_tilde_dsp(t_sin_freq_tilde *x, t_signal **sp) +{ + x->x_sr = (t_sample)sp[0]->s_sr; + dsp_add(sin_freq_tilde_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, sp[0]->s_n); +} + +static void *sin_freq_tilde_new(void) +{ + t_sin_freq_tilde *x = (t_sin_freq_tilde *)pd_new(sin_freq_tilde_class); + + outlet_new(&x->x_obj, &s_signal); + + x->x_prev = 0.0; + x->x_cur_out = 0.0; + x->x_counter = 0.0; + x->x_sr = 44100.0; + x->x_float_sig_in = 0.0; + + return (x); +} + +void sin_freq_tilde_setup(void) +{ + sin_freq_tilde_class = class_new(gensym("sin_freq~"), (t_newmethod)sin_freq_tilde_new, + 0, sizeof(t_sin_freq_tilde), 0, 0); + CLASS_MAINSIGNALIN(sin_freq_tilde_class, t_sin_freq_tilde, x_float_sig_in); + class_addmethod(sin_freq_tilde_class, (t_method)sin_freq_tilde_dsp, gensym("dsp"), 0); +} + +/* +geradengleichung: + +y - y1 = ((y2 - y1) / (x2 - x1)) * (x - x1) +y = ((y2 - y1) / (x2 - x1)) * (x - x1) + y1 = 0 +x1 = 0 +x2 = 1 +0 = ((y2 - y1) / 1) * (x) + y1 +-y1 = (y2 - y1) * x +x = y1 / (y1 - y2) +*/ diff --git a/externals/iemlib/iemlib1/src/sin_phase~.c b/externals/iemlib/iemlib1/src/sin_phase~.c index 925be28ed8eccf07e30762c362acabb386f4d0f7..e99f3a723193c6f6ace6ed5d71922213a97a3137 100644 --- a/externals/iemlib/iemlib1/src/sin_phase~.c +++ b/externals/iemlib/iemlib1/src/sin_phase~.c @@ -13,63 +13,63 @@ iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 typedef struct _sin_phase_tilde { t_object x_obj; - t_float x_prev1; - t_float x_prev2; - t_float x_cur_out; - int x_counter1; - int x_counter2; + t_sample x_prev1; + t_sample x_prev2; + t_sample x_cur_out; + t_sample x_counter1; + t_sample x_counter2; int x_state1; int x_state2; - t_float x_msi; + t_float x_float_sig_in; } t_sin_phase_tilde; static t_class *sin_phase_tilde_class; static t_int *sin_phase_tilde_perform(t_int *w) { - t_float *in1 = (t_float *)(w[1]); - t_float *in2 = (t_float *)(w[2]); - t_float *out = (t_float *)(w[3]); + t_sample *in1 = (t_sample *)(w[1]); + t_sample *in2 = (t_sample *)(w[2]); + t_sample *out = (t_sample *)(w[3]); t_sin_phase_tilde *x = (t_sin_phase_tilde *)(w[4]); int i, n = (t_int)(w[5]); - t_float prev1=x->x_prev1; - t_float prev2=x->x_prev2; - t_float cur_out=x->x_cur_out; - int counter1=x->x_counter1; - int counter2=x->x_counter2; + t_sample prev1=x->x_prev1; + t_sample prev2=x->x_prev2; + t_sample cur_out=x->x_cur_out; + t_sample counter1=x->x_counter1; + t_sample counter2=x->x_counter2; int state1=x->x_state1; int state2=x->x_state2; for(i=0; i<n; i++) { - if((in1[i] >= 0.0f) && (prev1 < 0.0f)) + if((in1[i] >= 0.0) && (prev1 < 0.0)) {/* pos. zero cross of sig_in_1 */ state1 = 1; - counter1 = 0; + counter1 = prev1 / (prev1 - in1[i]); /* x = y1 / (y1 - y2) */ } - else if((in1[i] < 0.0f) && (prev1 >= 0.0f)) + else if((in1[i] < 0.0) && (prev1 >= 0.0)) {/* neg. zero cross of sig_in_1 */ state2 = 1; - counter2 = 0; + counter2 = prev1 / (prev1 - in1[i]); /* x = y1 / (y1 - y2) */ } - if((in2[i] >= 0.0f) && (prev2 < 0.0f)) + if((in2[i] >= 0.0) && (prev2 < 0.0)) {/* pos. zero cross of sig_in_2 */ state1 = 0; - cur_out = (t_float)(counter1); - counter1 = 0; + cur_out = counter1 + prev2 / (prev2 - in2[i]) - 1.0; + counter1 = 0.0; } - else if((in2[i] < 0.0f) && (prev2 >= 0.0f)) + else if((in2[i] < 0.0) && (prev2 >= 0.0)) {/* neg. zero cross of sig_in_2 */ state2 = 0; - cur_out = (t_float)(counter2); - counter2 = 0; + cur_out = counter2 + prev2 / (prev2 - in2[i]) - 1.0; + counter2 = 0.0; } if(state1) - counter1++; + counter1 += 1.0; if(state2) - counter2++; + counter2 += 1.0; prev1 = in1[i]; prev2 = in2[i]; @@ -99,14 +99,14 @@ static void *sin_phase_tilde_new(void) inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal); outlet_new(&x->x_obj, &s_signal); - x->x_prev1 = 0.0f; - x->x_prev2 = 0.0f; - x->x_cur_out = 0.0f; - x->x_counter1 = 0; - x->x_counter2 = 0; + x->x_prev1 = 0.0; + x->x_prev2 = 0.0; + x->x_cur_out = 0.0; + x->x_counter1 = 0.0; + x->x_counter2 = 0.0; x->x_state1 = 0; x->x_state2 = 0; - x->x_msi = 0; + x->x_float_sig_in = 0.0; return (x); } @@ -115,7 +115,18 @@ void sin_phase_tilde_setup(void) { sin_phase_tilde_class = class_new(gensym("sin_phase~"), (t_newmethod)sin_phase_tilde_new, 0, sizeof(t_sin_phase_tilde), 0, 0); - CLASS_MAINSIGNALIN(sin_phase_tilde_class, t_sin_phase_tilde, x_msi); + CLASS_MAINSIGNALIN(sin_phase_tilde_class, t_sin_phase_tilde, x_float_sig_in); class_addmethod(sin_phase_tilde_class, (t_method)sin_phase_tilde_dsp, gensym("dsp"), 0); -// class_sethelpsymbol(sin_phase_tilde_class, gensym("iemhelp/help-sin_phase~")); } + +/* +geradengleichung: + +y - y1 = ((y2 - y1) / (x2 - x1)) * (x - x1) +y = ((y2 - y1) / (x2 - x1)) * (x - x1) + y1 = 0 +x1 = 0 +x2 = 1 +0 = ((y2 - y1) / 1) * (x) + y1 +-y1 = (y2 - y1) * x +x = y1 / (y1 - y2) +*/ diff --git a/externals/iemlib/iemlib1/src/soundfile_info.c b/externals/iemlib/iemlib1/src/soundfile_info.c index 654f71a5c075ac71e635ff1a6436b85178d3e377..f018370a69b53879df9fd6347b6509ed754b1e62 100644 --- a/externals/iemlib/iemlib1/src/soundfile_info.c +++ b/externals/iemlib/iemlib1/src/soundfile_info.c @@ -61,6 +61,186 @@ static unsigned long soundfile_info_string_to_uint32(char *cvec) return(ul); } +static void soundfile_info_uint32_to_string(char *cvec, unsigned long ul) +{ + unsigned char *uc=(unsigned char *)cvec; + + *uc = (unsigned char)(0x000000ff & ul); + *(uc+1) = (unsigned char)(0x000000ff & (ul/256)); + *(uc+2) = (unsigned char)(0x000000ff & (ul/65536)); + *(uc+3) = (unsigned char)(0x000000ff & (ul/16777216)); + return; +} + +static void soundfile_info_overwrite_sr(t_soundfile_info *x, t_symbol *filename, t_floatarg new_sr) +{ + char completefilename[400]; + int i, n, n2, n4, filesize, read_chars, header_size=0, ch, bytesperframe, sr, n_frames; + FILE *fh; + t_atom *at; + char *cvec; + unsigned long ul_chunk_size, ul_sr; + short ss_format, ss_ch, ss_bytesperframe; + + if(filename->s_name[0] == '/')/*make complete path + filename*/ + { + strcpy(completefilename, filename->s_name); + } + else if(((filename->s_name[0] >= 'A')&&(filename->s_name[0] <= 'Z')|| + (filename->s_name[0] >= 'a')&&(filename->s_name[0] <= 'z'))&& + (filename->s_name[1] == ':')&&(filename->s_name[2] == '/')) + { + strcpy(completefilename, filename->s_name); + } + else + { + strcpy(completefilename, canvas_getdir(x->x_canvas)->s_name); + strcat(completefilename, "/"); + strcat(completefilename, filename->s_name); + } + + fh = fopen(completefilename,"r+b"); + if(!fh) + { + post("soundfile_info_read: cannot open %s !!\n", completefilename); + } + else + { + n = x->x_mem_size; // 10000 bytes + n2 = sizeof(short) * x->x_mem_size; + n4 = sizeof(long) * x->x_mem_size; + fseek(fh, 0, SEEK_END); + filesize = ftell(fh); + fseek(fh,0,SEEK_SET); + read_chars = (int)fread(x->x_begmem, sizeof(char), n4, fh) / 2; + // post("read chars = %d", read_chars); + cvec = (char *)x->x_begmem; + if(read_chars > 4) + { + if(strncmp(cvec, "RIFF", 4)) + { + post("soundfile_info_read-error: %s is no RIFF-WAVE-file", completefilename); + goto sr_soundfile_info_end; + } + header_size += 8; // jump over RIFF chunk size + cvec += 8; + if(strncmp(cvec, "WAVE", 4)) + { + post("soundfile_info_read-error: %s is no RIFF-WAVE-file", completefilename); + goto sr_soundfile_info_end; + } + header_size += 4; + cvec += 4; + + for(i=header_size/2; i<read_chars; i++) + { + if(!strncmp(cvec, "fmt ", 4)) + { + header_size += 4; + cvec += 4; + goto sr_soundfile_info_fmt; + } + header_size += 2; + cvec += 2; + } + post("soundfile_info_read-error: %s has at begin no format-chunk", completefilename); + goto sr_soundfile_info_end; + + sr_soundfile_info_fmt: + ul_chunk_size = soundfile_info_string_to_uint32(cvec); + if(ul_chunk_size < 16) + { + post("soundfile_info_read-error: %s has a format-chunk less than 16", completefilename); + goto sr_soundfile_info_end; + } + header_size += 4; + cvec += 4; + + ss_format = soundfile_info_string_to_int16(cvec); + if((ss_format != 1) && (ss_format != 3) && (ss_format != 6) && (ss_format != 7) && (ss_format != -2)) /* PCM = 1 ; IEEE-FLOAT = 3 ; ALAW = 6 ; MULAW = 7 ; WAVE_EX = -2 */ + { + post("soundfile_info_read-error: %s has unknown format code", completefilename); + goto sr_soundfile_info_end; + } + header_size += 2; + cvec += 2; + + ss_ch = soundfile_info_string_to_int16(cvec); /* channels */ + if((ss_ch < 1) || (ss_ch > 32000)) + { + post("soundfile_info_read-error: %s has no common channel-number", completefilename); + goto sr_soundfile_info_end; + } + SETFLOAT(x->x_at_header+SFI_HEADER_CHANNELS, (t_float)ss_ch); + ch = (int)ss_ch; + header_size += 2; + cvec += 2; + + ul_sr = soundfile_info_string_to_uint32(cvec); /* samplerate */ + if((ul_sr > 2000000000) || (ul_sr < 1)) + { + post("soundfile_info_read-error: %s has no common samplerate", completefilename); + goto sr_soundfile_info_end; + } + ul_sr = (unsigned long)new_sr; + soundfile_info_uint32_to_string(cvec, ul_sr); + + fseek(fh,0,SEEK_SET); + read_chars = (int)fwrite (x->x_begmem, sizeof(char), n4, fh); + fclose(fh); + post("written"); + + sr = (int)ul_sr; + header_size += 4; + cvec += 4; + + header_size += 4; /* jump over bytes_per_sec */ + cvec += 4; + + ss_bytesperframe = soundfile_info_string_to_int16(cvec); /* bytes_per_frame */ + if((ss_bytesperframe < 1) || (ss_bytesperframe > 32000)) + { + post("soundfile_info_read-error: %s has no common number of bytes per frame", completefilename); + goto sr_soundfile_info_end; + } + + bytesperframe = (int)ss_bytesperframe; + header_size += 2; + cvec += 2; + + header_size += 2; /* jump over bits_per_sample */ + cvec += 2; + + for(i=header_size/2; i<read_chars; i++) // looking for data chunk + { + if(!strncmp(cvec, "data", 4)) + goto sr_soundfile_info_data; + header_size += 2; + cvec += 2; + } + post("soundfile_info_read-error: %s has at begin no data-chunk", completefilename); + goto sr_soundfile_info_end; + + sr_soundfile_info_data: + header_size += 8; // ignore data chunk size + cvec += 8; + + + + /* post("ch = %d", ch); + post("sr = %d", sr); + post("bpf = %d", bytesperframe/ch); + post("head = %d", header_size); + post("len = %d", n_frames);*/ + + + sr_soundfile_info_end: + + ; + } + } +} + static void soundfile_info_read(t_soundfile_info *x, t_symbol *filename) { char completefilename[400]; @@ -255,5 +435,5 @@ void soundfile_info_setup(void) soundfile_info_class = class_new(gensym("soundfile_info"), (t_newmethod)soundfile_info_new, (t_method)soundfile_info_free, sizeof(t_soundfile_info), 0, 0); class_addmethod(soundfile_info_class, (t_method)soundfile_info_read, gensym("read"), A_SYMBOL, 0); -// class_sethelpsymbol(soundfile_info_class, gensym("iemhelp/help-soundfile_info")); + class_addmethod(soundfile_info_class, (t_method)soundfile_info_overwrite_sr, gensym("overwrite_sr"), A_SYMBOL, A_FLOAT, 0); } diff --git a/externals/iemlib/iemlib1/src/sparse_FIR~.c b/externals/iemlib/iemlib1/src/sparse_FIR~.c index 0a1043a28ba5d73023f8e33bcb5dc321378aabcd..879f36774846c8b71194ad8d077c6b77a70b8005 100644 --- a/externals/iemlib/iemlib1/src/sparse_FIR~.c +++ b/externals/iemlib/iemlib1/src/sparse_FIR~.c @@ -14,38 +14,40 @@ iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2010 typedef struct _sparse_FIR_tilde { t_object x_obj; - t_float *x_coef_beg; + t_sample *x_coef_beg; int *x_index_beg; + int x_n_coef_resp_order; int x_n_coef; int x_n_coef_malloc; - t_float *x_history_beg; + t_sample *x_history_beg; + int x_n_order; + int x_n_order_malloc; int x_rw_index; - int x_sparse_FIR_order; - t_float x_msi; + t_float x_float_sig_in; } t_sparse_FIR_tilde; static t_class *sparse_FIR_tilde_class; static t_int *sparse_FIR_tilde_perform(t_int *w) { - t_float *in = (t_float *)(w[1]); - t_float *out = (t_float *)(w[2]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[2]); t_sparse_FIR_tilde *x = (t_sparse_FIR_tilde *)(w[3]); int n = (t_int)(w[4]); int rw_index = x->x_rw_index; int i, j, ix; - int order = x->x_sparse_FIR_order; - int n_coef = x->x_n_coef; + int order = x->x_n_order; + int n_coef = x->x_n_coef_resp_order; int n_coef8; - t_float sum=0.0f; - t_float *coef = x->x_coef_beg; + t_sample sum=0.0; + t_sample *coef = x->x_coef_beg; int *index = x->x_index_beg; - t_float *write_hist1=x->x_history_beg; - t_float *write_hist2; - t_float *read_hist; - t_float *coef_vec; + t_sample *write_hist1=x->x_history_beg; + t_sample *write_hist2; + t_sample *read_hist; + t_sample *coef_vec; int *index_vec; - t_float *hist_vec; + t_sample *hist_vec; if((order < 1) || (n_coef < 1)) goto sparse_FIR_tilde_perf_zero; @@ -59,7 +61,7 @@ static t_int *sparse_FIR_tilde_perform(t_int *w) { write_hist1[rw_index] = in[i]; write_hist2[rw_index] = in[i]; - sum = 0.0f; + sum = 0.0; coef_vec = coef; index_vec = index; hist_vec = &read_hist[rw_index]; @@ -101,31 +103,72 @@ static t_int *sparse_FIR_tilde_perform(t_int *w) sparse_FIR_tilde_perf_zero: while(n--) - *out++ = 0.0f; + *out++ = 0.0; return(w+5); } +static void sparse_FIR_tilde_sort_within(t_sparse_FIR_tilde *x) +{ + int cur_order = x->x_n_order; + int n_coef = x->x_n_coef; + int index, i; + int n_coef_resp_order = 0; + int *index_pointer_within = x->x_index_beg; + t_float *coef_pointer_within = x->x_coef_beg; + int *index_pointer = x->x_index_beg + x->x_n_coef_malloc; + t_float *coef_pointer = x->x_coef_beg + x->x_n_coef_malloc; + t_float coef; + + for(i=0; i<n_coef; i++) + { + index = index_pointer[i]; + coef = coef_pointer[i]; + if((index >= 0) && (index < cur_order)) + { + index_pointer_within[i] = -index; /* negate index for FIR direction */ + coef_pointer_within[i] = coef; + n_coef_resp_order++; + } + } + x->x_n_coef_resp_order = n_coef_resp_order; +} + static void sparse_FIR_tilde_list(t_sparse_FIR_tilde *x, t_symbol *s, int argc, t_atom *argv) { - int order = x->x_sparse_FIR_order; - int n_arg2 = argc/2, index, i; + int max_order = x->x_n_order_malloc; + int n_pair_arg = argc/2, index, i; int n_coef = 0; - int *index_pointer = x->x_index_beg; - t_float *coef_pointer = x->x_coef_beg; + int *index_pointer; + t_float *coef_pointer; t_float coef; - for(i=0; i<n_arg2; i++) + if(n_pair_arg > 0) { - index = (int)atom_getfloat(argv++); - coef = (t_float)atom_getfloat(argv++); - if((index >= 0) && (index < order)) + if(n_pair_arg > x->x_n_coef_malloc) /* resize */ { - *index_pointer++ = -index; - *coef_pointer++ = coef; - n_coef++; + x->x_index_beg = (int *)resizebytes(x->x_index_beg, 2*x->x_n_coef_malloc*sizeof(int), 2*n_pair_arg*sizeof(int)); + x->x_coef_beg = (t_float *)resizebytes(x->x_coef_beg, 2*x->x_n_coef_malloc*sizeof(t_float), 2*n_pair_arg*sizeof(t_float)); + x->x_n_coef_malloc = n_pair_arg; } + + index_pointer = x->x_index_beg + x->x_n_coef_malloc; + coef_pointer = x->x_coef_beg + x->x_n_coef_malloc; + + for(i=0; i<n_pair_arg; i++) + { + index = (int)atom_getfloat(argv++); + coef = (t_float)atom_getfloat(argv++); + if((index >= 0) && (index < max_order)) + { + *index_pointer++ = index; + *coef_pointer++ = coef; + n_coef++; + } + } + x->x_n_coef = n_coef; + + sparse_FIR_tilde_sort_within(x); } - x->x_n_coef = n_coef; } static void sparse_FIR_tilde_matrix(t_sparse_FIR_tilde *x, t_symbol *s, int argc, t_atom *argv) @@ -160,19 +203,19 @@ static void sparse_FIR_tilde_matrix(t_sparse_FIR_tilde *x, t_symbol *s, int argc static void sparse_FIR_tilde_order(t_sparse_FIR_tilde *x, t_floatarg fn) { - int n = (int)fn; + int n_order = (int)fn; - if(n > 0) + if(n_order > 0) { - if(n > x->x_sparse_FIR_order)/* resize */ + if(n_order > x->x_n_order_malloc) /* resize */ { - x->x_history_beg = (t_float *)resizebytes(x->x_history_beg, 2*x->x_n_coef_malloc*sizeof(t_float), 2*n*sizeof(t_float)); - x->x_index_beg = (int *)resizebytes(x->x_index_beg, x->x_n_coef_malloc*sizeof(int), n*sizeof(int)); - x->x_coef_beg = (t_float *)resizebytes(x->x_coef_beg, x->x_n_coef_malloc*sizeof(t_float), n*sizeof(t_float)); - x->x_n_coef_malloc = n; + x->x_history_beg = (t_float *)resizebytes(x->x_history_beg, 2*x->x_n_order_malloc*sizeof(t_float), 2*n_order*sizeof(t_float)); + x->x_n_order_malloc = n_order; } - x->x_sparse_FIR_order = n; + x->x_n_order = n_order; x->x_rw_index = 0; + + sparse_FIR_tilde_sort_within(x); } } @@ -184,40 +227,93 @@ static void sparse_FIR_tilde_dsp(t_sparse_FIR_tilde *x, t_signal **sp) static void *sparse_FIR_tilde_new(t_floatarg fn) { t_sparse_FIR_tilde *x = (t_sparse_FIR_tilde *)pd_new(sparse_FIR_tilde_class); - int n=(int)fn; + int n_order=(int)fn; + int i; outlet_new(&x->x_obj, &s_signal); - x->x_msi = 0; - x->x_n_coef = 0; - if(n < 1) - n = 1; - x->x_sparse_FIR_order = n; - x->x_n_coef_malloc = n; - x->x_history_beg = (t_float *)getbytes((2*x->x_n_coef_malloc)*sizeof(t_float)); - x->x_index_beg = (int *)getbytes(x->x_n_coef_malloc*sizeof(int)); - x->x_coef_beg = (t_float *)getbytes(x->x_n_coef_malloc*sizeof(t_float)); + + x->x_n_coef = 1; + x->x_n_coef_resp_order = 1; + x->x_n_coef_malloc = 1; + x->x_index_beg = (int *)getbytes(2*x->x_n_coef_malloc*sizeof(int)); + x->x_coef_beg = (t_float *)getbytes(2*x->x_n_coef_malloc*sizeof(t_float)); + x->x_index_beg[0] = 0; + x->x_index_beg[1] = 0; + x->x_coef_beg[0] = 0.0f; + x->x_coef_beg[1] = 0.0f; + if(n_order < 1) + n_order = 1; + x->x_n_order = n_order; + x->x_n_order_malloc = n_order; + x->x_history_beg = (t_float *)getbytes((2*x->x_n_order_malloc)*sizeof(t_float)); x->x_rw_index = 0; + n_order = 2*x->x_n_order_malloc; + for(i=0; i<n_order; i++) + x->x_history_beg[i] = 0.0f; + + x->x_float_sig_in = 0.0f; + + post("NEW: n_coef_resp_order = %d, n_coef = %d, n_coef_malloc = %d, n_order = %d, n_order_malloc = %d", x->x_n_coef_resp_order, x->x_n_coef, x->x_n_coef_malloc, x->x_n_order, x->x_n_order_malloc); + return(x); } static void sparse_FIR_tilde_free(t_sparse_FIR_tilde *x) { - if(x->x_history_beg) - freebytes(x->x_history_beg, (2*x->x_n_coef_malloc)*sizeof(t_float)); - if(x->x_index_beg) - freebytes(x->x_index_beg, x->x_n_coef_malloc*sizeof(int)); - if(x->x_coef_beg) - freebytes(x->x_coef_beg, x->x_n_coef_malloc*sizeof(t_float)); + freebytes(x->x_history_beg, (2*x->x_n_order_malloc)*sizeof(t_float)); /* twice, because of my simple circle-buffer */ + freebytes(x->x_index_beg, 2*x->x_n_coef_malloc*sizeof(int)); /* twice, because of buffering both, all coefficients and only the relevant for current order */ + freebytes(x->x_coef_beg, 2*x->x_n_coef_malloc*sizeof(t_float)); /* twice, because of buffering both, all coefficients and only the relevant for current order */ } +/*static void sparse_FIR_tilde_dump(t_sparse_FIR_tilde *x) +{ + t_float *hist=x->x_history_beg; + int *ix=x->x_index_beg; + int n=x->x_n_order; + + post("n_coef_resp_order = %d, n_coef = %d, n_coef_malloc = %d, n_order = %d, n_order_malloc = %d", x->x_n_coef_resp_order, x->x_n_coef, x->x_n_coef_malloc, x->x_n_order, x->x_n_order_malloc); + post("HIST:"); + + while(n > 8) + { + post("hist = %g, %g, %g, %g, %g, %g, %g, %g", hist[n-1], hist[n-2], hist[n-3], hist[n-4], hist[n-5], hist[n-6], hist[n-7], hist[n-8]); + n -= 8; + hist -= 8; + } + while(n > 0) + { + post("hist = %g", hist[n-1]); + n--; + hist--; + } + post("COEF:"); + + hist = x->x_coef_beg; + n = x->x_n_coef_resp_order; + while(n > 8) + { + post("coef = %d@%g, %d@%g, %d@%g, %d@%g, %d@%g, %d@%g, %d@%g, %d@%g", ix[n-1],hist[n-1], ix[n-2],hist[n-2], ix[n-3],hist[n-3], ix[n-4],hist[n-4], ix[n-5],hist[n-5], ix[n-6],hist[n-6], ix[n-7],hist[n-7], ix[n-8],hist[n-8]); + n -= 8; + hist -= 8; + } + while(n > 0) + { + post("coef = %d@%g", ix[n-1],hist[n-1]); + n--; + hist--; + } + post("***********************"); +}*/ + void sparse_FIR_tilde_setup(void) { sparse_FIR_tilde_class = class_new(gensym("sparse_FIR~"), (t_newmethod)sparse_FIR_tilde_new, (t_method)sparse_FIR_tilde_free, sizeof(t_sparse_FIR_tilde), 0, A_DEFFLOAT, 0); - CLASS_MAINSIGNALIN(sparse_FIR_tilde_class, t_sparse_FIR_tilde, x_msi); + CLASS_MAINSIGNALIN(sparse_FIR_tilde_class, t_sparse_FIR_tilde, x_float_sig_in); class_addmethod(sparse_FIR_tilde_class, (t_method)sparse_FIR_tilde_dsp, gensym("dsp"), 0); class_addlist(sparse_FIR_tilde_class, (t_method)sparse_FIR_tilde_list); class_addmethod(sparse_FIR_tilde_class, (t_method)sparse_FIR_tilde_matrix, gensym("matrix"), A_GIMME, 0); class_addmethod(sparse_FIR_tilde_class, (t_method)sparse_FIR_tilde_order, gensym("order"), A_FLOAT, 0); class_addmethod(sparse_FIR_tilde_class, (t_method)sparse_FIR_tilde_order, gensym("size"), A_FLOAT, 0); + //class_addmethod(sparse_FIR_tilde_class, (t_method)sparse_FIR_tilde_dump, gensym("dump"), 0); } diff --git a/externals/iemlib/iemlib1/src/vcf_filter~.c b/externals/iemlib/iemlib1/src/vcf_filter~.c index 393559ab298b708de4f105ecf6b458cf1096231f..3771eccd24e27c1430a0e2cc6e5798c1eebe68d5 100644 --- a/externals/iemlib/iemlib1/src/vcf_filter~.c +++ b/externals/iemlib/iemlib1/src/vcf_filter~.c @@ -13,9 +13,9 @@ iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 typedef struct _vcf_filter_tilde { t_object x_obj; - t_float x_wn1; - t_float x_wn2; - t_float x_msi; + t_sample x_wn1; + t_sample x_wn2; + t_float x_float_sig_in1; char x_filtname[6]; } t_vcf_filter_tilde; @@ -23,8 +23,8 @@ static t_class *vcf_filter_tilde_class; static t_int *vcf_filter_tilde_perform_snafu(t_int *w) { - t_float *in = (t_float *)(w[1]); - t_float *out = (t_float *)(w[4]); + t_sample *in = (t_sample *)(w[1]); + t_sample *out = (t_sample *)(w[4]); int n = (t_int)(w[6]); while(n--) @@ -61,52 +61,52 @@ wn1 = wn0; static t_int *vcf_filter_tilde_perform_lp2(t_int *w) { - t_float *in = (t_float *)(w[1]); - t_float *lp = (t_float *)(w[2]); - t_float *q = (t_float *)(w[3]); - t_float *out = (t_float *)(w[4]); + t_sample *in = (t_sample *)(w[1]); + t_sample *lp = (t_sample *)(w[2]); + t_sample *q = (t_sample *)(w[3]); + t_sample *out = (t_sample *)(w[4]); t_vcf_filter_tilde *x = (t_vcf_filter_tilde *)(w[5]); int i, n = (t_int)(w[6]); - t_float wn0, wn1=x->x_wn1, wn2=x->x_wn2; - t_float l, al, l2, rcp; + t_sample wn0, wn1=x->x_wn1, wn2=x->x_wn2; + t_sample l, al, l2, rcp; for(i=0; i<n; i+=4) { l = lp[i]; - if(q[i] < 0.000001f) - al = 1000000.0f*l; - else if(q[i] > 1000000.0f) - al = 0.000001f*l; + if(q[i] < 0.000001) + al = 1000000.0*l; + else if(q[i] > 1000000.0) + al = 0.000001*l; else al = l/q[i]; - l2 = l*l + 1.0f; - rcp = 1.0f/(al + l2); + l2 = l*l + 1.0; + rcp = 1.0/(al + l2); - wn0 = *in++ - rcp*(2.0f*(2.0f - l2)*wn1 + (l2 - al)*wn2); - *out++ = rcp*(wn0 + 2.0f*wn1 + wn2); + wn0 = *in++ - rcp*(2.0*(2.0 - l2)*wn1 + (l2 - al)*wn2); + *out++ = rcp*(wn0 + 2.0*wn1 + wn2); wn2 = wn1; wn1 = wn0; - wn0 = *in++ - rcp*(2.0f*(2.0f - l2)*wn1 + (l2 - al)*wn2); - *out++ = rcp*(wn0 + 2.0f*wn1 + wn2); + wn0 = *in++ - rcp*(2.0*(2.0 - l2)*wn1 + (l2 - al)*wn2); + *out++ = rcp*(wn0 + 2.0*wn1 + wn2); wn2 = wn1; wn1 = wn0; - wn0 = *in++ - rcp*(2.0f*(2.0f - l2)*wn1 + (l2 - al)*wn2); - *out++ = rcp*(wn0 + 2.0f*wn1 + wn2); + wn0 = *in++ - rcp*(2.0*(2.0 - l2)*wn1 + (l2 - al)*wn2); + *out++ = rcp*(wn0 + 2.0*wn1 + wn2); wn2 = wn1; wn1 = wn0; - wn0 = *in++ - rcp*(2.0f*(2.0f - l2)*wn1 + (l2 - al)*wn2); - *out++ = rcp*(wn0 + 2.0f*wn1 + wn2); + wn0 = *in++ - rcp*(2.0*(2.0 - l2)*wn1 + (l2 - al)*wn2); + *out++ = rcp*(wn0 + 2.0*wn1 + wn2); wn2 = wn1; wn1 = wn0; } /* NAN protect */ if(IEM_DENORMAL(wn2)) - wn2 = 0.0f; + wn2 = 0.0; if(IEM_DENORMAL(wn1)) - wn1 = 0.0f; + wn1 = 0.0; x->x_wn1 = wn1; x->x_wn2 = wn2; @@ -115,53 +115,53 @@ static t_int *vcf_filter_tilde_perform_lp2(t_int *w) static t_int *vcf_filter_tilde_perform_bp2(t_int *w) { - t_float *in = (t_float *)(w[1]); - t_float *lp = (t_float *)(w[2]); - t_float *q = (t_float *)(w[3]); - t_float *out = (t_float *)(w[4]); + t_sample *in = (t_sample *)(w[1]); + t_sample *lp = (t_sample *)(w[2]); + t_sample *q = (t_sample *)(w[3]); + t_sample *out = (t_sample *)(w[4]); t_vcf_filter_tilde *x = (t_vcf_filter_tilde *)(w[5]); int i, n = (t_int)(w[6]); - t_float wn0, wn1=x->x_wn1, wn2=x->x_wn2; - t_float l, al, l2, rcp; + t_sample wn0, wn1=x->x_wn1, wn2=x->x_wn2; + t_sample l, al, l2, rcp; for(i=0; i<n; i+=4) { l = lp[i]; - if(q[i] < 0.000001f) - al = 1000000.0f*l; - else if(q[i] > 1000000.0f) - al = 0.000001f*l; + if(q[i] < 0.000001) + al = 1000000.0*l; + else if(q[i] > 1000000.0) + al = 0.000001*l; else al = l/q[i]; - l2 = l*l + 1.0f; - rcp = 1.0f/(al + l2); + l2 = l*l + 1.0; + rcp = 1.0/(al + l2); - wn0 = *in++ - rcp*(2.0f*(2.0f - l2)*wn1 + (l2 - al)*wn2); + wn0 = *in++ - rcp*(2.0*(2.0 - l2)*wn1 + (l2 - al)*wn2); *out++ = rcp*al*(wn0 - wn2); wn2 = wn1; wn1 = wn0; - wn0 = *in++ - rcp*(2.0f*(2.0f - l2)*wn1 + (l2 - al)*wn2); + wn0 = *in++ - rcp*(2.0*(2.0 - l2)*wn1 + (l2 - al)*wn2); *out++ = rcp*al*(wn0 - wn2); wn2 = wn1; wn1 = wn0; - wn0 = *in++ - rcp*(2.0f*(2.0f - l2)*wn1 + (l2 - al)*wn2); + wn0 = *in++ - rcp*(2.0*(2.0 - l2)*wn1 + (l2 - al)*wn2); *out++ = rcp*al*(wn0 - wn2); wn2 = wn1; wn1 = wn0; - wn0 = *in++ - rcp*(2.0f*(2.0f - l2)*wn1 + (l2 - al)*wn2); + wn0 = *in++ - rcp*(2.0*(2.0 - l2)*wn1 + (l2 - al)*wn2); *out++ = rcp*al*(wn0 - wn2); wn2 = wn1; wn1 = wn0; } /* NAN protect */ if(IEM_DENORMAL(wn2)) - wn2 = 0.0f; + wn2 = 0.0; if(IEM_DENORMAL(wn1)) - wn1 = 0.0f; + wn1 = 0.0; x->x_wn1 = wn1; x->x_wn2 = wn2; @@ -170,53 +170,53 @@ static t_int *vcf_filter_tilde_perform_bp2(t_int *w) static t_int *vcf_filter_tilde_perform_rbp2(t_int *w) { - t_float *in = (t_float *)(w[1]); - t_float *lp = (t_float *)(w[2]); - t_float *q = (t_float *)(w[3]); - t_float *out = (t_float *)(w[4]); + t_sample *in = (t_sample *)(w[1]); + t_sample *lp = (t_sample *)(w[2]); + t_sample *q = (t_sample *)(w[3]); + t_sample *out = (t_sample *)(w[4]); t_vcf_filter_tilde *x = (t_vcf_filter_tilde *)(w[5]); int i, n = (t_int)(w[6]); - t_float wn0, wn1=x->x_wn1, wn2=x->x_wn2; - t_float al, l, l2, rcp; + t_sample wn0, wn1=x->x_wn1, wn2=x->x_wn2; + t_sample al, l, l2, rcp; for(i=0; i<n; i+=4) { l = lp[i]; - if(q[i] < 0.000001f) - al = 1000000.0f*l; - else if(q[i] > 1000000.0f) - al = 0.000001f*l; + if(q[i] < 0.000001) + al = 1000000.0*l; + else if(q[i] > 1000000.0) + al = 0.000001*l; else al = l/q[i]; - l2 = l*l + 1.0f; - rcp = 1.0f/(al + l2); + l2 = l*l + 1.0; + rcp = 1.0/(al + l2); - wn0 = *in++ - rcp*(2.0f*(2.0f - l2)*wn1 + (l2 - al)*wn2); + wn0 = *in++ - rcp*(2.0*(2.0 - l2)*wn1 + (l2 - al)*wn2); *out++ = rcp*l*(wn0 - wn2); wn2 = wn1; wn1 = wn0; - wn0 = *in++ - rcp*(2.0f*(2.0f - l2)*wn1 + (l2 - al)*wn2); + wn0 = *in++ - rcp*(2.0*(2.0 - l2)*wn1 + (l2 - al)*wn2); *out++ = rcp*l*(wn0 - wn2); wn2 = wn1; wn1 = wn0; - wn0 = *in++ - rcp*(2.0f*(2.0f - l2)*wn1 + (l2 - al)*wn2); + wn0 = *in++ - rcp*(2.0*(2.0 - l2)*wn1 + (l2 - al)*wn2); *out++ = rcp*l*(wn0 - wn2); wn2 = wn1; wn1 = wn0; - wn0 = *in++ - rcp*(2.0f*(2.0f - l2)*wn1 + (l2 - al)*wn2); + wn0 = *in++ - rcp*(2.0*(2.0 - l2)*wn1 + (l2 - al)*wn2); *out++ = rcp*l*(wn0 - wn2); wn2 = wn1; wn1 = wn0; } /* NAN protect */ if(IEM_DENORMAL(wn2)) - wn2 = 0.0f; + wn2 = 0.0; if(IEM_DENORMAL(wn1)) - wn1 = 0.0f; + wn1 = 0.0; x->x_wn1 = wn1; x->x_wn2 = wn2; @@ -225,53 +225,53 @@ static t_int *vcf_filter_tilde_perform_rbp2(t_int *w) static t_int *vcf_filter_tilde_perform_hp2(t_int *w) { - t_float *in = (t_float *)(w[1]); - t_float *lp = (t_float *)(w[2]); - t_float *q = (t_float *)(w[3]); - t_float *out = (t_float *)(w[4]); + t_sample *in = (t_sample *)(w[1]); + t_sample *lp = (t_sample *)(w[2]); + t_sample *q = (t_sample *)(w[3]); + t_sample *out = (t_sample *)(w[4]); t_vcf_filter_tilde *x = (t_vcf_filter_tilde *)(w[5]); int i, n = (t_int)(w[6]); - t_float wn0, wn1=x->x_wn1, wn2=x->x_wn2; - t_float l, al, l2, rcp, forw; + t_sample wn0, wn1=x->x_wn1, wn2=x->x_wn2; + t_sample l, al, l2, rcp, forw; for(i=0; i<n; i+=4) { l = lp[i]; - if(q[i] < 0.000001f) - al = 1000000.0f*l; - else if(q[i] > 1000000.0f) - al = 0.000001f*l; + if(q[i] < 0.000001) + al = 1000000.0*l; + else if(q[i] > 1000000.0) + al = 0.000001*l; else al = l/q[i]; - l2 = l*l + 1.0f; - rcp = 1.0f/(al + l2); - forw = rcp * (l2 - 1.0f); + l2 = l*l + 1.0; + rcp = 1.0/(al + l2); + forw = rcp * (l2 - 1.0); - wn0 = *in++ - rcp*(2.0f*(2.0f - l2)*wn1 + (l2 - al)*wn2); - *out++ = forw*(wn0 - 2.0f*wn1 + wn2); + wn0 = *in++ - rcp*(2.0*(2.0 - l2)*wn1 + (l2 - al)*wn2); + *out++ = forw*(wn0 - 2.0*wn1 + wn2); wn2 = wn1; wn1 = wn0; - wn0 = *in++ - rcp*(2.0f*(2.0f - l2)*wn1 + (l2 - al)*wn2); - *out++ = forw*(wn0 - 2.0f*wn1 + wn2); + wn0 = *in++ - rcp*(2.0*(2.0 - l2)*wn1 + (l2 - al)*wn2); + *out++ = forw*(wn0 - 2.0*wn1 + wn2); wn2 = wn1; wn1 = wn0; - wn0 = *in++ - rcp*(2.0f*(2.0f - l2)*wn1 + (l2 - al)*wn2); - *out++ = forw*(wn0 - 2.0f*wn1 + wn2); + wn0 = *in++ - rcp*(2.0*(2.0 - l2)*wn1 + (l2 - al)*wn2); + *out++ = forw*(wn0 - 2.0*wn1 + wn2); wn2 = wn1; wn1 = wn0; - wn0 = *in++ - rcp*(2.0f*(2.0f - l2)*wn1 + (l2 - al)*wn2); - *out++ = forw*(wn0 - 2.0f*wn1 + wn2); + wn0 = *in++ - rcp*(2.0*(2.0 - l2)*wn1 + (l2 - al)*wn2); + *out++ = forw*(wn0 - 2.0*wn1 + wn2); wn2 = wn1; wn1 = wn0; } /* NAN protect */ if(IEM_DENORMAL(wn2)) - wn2 = 0.0f; + wn2 = 0.0; if(IEM_DENORMAL(wn1)) - wn1 = 0.0f; + wn1 = 0.0; x->x_wn1 = wn1; x->x_wn2 = wn2; @@ -300,6 +300,15 @@ static void vcf_filter_tilde_dsp(t_vcf_filter_tilde *x, t_signal **sp) } } +static void vcf_filter_tilde_set(t_vcf_filter_tilde *x, t_symbol *s, int argc, t_atom *argv) +{ + if((argc >= 2) && IS_A_FLOAT(argv, 1) && IS_A_FLOAT(argv, 0)) + { + x->x_wn1 = (t_float)atom_getfloatarg(0, argc, argv); + x->x_wn2 = (t_float)atom_getfloatarg(1, argc, argv); + } +} + static void *vcf_filter_tilde_new(t_symbol *filt_typ) { t_vcf_filter_tilde *x = (t_vcf_filter_tilde *)pd_new(vcf_filter_tilde_class); @@ -308,9 +317,9 @@ static void *vcf_filter_tilde_new(t_symbol *filt_typ) inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal); inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal); outlet_new(&x->x_obj, &s_signal); - x->x_msi = 0; - x->x_wn1 = 0.0f; - x->x_wn2 = 0.0f; + x->x_float_sig_in1 = 0; + x->x_wn1 = 0.0; + x->x_wn2 = 0.0; c = (char *)filt_typ->s_name; c[5] = 0; strcpy(x->x_filtname, c); @@ -321,7 +330,7 @@ void vcf_filter_tilde_setup(void) { vcf_filter_tilde_class = class_new(gensym("vcf_filter~"), (t_newmethod)vcf_filter_tilde_new, 0, sizeof(t_vcf_filter_tilde), 0, A_SYMBOL, 0); - CLASS_MAINSIGNALIN(vcf_filter_tilde_class, t_vcf_filter_tilde, x_msi); + CLASS_MAINSIGNALIN(vcf_filter_tilde_class, t_vcf_filter_tilde, x_float_sig_in1); class_addmethod(vcf_filter_tilde_class, (t_method)vcf_filter_tilde_dsp, gensym("dsp"), 0); -// class_sethelpsymbol(vcf_filter_tilde_class, gensym("iemhelp/help-vcf_filter~")); + class_addmethod(vcf_filter_tilde_class, (t_method)vcf_filter_tilde_set, gensym("set"), A_GIMME, 0); } diff --git a/externals/iemlib/iemlib2/iem_pbank.pbank b/externals/iemlib/iemlib2/iem_pbank.pbank index 145dfccf569eaa6ed5ab77ddd8814a1723b728bc..26870deb410bd4911907a3ef290ab96833f6b710 100644 --- a/externals/iemlib/iemlib2/iem_pbank.pbank +++ b/externals/iemlib/iemlib2/iem_pbank.pbank @@ -7,4 +7,4 @@ 6.1 6.2 6.3 6.4 6.5 6.6 stu 7.1 7.2 7.3 7.4 7.5 7.6 vwx 8.1 8.2 8.3 8.4 8.5 8.6 y_z -9.1 9.2 9.3 9.4 9.5 9.6 +-+ +9.1 9.2 9.3 9.4 9.5 9.6 +-+ diff --git a/externals/iemlib/iemlib2/src/VC6/iem_atan2.dsp b/externals/iemlib/iemlib2/src/VC6/iem_atan2.dsp new file mode 100644 index 0000000000000000000000000000000000000000..a6ac17d52f1d92a4f5ee565a758e22e499276497 --- /dev/null +++ b/externals/iemlib/iemlib2/src/VC6/iem_atan2.dsp @@ -0,0 +1,85 @@ +# Microsoft Developer Studio Project File - Name="iem_atan2" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** NICHT BEARBEITEN ** + +# TARGTYPE "Win32 (x86) External Target" 0x0106 + +CFG=iem_atan2 - Win32 Debug +!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE +!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl +!MESSAGE +!MESSAGE NMAKE /f "iem_atan2.mak". +!MESSAGE +!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben +!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: +!MESSAGE +!MESSAGE NMAKE /f "iem_atan2.mak" CFG="iem_atan2 - Win32 Debug" +!MESSAGE +!MESSAGE Für die Konfiguration stehen zur Auswahl: +!MESSAGE +!MESSAGE "iem_atan2 - Win32 Release" (basierend auf "Win32 (x86) External Target") +!MESSAGE "iem_atan2 - Win32 Debug" (basierend auf "Win32 (x86) External Target") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" + +!IF "$(CFG)" == "iem_atan2 - Win32 Release" + +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Cmd_Line "NMAKE /f makefile_win" +# PROP BASE Rebuild_Opt "/a" +# PROP BASE Target_File "makefile_win.exe" +# PROP BASE Bsc_Name "makefile_win.bsc" +# PROP BASE Target_Dir "" +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Cmd_Line "NMAKE /f makefile_win" +# PROP Rebuild_Opt "/a" +# PROP Target_File "iem_atan2.exe" +# PROP Bsc_Name "iem_atan2.bsc" +# PROP Target_Dir "" + +!ELSEIF "$(CFG)" == "iem_atan2 - Win32 Debug" + +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Cmd_Line "NMAKE /f makefile_win" +# PROP BASE Rebuild_Opt "/a" +# PROP BASE Target_File "makefile_win.exe" +# PROP BASE Bsc_Name "makefile_win.bsc" +# PROP BASE Target_Dir "" +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Cmd_Line "NMAKE /f makefile_win" +# PROP Rebuild_Opt "/a" +# PROP Target_File "iem_atan2.exe" +# PROP Bsc_Name "iem_atan2.bsc" +# PROP Target_Dir "" + +!ENDIF + +# Begin Target + +# Name "iem_atan2 - Win32 Release" +# Name "iem_atan2 - Win32 Debug" + +!IF "$(CFG)" == "iem_atan2 - Win32 Release" + +!ELSEIF "$(CFG)" == "iem_atan2 - Win32 Debug" + +!ENDIF + +# Begin Source File + +SOURCE=.\makefile_win +# End Source File +# End Target +# End Project diff --git a/externals/iemlib/iemlib2/src/VC6/iem_atan2.dsw b/externals/iemlib/iemlib2/src/VC6/iem_atan2.dsw new file mode 100644 index 0000000000000000000000000000000000000000..a0317cbaedd9ce2413cfa651fe1ac650aa0bb555 --- /dev/null +++ b/externals/iemlib/iemlib2/src/VC6/iem_atan2.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNUNG: DIESE ARBEITSBEREICHSDATEI DARF NICHT BEARBEITET ODER GELÖSCHT WERDEN! + +############################################################################### + +Project: "iem_atan2"=.\iem_atan2.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/externals/iemlib/iemlib2/src/VC6/makefile_win b/externals/iemlib/iemlib2/src/VC6/makefile_win new file mode 100644 index 0000000000000000000000000000000000000000..1f2d144a6caf5c38864a33b2f8a8abcf871ed86d --- /dev/null +++ b/externals/iemlib/iemlib2/src/VC6/makefile_win @@ -0,0 +1,37 @@ + +all: ..\iem_atan2.dll + +VIS_CPP_PATH = "C:\Programme\Microsoft Visual Studio\Vc98" + +PD_INST_PATH = "C:\Programme\pd" + +PD_WIN_INCLUDE_PATH = /I. /I$(PD_INST_PATH)\src /I$(VIS_CPP_PATH)\include + +PD_WIN_C_FLAGS = /nologo /W3 /WX /DMSW /DNT /DPD /DWIN32 /DWINDOWS /Ox -DPA_LITTLE_ENDIAN + +PD_WIN_L_FLAGS = /nologo + +PD_WIN_LIB = /NODEFAULTLIB:libc /NODEFAULTLIB:oldnames /NODEFAULTLIB:kernel /NODEFAULTLIB:uuid \ + $(VIS_CPP_PATH)\lib\libc.lib \ + $(VIS_CPP_PATH)\lib\oldnames.lib \ + $(VIS_CPP_PATH)\lib\kernel32.lib \ + $(VIS_CPP_PATH)\lib\wsock32.lib \ + $(VIS_CPP_PATH)\lib\winmm.lib \ + $(PD_INST_PATH)\bin\pthreadVC.lib \ + $(PD_INST_PATH)\bin\pd.lib + + +SRC = iem_atan2.c + + +OBJ = $(SRC:.c=.obj) + +.c.obj: + cl $(PD_WIN_C_FLAGS) $(PD_WIN_INCLUDE_PATH) /c $*.c + +..\iem_atan2.dll: $(OBJ) + link $(PD_WIN_L_FLAGS) /dll /export:iem_atan2_setup \ + /out:..\iem_atan2.dll $(OBJ) $(PD_WIN_LIB) + +clean: + del *.obj diff --git a/externals/iemlib/iemlib2/src/VC7/iem_atan2.vcproj b/externals/iemlib/iemlib2/src/VC7/iem_atan2.vcproj new file mode 100644 index 0000000000000000000000000000000000000000..0eb44278233a4624c9f0d4ba02ff2e07260f9a7e --- /dev/null +++ b/externals/iemlib/iemlib2/src/VC7/iem_atan2.vcproj @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="7.10" + Name="iem_atan2" + ProjectGUID="{6A44952F-0D55-44EE-9032-928368583BEC}" + SccProjectName="" + SccLocalPath="" + Keyword="MakeFileProj"> + <Platforms> + <Platform + Name="Win32"/> + </Platforms> + <Configurations> + <Configuration + Name="Debug|Win32" + OutputDirectory=".\Debug" + IntermediateDirectory=".\Debug" + ConfigurationType="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCNMakeTool" + BuildCommandLine="NMAKE /f makefile_vc7proj" + ReBuildCommandLine="NMAKE /f makefile_vc7proj /a" + Output="iem_atan2.exe"/> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory=".\Release" + IntermediateDirectory=".\Release" + ConfigurationType="0" + ATLMinimizesCRunTimeLibraryUsage="FALSE"> + <Tool + Name="VCNMakeTool" + BuildCommandLine="NMAKE /f makefile_vc7proj" + ReBuildCommandLine="NMAKE /f makefile_vc7proj /a" + Output="iem_atan2.exe"/> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <File + RelativePath="iem_atan2.bsc"> + </File> + <File + RelativePath="makefile_vc7proj"> + </File> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/externals/iemlib/iemlib2/src/VC7/makefile_vc7proj b/externals/iemlib/iemlib2/src/VC7/makefile_vc7proj new file mode 100644 index 0000000000000000000000000000000000000000..f50f96c87204de7b44cc308d59f06c559dbe1a10 --- /dev/null +++ b/externals/iemlib/iemlib2/src/VC7/makefile_vc7proj @@ -0,0 +1,31 @@ +TARGET = iem_atan2 + +all: ..\$(TARGET).dll + +VIS_CPP_PATH = "C:\Programme\Microsoft Visual Studio .NET 2003\Vc7" +VIS_SDK_PATH = "C:\Programme\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK" +PD_INST_PATH = "C:\Programme\pd-0.42-5" +PD_WIN_INCLUDE_PATH = /I. /I$(PD_INST_PATH)\src /I$(VIS_CPP_PATH)\include +PD_WIN_C_FLAGS = /nologo /W3 /WX /DMSW /DNT /DPD /DWIN32 /DWINDOWS /Ox -D_CRT_SECURE_NO_WARNINGS +PD_WIN_L_FLAGS = /nologo + +PD_WIN_LIB = /NODEFAULTLIB:libcmt /NODEFAULTLIB:oldnames /NODEFAULTLIB:kernel32 \ + $(VIS_CPP_PATH)\lib\libcmt.lib \ + $(VIS_CPP_PATH)\lib\oldnames.lib \ + $(VIS_SDK_PATH)\lib\kernel32.lib \ + $(PD_INST_PATH)\bin\pd.lib + +SRC = $(TARGET).c + + +OBJ = $(SRC:.c=.obj) + +.c.obj: + cl $(PD_WIN_C_FLAGS) $(PD_WIN_INCLUDE_PATH) /c $*.c + +..\$(TARGET).dll: $(OBJ) + link $(PD_WIN_L_FLAGS) /dll /export:$(TARGET)_setup \ + /out:..\$(TARGET).dll $(OBJ) $(PD_WIN_LIB) + +clean: + del *.obj diff --git a/externals/iemlib/iemlib2/src/VC9/iem_atan2.sln b/externals/iemlib/iemlib2/src/VC9/iem_atan2.sln new file mode 100644 index 0000000000000000000000000000000000000000..ac8c11c01fa2f38126ccba5bf985335a8194a5bb --- /dev/null +++ b/externals/iemlib/iemlib2/src/VC9/iem_atan2.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iem_atan2", "iem_atan2.vcproj", "{6A44952F-0D55-44EE-9032-928368583BEC}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {6A44952F-0D55-44EE-9032-928368583BEC}.Debug|Win32.ActiveCfg = Debug|Win32 + {6A44952F-0D55-44EE-9032-928368583BEC}.Debug|Win32.Build.0 = Debug|Win32 + {6A44952F-0D55-44EE-9032-928368583BEC}.Release|Win32.ActiveCfg = Release|Win32 + {6A44952F-0D55-44EE-9032-928368583BEC}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/externals/iemlib/iemlib2/src/VC9/iem_atan2.vcproj b/externals/iemlib/iemlib2/src/VC9/iem_atan2.vcproj new file mode 100644 index 0000000000000000000000000000000000000000..855762cc147e407fef45ebdd0982c429ffb76654 --- /dev/null +++ b/externals/iemlib/iemlib2/src/VC9/iem_atan2.vcproj @@ -0,0 +1,77 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="9,00" + Name="iem_atan2" + ProjectGUID="{6A44952F-0D55-44EE-9032-928368583BEC}" + Keyword="MakeFileProj" + TargetFrameworkVersion="131072" + > + <Platforms> + <Platform + Name="Win32" + /> + </Platforms> + <ToolFiles> + </ToolFiles> + <Configurations> + <Configuration + Name="Debug|Win32" + OutputDirectory=".\Debug" + IntermediateDirectory=".\Debug" + ConfigurationType="0" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + ATLMinimizesCRunTimeLibraryUsage="false" + > + <Tool + Name="VCNMakeTool" + BuildCommandLine="NMAKE /f makefile_vc9proj" + ReBuildCommandLine="NMAKE /f makefile_vc9proj /a" + CleanCommandLine="" + Output="iem_atan2.exe" + PreprocessorDefinitions="" + IncludeSearchPath="" + ForcedIncludes="" + AssemblySearchPath="" + ForcedUsingAssemblies="" + CompileAsManaged="" + /> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory=".\Release" + IntermediateDirectory=".\Release" + ConfigurationType="0" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + ATLMinimizesCRunTimeLibraryUsage="false" + > + <Tool + Name="VCNMakeTool" + BuildCommandLine="NMAKE /f makefile_vc9proj" + ReBuildCommandLine="NMAKE /f makefile_vc9proj /a" + CleanCommandLine="" + Output="iem_atan2.exe" + PreprocessorDefinitions="" + IncludeSearchPath="" + ForcedIncludes="" + AssemblySearchPath="" + ForcedUsingAssemblies="" + CompileAsManaged="" + /> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <File + RelativePath="iem_atan2.bsc" + > + </File> + <File + RelativePath="makefile_vc9proj" + > + </File> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/externals/iemlib/iemlib2/src/VC9/makefile_vc9proj b/externals/iemlib/iemlib2/src/VC9/makefile_vc9proj new file mode 100644 index 0000000000000000000000000000000000000000..7781a3c46123525c95a0ec6d4ee7653788cd3ac1 --- /dev/null +++ b/externals/iemlib/iemlib2/src/VC9/makefile_vc9proj @@ -0,0 +1,30 @@ +TARGET = iem_atan2 + +all: ..\$(TARGET).dll + +VIS_CPP_PATH = "C:\Program Files\Microsoft Visual Studio 9.0\VC" +VIS_SDK_PATH = "C:\Program Files\Microsoft SDKs\Windows\v6.0A" +PD_INST_PATH = "C:\Program Files\pd-0.43.0" +PD_WIN_INCLUDE_PATH = /I. /I$(PD_INST_PATH)\src /I$(VIS_CPP_PATH)\include +PD_WIN_C_FLAGS = /nologo /W3 /WX /DMSW /DNT /DPD /DWIN32 /DWINDOWS /DHAVE_G_CANVAS_H /Ox -D_CRT_SECURE_NO_WARNINGS +PD_WIN_L_FLAGS = /nologo + +PD_WIN_LIB = /NODEFAULTLIB:libcmt /NODEFAULTLIB:oldnames /NODEFAULTLIB:kernel32 \ + $(VIS_CPP_PATH)\lib\libcmt.lib \ + $(VIS_CPP_PATH)\lib\oldnames.lib \ + $(VIS_SDK_PATH)\lib\kernel32.lib \ + $(PD_INST_PATH)\bin\pd.lib + +SRC = $(TARGET).c + +OBJ = $(SRC:.c=.obj) + +.c.obj: + cl $(PD_WIN_C_FLAGS) $(PD_WIN_INCLUDE_PATH) /c $*.c + +..\$(TARGET).dll: $(OBJ) + link $(PD_WIN_L_FLAGS) /dll /export:$(TARGET)_setup \ + /out:..\$(TARGET).dll $(OBJ) $(PD_WIN_LIB) + +clean: + del *.obj diff --git a/externals/iemlib/iemlib2/src/dollarg.c b/externals/iemlib/iemlib2/src/dollarg.c index 102a680e47410b220a481bd7b13f6f83b8308878..946108115daeb288ffb0b8e633fc010334eb138f 100644 --- a/externals/iemlib/iemlib2/src/dollarg.c +++ b/externals/iemlib/iemlib2/src/dollarg.c @@ -4,7 +4,11 @@ iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 */ #include "m_pd.h" -#include "g_canvas.h" +#ifdef HAVE_G_CANVAS_H +# include "g_canvas.h" +#else +EXTERN t_canvas *glist_getcanvas(t_glist *x); +#endif #include "iemlib.h" diff --git a/externals/iemlib/iemlib2/src/iemlib.h b/externals/iemlib/iemlib2/src/iemlib.h deleted file mode 100644 index 973bfebcd9f46088839bbf5c7af217bc51714dba..0000000000000000000000000000000000000000 --- a/externals/iemlib/iemlib2/src/iemlib.h +++ /dev/null @@ -1,102 +0,0 @@ -/* For information on usage and redistribution, and for a DISCLAIMER OF ALL -* WARRANTIES, see the file, "LICENSE.txt," in this distribution. - -iemlib written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2007 */ - -#ifndef __IEMLIB_H__ -#define __IEMLIB_H__ - - -#define IS_A_POINTER(atom,index) ((atom+index)->a_type == A_POINTER) -#define IS_A_FLOAT(atom,index) ((atom+index)->a_type == A_FLOAT) -#define IS_A_SYMBOL(atom,index) ((atom+index)->a_type == A_SYMBOL) -#define IS_A_DOLLAR(atom,index) ((atom+index)->a_type == A_DOLLAR) -#define IS_A_DOLLSYM(atom,index) ((atom+index)->a_type == A_DOLLSYM) -#define IS_A_SEMI(atom,index) ((atom+index)->a_type == A_SEMI) -#define IS_A_COMMA(atom,index) ((atom+index)->a_type == A_COMMA) - -/* now miller's code starts : - for 4 point interpolation - for lookup tables - for denormal floats - */ - -#ifdef MSW -int sys_noloadbang; -//t_symbol *iemgui_key_sym=0; -#include <io.h> -#else -extern int sys_noloadbang; -//extern t_symbol *iemgui_key_sym; -#include <unistd.h> -#endif - -#define DEFDELVS 64 -#define XTRASAMPS 4 -#define SAMPBLK 4 - -#define UNITBIT32 1572864. /* 3*2^19; bit 32 has place value 1 */ - - /* machine-dependent definitions. These ifdefs really - should have been by CPU type and not by operating system! */ -#ifdef IRIX - /* big-endian. Most significant byte is at low address in memory */ -#define HIOFFSET 0 /* word offset to find MSB */ -#define LOWOFFSET 1 /* word offset to find LSB */ -#define int32 long /* a data type that has 32 bits */ -#endif /* IRIX */ - -#ifdef MSW - /* little-endian; most significant byte is at highest address */ -#define HIOFFSET 1 -#define LOWOFFSET 0 -#define int32 long -#endif /* MSW */ - -#if defined(__FreeBSD__) || defined(__APPLE__) -#include <machine/endian.h> -#endif - -#ifdef __linux__ -#include <endian.h> -#endif - -#if defined(__unix__) || defined(__APPLE__) -#if !defined(BYTE_ORDER) || !defined(LITTLE_ENDIAN) -#error No byte order defined -#endif - -#if BYTE_ORDER == LITTLE_ENDIAN -#define HIOFFSET 1 -#define LOWOFFSET 0 -#else -#define HIOFFSET 0 /* word offset to find MSB */ -#define LOWOFFSET 1 /* word offset to find LSB */ -#endif /* __BYTE_ORDER */ -#include <sys/types.h> -#define int32 int32_t -#endif /* __unix__ or __APPLE__*/ - -union tabfudge_d -{ - double tf_d; - int32 tf_i[2]; -}; - -union tabfudge_f -{ - float tf_f; - long tf_l; -}; - -#if defined __i386__ || defined __x86_64__ -#define IEM_DENORMAL(f) ((((*(unsigned int*)&(f))&0x60000000)==0) || \ -(((*(unsigned int*)&(f))&0x60000000)==0x60000000)) -/* more stringent test: anything not between 1e-19 and 1e19 in absolute val */ -#else - -#define IEM_DENORMAL(f) 0 - -#endif - -#endif diff --git a/externals/iemlib/iemlib2/src/iemlib2.c b/externals/iemlib/iemlib2/src/iemlib2.c index dc80cf63e655117d6f6fccbbeb455415dc19103b..bae860bc7c20ba8acd32e3b8f7bb58e8d46f8508 100644 --- a/externals/iemlib/iemlib2/src/iemlib2.c +++ b/externals/iemlib/iemlib2/src/iemlib2.c @@ -42,6 +42,7 @@ void list2send_setup(void); void m2f_tilde_setup(void); void mergefilename_setup(void); void modulo_counter_setup(void); +//void para_bank_csv_setup(void); void parentdollarzero_setup(void); void post_netreceive_setup(void); void pre_inlet_setup(void); @@ -89,6 +90,7 @@ void iemlib2_setup(void) m2f_tilde_setup(); mergefilename_setup(); modulo_counter_setup(); +// para_bank_csv_setup(); parentdollarzero_setup(); post_netreceive_setup(); pre_inlet_setup(); @@ -104,6 +106,6 @@ void iemlib2_setup(void) unsymbol_setup(); wrap_setup(); - post("iemlib2 (R-1.17) library loaded! (c) Thomas Musil 11.2008"); + post("iemlib2 (R-1.18) library loaded! (c) Thomas Musil 02.2012"); post(" musil%ciem.at iem KUG Graz Austria", '@'); } diff --git a/externals/iemlib/iemlib2/src/iemlib2.sln b/externals/iemlib/iemlib2/src/iemlib2.sln new file mode 100644 index 0000000000000000000000000000000000000000..03f40e80f7fe5288c50893eaced0db96269a0470 --- /dev/null +++ b/externals/iemlib/iemlib2/src/iemlib2.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iemlib2", "iemlib2.vcproj", "{6A44952F-0D55-44EE-9032-928368583BEC}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {6A44952F-0D55-44EE-9032-928368583BEC}.Debug|Win32.ActiveCfg = Debug|Win32 + {6A44952F-0D55-44EE-9032-928368583BEC}.Debug|Win32.Build.0 = Debug|Win32 + {6A44952F-0D55-44EE-9032-928368583BEC}.Release|Win32.ActiveCfg = Release|Win32 + {6A44952F-0D55-44EE-9032-928368583BEC}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/externals/iemlib/iemlib2/src/iemlib2.vcproj b/externals/iemlib/iemlib2/src/iemlib2.vcproj new file mode 100644 index 0000000000000000000000000000000000000000..756ccd1d81bdd1305824477a615959d7a973b8c3 --- /dev/null +++ b/externals/iemlib/iemlib2/src/iemlib2.vcproj @@ -0,0 +1,77 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="9,00" + Name="iemlib2" + ProjectGUID="{6A44952F-0D55-44EE-9032-928368583BEC}" + Keyword="MakeFileProj" + TargetFrameworkVersion="131072" + > + <Platforms> + <Platform + Name="Win32" + /> + </Platforms> + <ToolFiles> + </ToolFiles> + <Configurations> + <Configuration + Name="Debug|Win32" + OutputDirectory=".\Debug" + IntermediateDirectory=".\Debug" + ConfigurationType="0" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + ATLMinimizesCRunTimeLibraryUsage="false" + > + <Tool + Name="VCNMakeTool" + BuildCommandLine="NMAKE /f makefile_vc9proj" + ReBuildCommandLine="NMAKE /f makefile_vc9proj /a" + CleanCommandLine="" + Output="iemlib2.exe" + PreprocessorDefinitions="" + IncludeSearchPath="" + ForcedIncludes="" + AssemblySearchPath="" + ForcedUsingAssemblies="" + CompileAsManaged="" + /> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory=".\Release" + IntermediateDirectory=".\Release" + ConfigurationType="0" + InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops" + ATLMinimizesCRunTimeLibraryUsage="false" + > + <Tool + Name="VCNMakeTool" + BuildCommandLine="NMAKE /f makefile_vc9proj" + ReBuildCommandLine="NMAKE /f makefile_vc9proj /a" + CleanCommandLine="" + Output="iemlib2.exe" + PreprocessorDefinitions="" + IncludeSearchPath="" + ForcedIncludes="" + AssemblySearchPath="" + ForcedUsingAssemblies="" + CompileAsManaged="" + /> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <File + RelativePath="iemlib2.bsc" + > + </File> + <File + RelativePath="makefile_vc9proj" + > + </File> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/externals/iemlib/iemlib2/src/makefile b/externals/iemlib/iemlib2/src/makefile index 19e7f635519a3074085dedb804a1810696d668ce..b03afe2aeef0fe0b9ed300f4418dbcd23dc58071 100644 --- a/externals/iemlib/iemlib2/src/makefile +++ b/externals/iemlib/iemlib2/src/makefile @@ -1,4 +1,48 @@ TARGET = iemlib2 + + +SRC = add2_comma.c \ + aspeedlim.c \ + bpe.c \ + dollarg.c \ + exp_inc.c \ + fade~.c \ + float24.c \ + iem_alisttosym.c \ + iem_anything.c \ + iem_append.c \ + iem_blocksize~.c \ + iem_i_route.c \ + iem_pbank_csv.c \ + iem_prepend.c \ + iem_receive.c \ + iem_route.c \ + iem_samplerate~.c \ + iem_sel_any.c \ + iem_send.c \ + iem_symtoalist.c \ + init.c \ + LFO_noise~.c \ + list2send.c \ + m2f~.c \ + mergefilename.c \ + modulo_counter.c \ + parentdollarzero.c \ + post_netreceive.c \ + pre_inlet.c \ + prepend_ascii.c \ + protect_against_open.c \ + receive2list.c \ + round_zero.c \ + speedlim.c \ + splitfilename.c \ + stripfilename.c \ + toggle_mess.c \ + transf_fader.c \ + unsymbol.c \ + wrap.c \ + $(TARGET).c + include ../../Make.include diff --git a/externals/iemlib/iemlib2/src/makefile_d_fat b/externals/iemlib/iemlib2/src/makefile_d_fat index 11701adf3e39f7eed6e238d59367f00eaff501ce..618bef1e369deee1cd9b51cb861c20812b59e6bd 100644 --- a/externals/iemlib/iemlib2/src/makefile_d_fat +++ b/externals/iemlib/iemlib2/src/makefile_d_fat @@ -1,17 +1,24 @@ -current: all - +current: all + .SUFFIXES: .d_fat -PD_INSTALL_PATH ?= "/Applications/Pd.app/Contents/Resources" - -INCLUDE = -I. -I$(PD_INSTALL_PATH)/src - -CFLAGS =-DPD -O2 -Wall -W -Wshadow -Wstrict-prototypes \ - -Wno-unused -Wno-parentheses -Wno-switch - -LFLAGS = -bundle -undefined suppress -flat_namespace - -# the sources +PDSOURCE = "/Applications/Pd.app/Contents/Resources/src" + +IEMLIB_INCLUDE = ../../include + +PD_INCLUDES = -I. -I$(IEMLIB_INCLUDE) -I$(PDSOURCE) + +PD_DEFINES = -DPD +PD_DEFINES += -DHAVE_G_CANVAS_H + +CFLAGS =-O2 -Wall -W -Wshadow -Wstrict-prototypes \ + -Wno-unused -Wno-parentheses -Wno-switch -fPIC + +LFLAGS = -bundle -undefined suppress -flat_namespace + +ARCH_FLAGS=-arch i386 -arch ppc + +# the sources SRC = add2_comma.c \ aspeedlim.c \ @@ -58,26 +65,23 @@ SRC = add2_comma.c \ TARGET = iemlib2.d_fat -OBJ = $(SRC:.c=.o) - -# -# ------------------ targets ------------------------------------ -# - -clean: - rm ../$(TARGET) - rm *.o - -all: $(OBJ) - @echo :: $(OBJ) - $(CC) -arch i386 -arch ppc $(LFLAGS) -o $(TARGET) *.o - strip -S -x $(TARGET) - mv $(TARGET) .. - -$(OBJ) : %.o : %.c - touch $*.c - $(CC) -arch i386 -arch ppc $(CFLAGS) $(INCLUDE) -c -o $*.o $*.c +OBJ = $(SRC:.c=.o) + +# +# ------------------ targets ------------------------------------ +# + +clean: + rm -f ../$(TARGET) + rm -f *.o +all: $(OBJ) + @echo :: $(OBJ) + $(CC) $(ARCH_FLAGS) $(LFLAGS) -o $(TARGET) *.o + strip -S -x $(TARGET) + mv $(TARGET) .. +$(OBJ) : %.o : %.c + $(CC) $(ARCH_FLAGS) $(PD_DEFINES) $(CFLAGS) $(PD_INCLUDES) -c -o $*.o $*.c diff --git a/externals/iemlib/iemlib2/src/makefile_d_ppc b/externals/iemlib/iemlib2/src/makefile_d_ppc index f9b6e25604e2bfa8c01029fffa3111ac329574b3..27356de147330e2ff3f5b0d65395bdd2d92947a7 100644 --- a/externals/iemlib/iemlib2/src/makefile_d_ppc +++ b/externals/iemlib/iemlib2/src/makefile_d_ppc @@ -1,17 +1,17 @@ -current: all - +current: all + .SUFFIXES: .d_ppc -PD_INSTALL_PATH = "/Applications/Pd.app/Contents/Resources" - -INCLUDE = -I. -I$(PD_INSTALL_PATH)/src - -CFLAGS =-DPD -O2 -Wall -W -Wshadow -Wstrict-prototypes \ - -Wno-unused -Wno-parentheses -Wno-switch - -LFLAGS = -bundle -undefined suppress -flat_namespace - -# the sources +PD_INSTALL_PATH = "/Applications/Pd.app/Contents/Resources" + +INCLUDE = -I. -I$(PD_INSTALL_PATH)/src + +CFLAGS =-DPD -DHAVE_G_CANVAS_H -O2 -Wall -W -Wshadow -Wstrict-prototypes \ + -Wno-unused -Wno-parentheses -Wno-switch + +LFLAGS = -bundle -undefined suppress -flat_namespace + +# the sources SRC = add2_comma.c \ aspeedlim.c \ @@ -58,24 +58,24 @@ SRC = add2_comma.c \ TARGET = iemlib2.d_ppc -OBJ = $(SRC:.c=.o) - -# -# ------------------ targets ------------------------------------ -# - -clean: - rm ../$(TARGET) - rm *.o - -all: $(OBJ) - @echo :: $(OBJ) +OBJ = $(SRC:.c=.o) + +# +# ------------------ targets ------------------------------------ +# + +clean: + rm ../$(TARGET) + rm *.o + +all: $(OBJ) + @echo :: $(OBJ) $(CC) $(LFLAGS) -o $(TARGET) *.o - strip -S -x $(TARGET) - mv $(TARGET) .. - -$(OBJ) : %.o : %.c - touch $*.c + strip -S -x $(TARGET) + mv $(TARGET) .. + +$(OBJ) : %.o : %.c + touch $*.c $(CC) $(CFLAGS) $(INCLUDE) -c -o $*.o $*.c diff --git a/externals/iemlib/iemlib2/src/makefile_darwin b/externals/iemlib/iemlib2/src/makefile_darwin index 6b455cf22e3c440869dd9234896c946124d4e8be..eef0bccbf745ece12d748cfebebc86bb4ddd99e7 100644 --- a/externals/iemlib/iemlib2/src/makefile_darwin +++ b/externals/iemlib/iemlib2/src/makefile_darwin @@ -1,22 +1,22 @@ -current: all - +current: all + .SUFFIXES: .pd_darwin -PD_INSTALL_PATH = "/Applications/Pd.app/Contents/Resources" - -INCLUDE = -I. -I$(PD_INSTALL_PATH)/src - -LIB = -ldl -lm -lpthread - -CFLAGS = -DPD -DUNIX -g -Wall -W -Werror -Wno-unused \ - -Wno-parentheses -Wno-switch -O2 -fno-strict-aliasing \ - $(INCLUDE) $(UCFLAGS) $(AFLAGS) \ - -MACOSXLINKFLAGS = -bundle -bundle_loader $(PD_INSTALL_PATH)/bin/pd - -SYSTEM = $(shell uname -m) - -# the sources +PD_INSTALL_PATH = "/Applications/Pd.app/Contents/Resources" + +INCLUDE = -I. -I$(PD_INSTALL_PATH)/src + +LIB = -ldl -lm -lpthread + +CFLAGS = -DPD -DUNIX -DHAVE_G_CANVAS_H -g -Wall -W -Werror -Wno-unused \ + -Wno-parentheses -Wno-switch -O2 -fno-strict-aliasing \ + $(INCLUDE) $(UCFLAGS) $(AFLAGS) \ + +MACOSXLINKFLAGS = -bundle -bundle_loader $(PD_INSTALL_PATH)/bin/pd + +SYSTEM = $(shell uname -m) + +# the sources SRC = add2_comma.c \ aspeedlim.c \ @@ -63,25 +63,25 @@ SRC = add2_comma.c \ TARGET = iemlib2.pd_darwin -OBJ = $(SRC:.c=.o) - -# -# ------------------ targets ------------------------------------ -# - -clean: - rm ../$(TARGET) - rm *.o - -all: $(OBJ) - @echo :: $(OBJ) +OBJ = $(SRC:.c=.o) + +# +# ------------------ targets ------------------------------------ +# + +clean: + rm ../$(TARGET) + rm *.o + +all: $(OBJ) + @echo :: $(OBJ) $(CC) $(MACOSXLINKFLAGS) -o $(TARGET) *.o $(LIB) - strip -S -x $(TARGET) - mv $(TARGET) .. - -$(OBJ) : %.o : %.c - touch $*.c - $(CC) $(CFLAGS) -DPD $(INCLUDE) -c -o $*.o $*.c + strip -S -x $(TARGET) + mv $(TARGET) .. + +$(OBJ) : %.o : %.c + touch $*.c + $(CC) $(CFLAGS) $(INCLUDE) -c -o $*.o $*.c diff --git a/externals/iemlib/iemlib2/src/makefile_linux b/externals/iemlib/iemlib2/src/makefile_linux deleted file mode 100644 index a806606064ec4e699c55e3d7fe567171575411f1..0000000000000000000000000000000000000000 --- a/externals/iemlib/iemlib2/src/makefile_linux +++ /dev/null @@ -1,84 +0,0 @@ -current: all - -.SUFFIXES: .pd_linux - -INCLUDE = -I. -I/usr/local/src/pd/src - -LDFLAGS = -export-dynamic -shared -LIB = -ldl -lm -lpthread - -#select either the DBG and OPT compiler flags below: - -CFLAGS = -DPD -DUNIX -W -Werror -Wno-unused \ - -Wno-parentheses -Wno-switch -O6 -funroll-loops -fomit-frame-pointer -fno-strict-aliasing \ - -DDL_OPEN -fPIC - -SYSTEM = $(shell uname -m) - -# the sources - -SRC = add2_comma.c \ - aspeedlim.c \ - bpe.c \ - dollarg.c \ - exp_inc.c \ - fade~.c \ - float24.c \ - iem_anything.c \ - iem_append.c \ - iem_blocksize~.c \ - iem_i_route.c \ - iem_pbank_csv.c \ - iem_prepend.c \ - iem_receive.c \ - iem_route.c \ - iem_samplerate~.c \ - iem_sel_any.c \ - iem_send.c \ - init.c \ - LFO_noise~.c \ - list2send.c \ - m2f~.c \ - mergefilename.c \ - modulo_counter.c \ - parentdollarzero.c \ - post_netreceive.c \ - pre_inlet.c \ - prepend_ascii.c \ - protect_against_open.c \ - receive2list.c \ - round_zero.c \ - speedlim.c \ - splitfilename.c \ - stripfilename.c \ - toggle_mess.c \ - transf_fader.c \ - unsymbol.c \ - wrap.c \ - iemlib2.c - -TARGET = iemlib2.pd_linux - - -OBJ = $(SRC:.c=.o) - -# -# ------------------ targets ------------------------------------ -# - -clean: - rm ../$(TARGET) - rm *.o - -all: $(OBJ) - @echo :: $(OBJ) - $(LD) $(LDFLAGS) -o $(TARGET) *.o $(LIB) - strip --strip-unneeded $(TARGET) - mv $(TARGET) .. - -$(OBJ) : %.o : %.c - $(CC) $(CFLAGS) $(INCLUDE) -c -o $*.o $*.c - - - - diff --git a/externals/iemlib/iemlib2/src/makefile_vc9proj b/externals/iemlib/iemlib2/src/makefile_vc9proj new file mode 100644 index 0000000000000000000000000000000000000000..276c9f71fcbfc5261016601591685777ca60ff1d --- /dev/null +++ b/externals/iemlib/iemlib2/src/makefile_vc9proj @@ -0,0 +1,70 @@ +TARGET = iemlib2 + +all: ..\$(TARGET).dll + +VIS_CPP_PATH = "C:\Program Files\Microsoft Visual Studio 9.0\VC" +VIS_SDK_PATH = "C:\Program Files\Microsoft SDKs\Windows\v6.0A" +PD_INST_PATH = "C:\Program Files\pd-0.43.0" +PD_WIN_INCLUDE_PATH = /I. /I$(PD_INST_PATH)\src /I$(VIS_CPP_PATH)\include +PD_WIN_C_FLAGS = /nologo /W3 /WX /DMSW /DNT /DPD /DWIN32 /DWINDOWS /DHAVE_G_CANVAS_H /Ox -D_CRT_SECURE_NO_WARNINGS +PD_WIN_L_FLAGS = /nologo + +PD_WIN_LIB = /NODEFAULTLIB:libcmt /NODEFAULTLIB:oldnames /NODEFAULTLIB:kernel32 \ + $(VIS_CPP_PATH)\lib\libcmt.lib \ + $(VIS_CPP_PATH)\lib\oldnames.lib \ + $(VIS_SDK_PATH)\lib\kernel32.lib \ + $(PD_INST_PATH)\bin\pd.lib + +SRC = add2_comma.c \ + aspeedlim.c \ + bpe.c \ + dollarg.c \ + exp_inc.c \ + fade~.c \ + float24.c \ + iem_alisttosym.c \ + iem_anything.c \ + iem_append.c \ + iem_blocksize~.c \ + iem_i_route.c \ + iem_pbank_csv.c \ + iem_prepend.c \ + iem_receive.c \ + iem_route.c \ + iem_samplerate~.c \ + iem_sel_any.c \ + iem_send.c \ + iem_symtoalist.c \ + init.c \ + LFO_noise~.c \ + list2send.c \ + m2f~.c \ + mergefilename.c \ + modulo_counter.c \ + parentdollarzero.c \ + post_netreceive.c \ + pre_inlet.c \ + prepend_ascii.c \ + protect_against_open.c \ + receive2list.c \ + round_zero.c \ + speedlim.c \ + splitfilename.c \ + stripfilename.c \ + toggle_mess.c \ + transf_fader.c \ + unsymbol.c \ + wrap.c \ + $(TARGET).c + +OBJ = $(SRC:.c=.obj) + +.c.obj: + cl $(PD_WIN_C_FLAGS) $(PD_WIN_INCLUDE_PATH) /c $*.c + +..\$(TARGET).dll: $(OBJ) + link $(PD_WIN_L_FLAGS) /dll /export:$(TARGET)_setup \ + /out:..\$(TARGET).dll $(OBJ) $(PD_WIN_LIB) + +clean: + del *.obj diff --git a/externals/iemlib/iemlib2/src/makefile_win b/externals/iemlib/iemlib2/src/makefile_win index 11f37b13036b4cd951fa6a2c111b28db4bb8e157..fe2a0ac5aa8cab3a6e815f9ccea73543105a8f58 100644 --- a/externals/iemlib/iemlib2/src/makefile_win +++ b/externals/iemlib/iemlib2/src/makefile_win @@ -4,7 +4,7 @@ all: ..\$(TARGET).dll VIS_CPP_PATH = "C:\Programme\Microsoft Visual Studio\Vc98" PD_INST_PATH = "C:\Programme\pd" PD_WIN_INCLUDE_PATH = /I. /I$(PD_INST_PATH)\src /I$(VIS_CPP_PATH)\include -PD_WIN_C_FLAGS = /nologo /W3 /WX /DMSW /DNT /DPD /DWIN32 /DWINDOWS /Ox -DPA_LITTLE_ENDIAN +PD_WIN_C_FLAGS = /nologo /W3 /WX /DMSW /DNT /DPD /DWIN32 /DWINDOWS /DHAVE_G_CANVAS_H /Ox -DPA_LITTLE_ENDIAN PD_WIN_L_FLAGS = /nologo PD_WIN_LIB = /NODEFAULTLIB:libc /NODEFAULTLIB:oldnames /NODEFAULTLIB:kernel /NODEFAULTLIB:uuid \ diff --git a/externals/iemlib/iemlib2/src/parentdollarzero.c b/externals/iemlib/iemlib2/src/parentdollarzero.c index 85b79e963c6ca3ac1f7f518337cf050ce0ef8aad..3f209b11d97af6d71167cd7962034e5462019061 100644 --- a/externals/iemlib/iemlib2/src/parentdollarzero.c +++ b/externals/iemlib/iemlib2/src/parentdollarzero.c @@ -5,7 +5,9 @@ iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 #include "m_pd.h" -#include "g_canvas.h" +#ifdef HAVE_G_CANVAS_H +# include "g_canvas.h" +#endif #include "iemlib.h" @@ -30,6 +32,7 @@ static void parentdollarzero_bang(t_parentdollarzero *x) static void *parentdollarzero_new(void) { t_parentdollarzero *x = (t_parentdollarzero *)pd_new(parentdollarzero_class); +#ifdef HAVE_G_CANVAS_H t_glist *glist = (t_glist *)canvas_getcurrent(); t_canvas *this_canvas = glist_getcanvas(glist); @@ -38,6 +41,10 @@ static void *parentdollarzero_new(void) if(x->x_is_there_a_parent) x->s_parent_unique = canvas_realizedollar((t_canvas *)this_canvas->gl_owner, gensym("$0")); else +#else + x->x_is_there_a_parent=0; + error("[parentdollarzero]: compiled without g_canvas.h - cannot work properly!"); +#endif x->s_parent_unique = gensym(""); outlet_new(&x->x_obj, &s_symbol); return (x); diff --git a/externals/iemlib/iemlib2/src/protect_against_open.c b/externals/iemlib/iemlib2/src/protect_against_open.c index fcb27da552c540c9647aeeecb0c88045b55fe5cf..90bfdb91fc1f090f39c6f960ec991ce1083faebe 100644 --- a/externals/iemlib/iemlib2/src/protect_against_open.c +++ b/externals/iemlib/iemlib2/src/protect_against_open.c @@ -6,10 +6,33 @@ iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2006 #include "m_pd.h" #include "iemlib.h" -#include "g_canvas.h" -#include "g_all_guis.h" #include <string.h> +#ifdef HAVE_G_CANVAS_H +# include "g_canvas.h" +#else +/* no g_canvas.h: declare functions and structs ourselves */ +EXTERN t_canvas *glist_getcanvas(t_glist *x); +EXTERN t_symbol *canvas_realizedollar(t_canvas *x, t_symbol *s); +struct _widgetbehavior +{ + t_method w_getrectfn; + t_method w_displacefn; + t_method w_selectfn; + t_method w_activatefn; + t_method w_deletefn; + t_method w_visfn; + t_method w_clickfn; +#if defined(PD_MAJOR_VERSION) && (PD_MINOR_VERSION >= 37) +#else + t_method w_savefn; + t_method w_propertiesfn; +#endif +}; + +#endif + + #ifdef _MSC_VER #include <io.h> #else diff --git a/externals/iemlib/iem_mp3/src/iemlib.h b/externals/iemlib/include/iemlib.h similarity index 76% rename from externals/iemlib/iem_mp3/src/iemlib.h rename to externals/iemlib/include/iemlib.h index 973bfebcd9f46088839bbf5c7af217bc51714dba..ac1ffced384955b34e5156eb8d45b9c18352bafe 100644 --- a/externals/iemlib/iem_mp3/src/iemlib.h +++ b/externals/iemlib/include/iemlib.h @@ -1,12 +1,13 @@ /* For information on usage and redistribution, and for a DISCLAIMER OF ALL * WARRANTIES, see the file, "LICENSE.txt," in this distribution. -iemlib written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2007 */ +iemlib written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2012 */ #ifndef __IEMLIB_H__ #define __IEMLIB_H__ +#define IS_A_NULL(atom,index) ((atom+index)->a_type == A_NULL) #define IS_A_POINTER(atom,index) ((atom+index)->a_type == A_POINTER) #define IS_A_FLOAT(atom,index) ((atom+index)->a_type == A_FLOAT) #define IS_A_SYMBOL(atom,index) ((atom+index)->a_type == A_SYMBOL) @@ -15,6 +16,8 @@ iemlib written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2007 * #define IS_A_SEMI(atom,index) ((atom+index)->a_type == A_SEMI) #define IS_A_COMMA(atom,index) ((atom+index)->a_type == A_COMMA) +#define SETNULL(atom) ((atom)->a_type = A_NULL) + /* now miller's code starts : for 4 point interpolation for lookup tables @@ -53,11 +56,11 @@ extern int sys_noloadbang; #define int32 long #endif /* MSW */ -#if defined(__FreeBSD__) || defined(__APPLE__) +#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__FreeBSD_kernel__) #include <machine/endian.h> #endif -#ifdef __linux__ +#if defined(__linux__) || defined(__CYGWIN__) || defined(__GNU__) || defined(ANDROID) #include <endian.h> #endif @@ -99,4 +102,17 @@ union tabfudge_f #endif +/* on 64bit systems we cannot use garray_getfloatarray... */ +#if ((defined PD_MAJOR_VERSION && defined PD_MINOR_VERSION) && (PD_MAJOR_VERSION > 0 || PD_MINOR_VERSION > 40)) +# define iemarray_t t_word +# define iemarray_getarray garray_getfloatwords +# define iemarray_getfloat(pointer, index) (pointer[index].w_float) +# define iemarray_setfloat(pointer, index, fvalue) (pointer[index].w_float = fvalue) +#else +# define iemarray_t t_float +# define iemarray_getarray garray_getfloatarray +# define iemarray_getfloat(pointer, index) (pointer[index]) +# define iemarray_setfloat(pointer, index, fvalue) (pointer[index] = fvalue) +#endif + #endif diff --git a/externals/pd-l2ork-TODO.txt b/externals/pd-l2ork-TODO.txt index dfc3ab2c4734d19fa7617f57c42dd2c0712b30a8..583cd5e2f1459c71cf3a3f33e6add29cf7007d60 100644 --- a/externals/pd-l2ork-TODO.txt +++ b/externals/pd-l2ork-TODO.txt @@ -1,11 +1,12 @@ Diff status between pd-l2ork externals source tree and main community pd svn -AS OF Sept 7, 2014 +AS OF October 7, 2014 DONE: (*denotes unique changes) creb flatgui (disabled, as all externals have various problems) gem2pdp hcs +iemlib markex maxli4 moonlib