From 3c19adc8a7d67305631d560ac69a8e6f74f052f8 Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Thu, 30 Aug 2012 17:17:38 +0200 Subject: replace Chubgraph Clipper with Chugin Clipper, giving a significant speed increase * Chubgraph Clipper now available as ClipperGraph * Chugins are built in chugins/ and do not need to be installed * additional command line options to ./start_chuck are passed to chuck --- chugins/Clipper.cpp | 22 ++++++++++++++++++++++ chugins/Makefile | 15 +++++++++++++++ lib.ck | 2 +- lib/Clipper.ck | 20 -------------------- lib/ClipperGraph.ck | 20 ++++++++++++++++++++ start_chuck | 6 ++++-- 6 files changed, 62 insertions(+), 23 deletions(-) create mode 100644 chugins/Clipper.cpp create mode 100644 chugins/Makefile delete mode 100644 lib/Clipper.ck create mode 100644 lib/ClipperGraph.ck diff --git a/chugins/Clipper.cpp b/chugins/Clipper.cpp new file mode 100644 index 0000000..7c80793 --- /dev/null +++ b/chugins/Clipper.cpp @@ -0,0 +1,22 @@ +#include +#include + +CK_DLL_TICK(clipper_tick); + +CK_DLL_QUERY(Clipper) +{ + QUERY->setname(QUERY, "Clipper"); + + QUERY->begin_class(QUERY, "Clipper", "UGen"); + QUERY->add_ugen_func(QUERY, clipper_tick, NULL, 1, 1); + QUERY->end_class(QUERY); + + return TRUE; +} + +CK_DLL_TICK(clipper_tick) +{ + *out = in > 1. ? 1. : (in < -1. ? -1. : in); + + return TRUE; +} diff --git a/chugins/Makefile b/chugins/Makefile new file mode 100644 index 0000000..f75e667 --- /dev/null +++ b/chugins/Makefile @@ -0,0 +1,15 @@ +CFLAGS ?= -O3 + +CFLAGS += -m32 +CPPFLAGS += -I/usr/include/chuck -D__LINUX_JACK__ +LDFLAGS += -m32 + +CXXFLAGS += $(CFLAGS) + +all : Clipper.chug + +%.chug : %.o + $(CXX) -shared $(LDFLAGS) -o $@ $^ + +clean: + $(RM) *.chug *.o diff --git a/lib.ck b/lib.ck index b0bc54c..f5508df 100644 --- a/lib.ck +++ b/lib.ck @@ -2,7 +2,7 @@ Machine.add("lib/ChubgraphStd.ck"); Machine.add("lib/LiSaX.ck"); Machine.add("lib/SampOsc.ck"); -Machine.add("lib/Clipper.ck"); +Machine.add("lib/ClipperGraph.ck"); Machine.add("lib/ClipperGen.ck"); Machine.add("lib/Element.ck"); Machine.add("lib/List.ck"); diff --git a/lib/Clipper.ck b/lib/Clipper.ck deleted file mode 100644 index eb45ea2..0000000 --- a/lib/Clipper.ck +++ /dev/null @@ -1,20 +0,0 @@ -/* - * clip signal within -1 to 1 with simple UGens - */ -public class Clipper extends ChubgraphStd { - /* calculate a from HalfRect(inlet + 1) */ - Step __one; 1 => __one.next; - inlet => HalfRect __a; - __one => __a; - - /* calculate b from HalfRect(2 - HalfRect(inlet + 1)) */ - Step __two; 2 => __two.next; - -1 => __a.gain; - __a => HalfRect __b; - __two => __b; - - /* the result we want: 1 - HalfRect(2 - HalfRect(inlet + 1)) */ - -1 => __b.gain; - __one => outlet; - __b => outlet; -} diff --git a/lib/ClipperGraph.ck b/lib/ClipperGraph.ck new file mode 100644 index 0000000..86e6183 --- /dev/null +++ b/lib/ClipperGraph.ck @@ -0,0 +1,20 @@ +/* + * clip signal within -1 to 1 with simple UGens + */ +public class ClipperGraph extends ChubgraphStd { + /* calculate a from HalfRect(inlet + 1) */ + Step __one; 1 => __one.next; + inlet => HalfRect __a; + __one => __a; + + /* calculate b from HalfRect(2 - HalfRect(inlet + 1)) */ + Step __two; 2 => __two.next; + -1 => __a.gain; + __a => HalfRect __b; + __two => __b; + + /* the result we want: 1 - HalfRect(2 - HalfRect(inlet + 1)) */ + -1 => __b.gain; + __one => outlet; + __b => outlet; +} diff --git a/start_chuck b/start_chuck index 9c4aebf..c711c61 100755 --- a/start_chuck +++ b/start_chuck @@ -11,5 +11,7 @@ jack.scope -n 3 -w 512 -b 96512 >/dev/null & # ChucK server # NOTE: Last three output ports are for jack.scope -chuck --srate:44100 --in:3 --out:7 --loop lib.ck - +chuck $* \ + --srate:44100 --in:3 --out:7 \ + --chugin-path:chugins/ \ + --loop lib.ck -- cgit v1.2.3