summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2012-08-30 17:17:38 +0200
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2012-08-30 17:17:38 +0200
commit3c19adc8a7d67305631d560ac69a8e6f74f052f8 (patch)
tree3bf7d48107feeaa885425980942667f482e6e639
parentfd7a7851ef99dedf5116dc5dff772445eb670218 (diff)
downloaddigitale-debutanten-3c19adc8a7d67305631d560ac69a8e6f74f052f8.tar.gz
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
-rw-r--r--chugins/Clipper.cpp22
-rw-r--r--chugins/Makefile15
-rw-r--r--lib.ck2
-rw-r--r--lib/ClipperGraph.ck (renamed from lib/Clipper.ck)2
-rwxr-xr-xstart_chuck6
5 files changed, 43 insertions, 4 deletions
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 <chuck_dl.h>
+#include <chuck_def.h>
+
+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/ClipperGraph.ck
index eb45ea2..86e6183 100644
--- a/lib/Clipper.ck
+++ b/lib/ClipperGraph.ck
@@ -1,7 +1,7 @@
/*
* clip signal within -1 to 1 with simple UGens
*/
-public class Clipper extends ChubgraphStd {
+public class ClipperGraph extends ChubgraphStd {
/* calculate a from HalfRect(inlet + 1) */
Step __one; 1 => __one.next;
inlet => HalfRect __a;
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