diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-12-18 20:55:49 +0100 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-12-18 20:55:49 +0100 |
commit | 46e77b128373ad7d10e004e790f1ff4d4021d4af (patch) | |
tree | 202cec07ab007396ab489bad96349ca4cbcd6dc0 | |
parent | a7278be9668c5f09165f7a673a54dfff324a65a2 (diff) | |
download | digitale-debutanten-46e77b128373ad7d10e004e790f1ff4d4021d4af.tar.gz |
-rw-r--r-- | chugins/Makefile | 3 | ||||
-rw-r--r-- | chugins/SoftClipper.cpp | 28 | ||||
-rw-r--r-- | lib/SoftClipperGen.ck | 10 |
3 files changed, 40 insertions, 1 deletions
diff --git a/chugins/Makefile b/chugins/Makefile index 0aee682..f577e10 100644 --- a/chugins/Makefile +++ b/chugins/Makefile @@ -3,8 +3,9 @@ CFLAGS ?= -O3 CFLAGS += -fPIC CPPFLAGS += -I/usr/include/chuck -D__UNIX_JACK__ -D__LINUX_JACK__ CXXFLAGS += $(CFLAGS) +LDFLAGS += -lm -all : Clipper.chug +all : Clipper.chug SoftClipper.chug %.chug : %.o $(CXX) -shared $(LDFLAGS) -o $@ $^ diff --git a/chugins/SoftClipper.cpp b/chugins/SoftClipper.cpp new file mode 100644 index 0000000..d702576 --- /dev/null +++ b/chugins/SoftClipper.cpp @@ -0,0 +1,28 @@ +#include <math.h> + +#include <chuck_dl.h> +#include <chuck_def.h> + +CK_DLL_TICK(clipper_tick); + +CK_DLL_QUERY(SoftClipper) +{ + QUERY->setname(QUERY, "SoftClipper"); + + QUERY->begin_class(QUERY, "SoftClipper", "UGen"); + QUERY->add_ugen_func(QUERY, clipper_tick, NULL, 1, 1); + QUERY->end_class(QUERY); + + return TRUE; +} + +CK_DLL_TICK(clipper_tick) +{ +#ifdef __CHUCK_USE_64_BIT_SAMPLE__ + *out = atan(in * 2.)/M_PI_2; +#else + *out = atanf(in * 2.)/M_PI_2; +#endif + + return TRUE; +} diff --git a/lib/SoftClipperGen.ck b/lib/SoftClipperGen.ck new file mode 100644 index 0000000..9969cd8 --- /dev/null +++ b/lib/SoftClipperGen.ck @@ -0,0 +1,10 @@ +/* + * soft-clip a signal within -1 to 1 using a Ghugen + */ +public class SoftClipper extends Chugen { + fun float + tick(float in) + { + return Math.atan(in*2)/(Math.PI/2); + } +} |