aboutsummaryrefslogtreecommitdiff
path: root/externals/grill
diff options
context:
space:
mode:
Diffstat (limited to 'externals/grill')
-rw-r--r--externals/grill/dyn/readme.txt8
-rw-r--r--externals/grill/dyn/src/main.cpp68
-rwxr-xr-xexternals/grill/vasp/pd-ex/granular1.pd20
-rw-r--r--externals/grill/vasp/pd-ex/granular2.pd19
4 files changed, 68 insertions, 47 deletions
diff --git a/externals/grill/dyn/readme.txt b/externals/grill/dyn/readme.txt
index 58d9bc84..5d8a32ae 100644
--- a/externals/grill/dyn/readme.txt
+++ b/externals/grill/dyn/readme.txt
@@ -30,8 +30,15 @@ o GCC: edit "config-pd-darwin.txt" & run "sh build-pd-darwin.sh"
CHANGES:
--------
+0.0.2:
+- give the dyn~ subcanvas a name (hard to access - for the wild scripters out there),
+ so that it is different from the canvas where dyn~ is in
+- corrected names of message in- and out-proxies.
+- manually retrigger DSP after loading an abstraction
+
0.0.1:
- send loadbangs for loaded abstractions
+- now use "dsp" message to enable dsp in sub-canvas (no need of canvas_addtolist, canvas_takefromlist any more)
0.0.0 - initial cvs version
@@ -40,4 +47,5 @@ CHANGES:
TODO:
--------
+- support message boxes (do we need them?)
- Hash table for object tags
diff --git a/externals/grill/dyn/src/main.cpp b/externals/grill/dyn/src/main.cpp
index 6af3e671..01810c4e 100644
--- a/externals/grill/dyn/src/main.cpp
+++ b/externals/grill/dyn/src/main.cpp
@@ -17,7 +17,7 @@ WARRANTIES, see the file, "license.txt," in this distribution.
#error You need at least flext version 0.4.2
#endif
-#define DYN_VERSION "0.0.1"
+#define DYN_VERSION "0.0.3"
#if FLEXT_SYS != FLEXT_SYS_PD
@@ -71,6 +71,7 @@ protected:
void FromCanvas(t_object *o);
virtual bool m_method_(int n,const t_symbol *s,int argc,const t_atom *argv);
+ virtual void m_dsp(int n,t_signalvec const *insigs,t_signalvec const *outsigs);
virtual void m_signal(int n,t_sample *const *insigs,t_sample *const *outsigs);
// proxy object
@@ -202,25 +203,26 @@ load it.. if there is no canvas, PD currently crashes.
How to create the canvas:
-
1) via direct call to canvas_new()
2) a message to pd_canvasmaker
con: does not return a pointer for the created canvas
-
There are two possibilities for the canvas
-
1) make a sub canvas to the one where dyn~ resides:
pro: no problems with environment (abstractions are found and loaded correctly)
- con: canvas must be manually added to the list of canvases so that it gets DSP
- (the respective functions must be exported from PD)
2) make a root canvas:
pro: it will be in the canvas list per default, hence DSP is processed
con: canvas environment must be created manually
(is normally done by pd_canvasmaker if there is a directory set, which is again done somewhere else)
+Enabling DSP on the subcanvas
+1) send it a "dsp" message (see rabin~ by K.Czaja)... but, which signal vector should be taken?
+ -> answer: NONE! (just send NULL)
+2) add it to the list of _root_ canvases (these will be DSP-processed per default)
+ (for this the canvas_addtolist and canvas_takefromlist functions are used)
+ however, it's not clear if this can lead to problems since it is no root-canvas!
-In both cases the 1)s have been chosen as the cleaner solution
+In all cases the 1)s have been chosen as the cleaner solution
*/
dyn::dyn(int argc,const t_atom *argv):
@@ -241,33 +243,26 @@ dyn::dyn(int argc,const t_atom *argv):
int i;
-#ifdef ROOT_CANVAS
- // set NULL for creation of a root canvas
- // so that DSP is called without connections to dyn~ canvas
- canvas_setcurrent(NULL);
-#endif
-
- // make a canvas for dyn~
- canvas = canvas_new(NULL, gensym("canvas"), 0, NULL);
-
-#ifndef ROOT_CANVAS
- canvas_addtolist(canvas);
-#endif
+ // make a sub-canvas for dyn~
+ t_atom arg[6];
+ SetInt(arg[0],0); // xpos
+ SetInt(arg[1],0); // ypos
+ SetInt(arg[2],700); // xwidth
+ SetInt(arg[3],520); // xwidth
+ SetString(arg[4]," dyn~-canvas "); // canvas name
+ SetInt(arg[5],0); // visible
+ canvas = canvas_new(NULL, NULL, 6, arg);
// must do that....
canvas_unsetcurrent(canvas);
-#ifdef ROOT_CANVAS
- canvas_unsetcurrent(NULL);
-#endif
-
pxin = new proxyin *[s_inlets+m_inlets];
for(i = 0; i < s_inlets+m_inlets; ++i) {
bool sig = i < s_inlets;
pxin[i] = (proxyin *)object_new(sig?pxins_class:pxin_class);
pxin[i]->init(this,sig);
t_binbuf *b = binbuf_new();
- binbuf_text(b,"dyn-in~",7);
+ binbuf_text(b,sig?"dyn-in~":"dyn-in",7);
ToCanvas(&pxin[i]->obj,b,i*100,10); // place them left-to-right
}
@@ -277,7 +272,7 @@ dyn::dyn(int argc,const t_atom *argv):
pxout[i] = (proxyout *)object_new(sig?pxouts_class:pxout_class);
pxout[i]->init(this,i,sig);
t_binbuf *b = binbuf_new();
- binbuf_text(b,"dyn-out~",8);
+ binbuf_text(b,sig?"dyn-out~":"dyn-out",8);
ToCanvas(&pxout[i]->obj,b,i*100,500); // place them left-to-right
}
@@ -304,9 +299,6 @@ dyn::~dyn()
}
if(canvas) {
-#ifndef ROOT_CANVAS
- canvas_takeofflist(canvas);
-#endif
pd_free((t_pd *)canvas);
}
}
@@ -328,7 +320,7 @@ void dyn::Add(const t_symbol *n,t_object *ob)
void dyn::ToCanvas(t_object *o,t_binbuf *b,int x,int y)
{
- // add object to the glist.... this is needed to use canvas_deletelinesfor
+ // add object to the glist.... this is needed for graphical representation
// which is needed to have all connections be properly deleted
o->te_binbuf = b;
@@ -402,6 +394,7 @@ void dyn::m_newobj(int _argc_,const t_atom *_argv_)
// send message to object maker
binbuf_eval(b,&pd_objectmaker,0,NULL);
+ // look for latest created object
t_object *x = (t_object *)pd_newest();
if(x) {
// place it
@@ -410,8 +403,15 @@ void dyn::m_newobj(int _argc_,const t_atom *_argv_)
Add(name,x);
// send loadbang (if it is an abstraction)
- if(pd_class(&x->te_g.g_pd) == canvas_class)
+ if(pd_class(&x->te_g.g_pd) == canvas_class) {
+ // loadbang the abstraction
pd_vmess((t_pd *)x,gensym("loadbang"),"");
+
+ // for an abstraction dsp must be restarted
+ // that's necessary because ToCanvas is called manually
+ // (may also be necessary for normal objects in a later PD version)
+ canvas_update_dsp();
+ }
}
else {
post("%s - new: Could not create object",thisName());
@@ -612,6 +612,14 @@ void dyn::proxyout::init(dyn *t,int o,bool s)
}
+void dyn::m_dsp(int n,t_signalvec const *insigs,t_signalvec const *outsigs)
+{
+ // add sub canvas to dsp list (no signal vector to borrow from .. set it to NULL)
+ mess1((t_pd *)canvas, gensym("dsp"),NULL);
+
+ flext_dsp::m_dsp(n,insigs,outsigs);
+}
+
void dyn::m_signal(int n,t_sample *const *insigs,t_sample *const *outsigs)
{
int i;
diff --git a/externals/grill/vasp/pd-ex/granular1.pd b/externals/grill/vasp/pd-ex/granular1.pd
index 2a601fc0..2ef369f9 100755
--- a/externals/grill/vasp/pd-ex/granular1.pd
+++ b/externals/grill/vasp/pd-ex/granular1.pd
@@ -1,4 +1,4 @@
-#N canvas 62 0 628 493 10;
+#N canvas 62 0 630 495 10;
#N canvas 0 0 450 300 graph34 0;
#X array insert 128 float 1;
#A 0 1 0.995185 0.980785 0.95694 0.92388 0.881921 0.83147 0.77301 0.707107
@@ -73,7 +73,6 @@
#X obj 76 333 s \$0-density;
#X obj 204 275 tgl 15 0 empty empty start/stop 0 -6 0 8 -24198 -1 -1
1 1;
-#X text 319 80 this array is insertet at triggering points;
#X obj 76 290 * 0.001;
#X floatatom 241 429 0 0 0 0 - - -;
#X obj 241 407 env~ 32768;
@@ -329,13 +328,14 @@
-1 -1 600 1;
#X obj 204 374 *~ 0.2;
#X text 387 445 needs the zexy library and vasp;
-#X connect 2 0 15 0;
+#X text 319 80 this array is inserted at triggering points;
+#X connect 2 0 14 0;
#X connect 4 0 7 0;
-#X connect 5 0 10 0;
+#X connect 5 0 9 0;
#X connect 8 0 1 0;
-#X connect 10 0 4 0;
-#X connect 12 0 11 0;
-#X connect 14 0 15 1;
-#X connect 15 0 3 0;
-#X connect 15 0 3 1;
-#X connect 15 0 12 0;
+#X connect 9 0 4 0;
+#X connect 11 0 10 0;
+#X connect 13 0 14 1;
+#X connect 14 0 3 0;
+#X connect 14 0 3 1;
+#X connect 14 0 11 0;
diff --git a/externals/grill/vasp/pd-ex/granular2.pd b/externals/grill/vasp/pd-ex/granular2.pd
index a065c25c..cfea7d6c 100644
--- a/externals/grill/vasp/pd-ex/granular2.pd
+++ b/externals/grill/vasp/pd-ex/granular2.pd
@@ -1,4 +1,4 @@
-#N canvas 30 24 706 558 10;
+#N canvas 30 24 708 560 10;
#N canvas 0 0 450 300 graph34 0;
#X array insert 128 float 0;
#X coords 0 1 127 -1 200 140 1;
@@ -6,7 +6,7 @@
#N canvas 339 256 523 452 player 0;
#X obj 228 372 tabplay~ schnipparray;
#X obj 228 396 throw~ toex;
-#X obj 208 45 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+#X obj 208 45 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
;
#X obj 208 76 spigot;
#X obj 104 330 s \$0-part;
@@ -67,11 +67,11 @@
#X obj 204 403 dac~;
#X floatatom 51 318 0 0 0 0 - - -;
#X obj 51 278 nbx 5 14 -1e+037 1e+037 0 1 empty empty empty 0 -6 0
-10 -24198 -1 -1 18.13 256;
+10 -24198 -1 -1 80.13 256;
#X text 51 260 density;
#X obj 51 340 s \$0-density;
#X obj 204 275 tgl 15 0 empty empty start/stop 0 -6 0 8 -24198 -1 -1
-0 1;
+1 1;
#X floatatom 241 430 0 0 0 0 - - -;
#X obj 241 407 env~ 32768;
#N canvas 202 187 293 232 inside 0;
@@ -256,7 +256,7 @@
#X connect 4 0 1 0;
#X connect 5 0 2 0;
#X restore 41 95 pd init;
-#N canvas 409 43 522 372 create_schnippl 0;
+#N canvas 409 43 526 376 create_schnippl 0;
#X msg 155 114 vasp insert;
#X obj 155 182 vasp.u;
#X obj 155 138 vasp.osc 6.4;
@@ -275,8 +275,11 @@
#X obj 273 251 vasp.osc 2;
#X obj 273 271 vasp.*xwindow hamming;
#X obj 355 230 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
-10 -24198 -1 -1 28 256;
+10 -24198 -1 -1 3 256;
#X text 56 71 create various slices to insert;
+#X msg 405 113 vasp insert;
+#X obj 405 161 vasp.u;
+#X obj 405 137 vasp.= 0;
#X connect 0 0 2 0;
#X connect 2 0 12 0;
#X connect 3 0 11 0;
@@ -290,10 +293,12 @@
#X connect 15 0 16 0;
#X connect 16 0 14 0;
#X connect 17 0 15 1;
+#X connect 19 0 21 0;
+#X connect 21 0 20 0;
#X restore 40 47 pd create_schnippl;
#X restore 53 489 pd inside;
#X obj 322 271 vsl 15 100 0 1 0 1 empty empty volume 0 -8 0 8 -24198
--1 -1 3400 1;
+-1 -1 4400 1;
#X obj 204 374 *~ 0.2;
#X text 332 464 needs the zexy library and vasp;
#X obj 51 297 * 0.0001;