Re: [PD] Find distance to a line in 3d space
On 05/12/13 23:40, João Pais wrote: Hello list, I had a doubt, will try to explain. I wanted to define a line in a 3d space through 2 points, and be able to find out the distance from another point to that line. Since I'm very bad at math, I wanted to know if anyone has done something similar, or knows how to get to it. http://paulbourke.net/geometry/pointlineplane/ first example on the page, you just need to clamp u to [0..1] if you want to make it work for a line segment instead of an infinite line. Claude As I see it, the process goes this way: - define a line from coordinates x1,y1,z1 to x2,y2,z2 - declare the point x3,y3,z3 - find the distance from that point to the nearest point belonging to the said line Any existing examples with gem rendering would be great. Thanks as usual, jmmmp -- http://mathr.co.uk ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] tabread2~ noisy output
On 29/10/13 12:36, peiman khosravi wrote: An artefact of the sample interpolation perhaps? No, of limited precision in the index: http://lists.puredata.info/pipermail/pd-list/2012-07/097073.html Claude -- http://mathr.co.uk ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] wiki table feedback tutorial link dead
Hi Dan + list, On 18/10/13 22:14, Dan Wilcox wrote: I'm curious about the table feedback tutorial on the puredata.info tutorials wiki page, but the link is dead: http://puredata.info/docs/tutorials?portal_status_message=HowTo%20Read%20HID%20Devices%20in%20Linux%20Without%20Being%20Root%20has%20been%20deleted. I attached a tarball. Thanks, Claude -- http://mathr.co.uk table-feedback.tar.bz2 Description: Binary data ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] RME TotalMix controlled with OSC
On 28/08/13 21:10, Max wrote: hm. since in Pd all numbers are floats printing a 1.0 will show 1 however I can use [makefilename %s.0] which seems to be a possible workaround. [makefilename %f] But then it might be sent as s string instead of a number (whether float or int). What are you using to send OSC? Claude -- http://mathr.co.uk ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] RME TotalMix controlled with OSC
Looking at the source, there seems to be a way to set explicit type tags. I haven't checked the help patch, maybe it is documented there. On 28/08/13 21:26, Dan Wilcox wrote: I was thinking that [packOSC] might be interpreting a non-decimal float as an int, but I don't think so ... There is no other way it could be happening - because messages are arrays of atoms and there are no int atoms: https://sourceforge.net/p/pure-data/svn/17199/tree/trunk/externals/mrpeach/osc/packOSC.c#l578 Claude -- http://mathr.co.uk ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Worse performance with -nogui.
Hi Mario, I think you might be being bitten by this bug, though I'm not 100% sure. On 15/08/13 05:22, Mario Mey wrote: Then, I realized that that noise is there only with -nogui option. Using GUI, it sounds great. Is this a known issue? Some versions of Pd have a bug where the sample rate isn't set correctly during initialisation before loading patches. This can cause all kinds of strange problems (delay lines having the wrong length, externals crashing...). A workaround is to load your patches using a loader patch like [loadbang]-[delay 0]-[;pd -open your-real-patch.pd path/to/patch( The attached onload.pd provides a more general approach, but needs at least pd-0.39 (December 2005) to work properly. As you can see in this test log, Miller's pd 0.41, 0.42, 0.43 have problems - earlier and later versions seem fine. I couldn't test any pd-extended versions (someone with a few versions installed wants to try?) but pd-l2ork git master is buggy too. $ ./samplerate~-test.sh ~/opt/pd/*/bin/pd Pd version 0.38.4 compiled 08:16:18 Aug 15 2013 SR: 44100 list prepend add ... couldn't create error: inlet: expected '' but got 'pd' ... you might be able to track this down from the Find menu. error: inlet: expected '' but got 'pd' couldn't open MIDI input device 0 couldn't open MIDI output device 0 opened 0 MIDI input device(s) and 0 MIDI output device(s). Pd version 0.39-2 compiled 08:16:43 Aug 15 2013 SR: 44100 SR: 44100 Pd version 0.40-3 compiled 08:17:08 Aug 15 2013 SR: 44100 SR: 44100 Pd version 0.41-4 compiled 08:17:23 Aug 15 2013 SR: 0 SR: 44100 Pd version 0.42-5 compiled 08:17:45 Aug 15 2013 SR: 0 SR: 44100 Pd-0.43.4 () compiled 08:18:09 Aug 15 2013 SR: 0 SR: 44100 Pd-0.44.3 () compiled 08:20:19 Aug 15 2013 SR: 44100 SR: 44100 Claude -- http://mathr.co.uk #N canvas 0 0 298 185 10; #X obj 96 29 r onload; #X obj 96 57 list prepend add; #X obj 96 81 list trim; #X obj 35 29 loadbang; #X obj 35 50 delay 0; #X obj 96 111 qlist; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 5 0; #X connect 3 0 4 0; #X connect 4 0 5 0; #N canvas 3 44 450 300 10; #X obj 93 51 loadbang; #X obj 93 73 samplerate~; #X obj 93 95 print SR; #X connect 0 0 1 0; #X connect 1 0 2 0; samplerate~-test.sh Description: application/shellscript ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Worse performance with -nogui.
On 15/08/13 05:22, Mario Mey wrote: I'm using Pd-Extended 0.43.4 Nevermind what I said in my earlier reply, this version doesn't have that particular bug (but 0.41 and 0.42 extended do, and so does pd-l2ork git master as of today): Pd version 0.41-4extended compiled 17:56:28 Aug 15 2013 SR: 0 SR: 44100 Pd version 0.42-5extended compiled 13:25:06 Aug 15 2013 SR: 0 SR: 44100 Pd-0.43.4 (extended) compiled 12:23:46 Aug 15 2013 SR: 44100 SR: 44100 Pd-l2ork version 20130724 compiled 18:10:00 Aug 15 2013 SR: 0 SR: 44100 Claude -- http://mathr.co.uk ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Worse performance with -nogui.
Hi, On 15/08/13 20:35, Mario Mey wrote: I don't understand what SR is. Why 0 and 44100? Ah sorry for being unclear - the first one is the output of [samplerate~] when a patch is loaded from the command line, the second is the outut when the patch is loaded after a [delay]. See the attachments in my other reply: http://lists.puredata.info/pipermail/pd-list/2013-08/103730.html If it's ever 0, that might cause problems. Anyway, this bug is fixed in the latest pd and pd-extended (which you are using), sorry for the noise. El 15/08/13 14:11, Claude Heiland-Allen escribió: On 15/08/13 05:22, Mario Mey wrote: I'm using Pd-Extended 0.43.4 Nevermind what I said in my earlier reply, this version doesn't have that particular bug (but 0.41 and 0.42 extended do, and so does pd-l2ork git master as of today): Pd version 0.41-4extended compiled 17:56:28 Aug 15 2013 SR: 0 SR: 44100 Pd version 0.42-5extended compiled 13:25:06 Aug 15 2013 SR: 0 SR: 44100 Pd-0.43.4 (extended) compiled 12:23:46 Aug 15 2013 SR: 44100 SR: 44100 Pd-l2ork version 20130724 compiled 18:10:00 Aug 15 2013 SR: 0 SR: 44100 Claude -- http://mathr.co.uk ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] abstraction penalty benchmarks
Hi, On 09/08/13 04:27, Miller Puckette wrote: Here's a guess - I think each copy of the abstraction binds itself to a symbol, pd-name. Binding is fast bt unbinding is linear-time in the number of things bound to the symbol... ouch. Yes, I think that's it: git master from yesterday Pd-0.45.0 (test) compiled 17:10:02 Aug 8 2013 patch bench opendsp saveclose small 4.6e-05 38.775 1.34085 44.326 4.012 medium 5.2e-05 314.812 10.2582 715.956 144.512 large 4.7e-05 2639.28 85.3561 78711.5 35918 git master, lightly patched with the attached Pd-0.45.0 (test) compiled 14:36:39 Aug 9 2013 patch bench opendsp saveclose small 4.3e-05 36.167 1.31707 39.657 3.447 medium 4.4e-05 291.52 9.8958 327.389 18.067 large 4.3e-05 2443.07 82.0808 3628.66 224.972 There's a good reason to bind toplevels and named sub-patches to ther names, but I think there's little reason to do it for abstractions - perhaps I can take this out, but I'd have to leave it as an option for compatibility (ouch!) The attached patch doesn't do this, but it should be easy to add a global compatibility flag to the new canvas_should_bind() function. Toplevel patches are still bound to pd-name.pd and subpatches [pd name] are still bound to pd-name; it's just abstraction instances that no longer have the automatic binding. On Thu, Aug 08, 2013 at 10:46:24PM -0400, Jonathan Wilkes wrote: On 08/08/2013 04:57 PM, Claude Heiland-Allen wrote: [snip] The killer in the bottom right corner: with 8x as many abstractions, it takes 100x as long to save an instance, and 200x as long to close the patch. [snip] Any idea why save is so much greater than close + open? I think Miller had the answer. Also, any idea what pd is doing for the bulk of that time when I haven't profiled yet (I had trouble even getting debug symbols into an installed Pd with the autoconf system, no success yet..), so the following are just guesses: saving searching for copies of the abstraction to reload, then reloading them via some select/cut/undo method (which preserves connections). also unbinding symbols... closing calling all the destructors. also unbinding symbols... opening refinding/reloading/reparsing/reinstantiating all the abstractions (I need to relocate my abstraction cache patches and update them to current Pd) dsp'ing? traversing each canvas to topologically sort its dsp objects and build the dsp chain - which gets resizebytes() each time something is added, could make it O(log(N)) count of resizes (doubling the size each time) but I tried it and it saved about 9 microseconds, not worth the extra complexity... Claude -- http://mathr.co.uk From 16fd46b3abe83dba956b78385d01ad19737b6c76 Mon Sep 17 00:00:00 2001 From: Claude Heiland-Allen cla...@mathr.co.uk Date: Fri, 9 Aug 2013 14:57:14 +0100 Subject: [PATCH] don't bind abstraction instances to pd-filename --- src/g_canvas.c | 39 +-- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/src/g_canvas.c b/src/g_canvas.c index 804ac57..c7a22d6 100644 --- a/src/g_canvas.c +++ b/src/g_canvas.c @@ -55,6 +55,9 @@ void canvas_reflecttitle(t_canvas *x); static void canvas_addtolist(t_canvas *x); static void canvas_takeofflist(t_canvas *x); static void canvas_pop(t_canvas *x, t_floatarg fvis); +static int canvas_should_bind(t_canvas *x); +static void canvas_bind(t_canvas *x); +static void canvas_unbind(t_canvas *x); /* - functions to handle the canvas environment --- */ @@ -205,11 +208,9 @@ void canvas_makefilename(t_canvas *x, char *file, char *result, int resultsize) void canvas_rename(t_canvas *x, t_symbol *s, t_symbol *dir) { -if (strcmp(x-gl_name-s_name, Pd)) -pd_unbind(x-gl_pd, canvas_makebindsym(x-gl_name)); +canvas_unbind(x); x-gl_name = s; -if (strcmp(x-gl_name-s_name, Pd)) -pd_bind(x-gl_pd, canvas_makebindsym(x-gl_name)); +canvas_bind(x); if (x-gl_havewindow) canvas_reflecttitle(x); if (dir dir != s_) @@ -379,8 +380,7 @@ t_canvas *canvas_new(void *dummy, t_symbol *sel, int argc, t_atom *argv) x-gl_owner = owner; x-gl_name = (*s-s_name ? s : (canvas_newfilename ? canvas_newfilename : gensym(Pd))); -if (strcmp(x-gl_name-s_name, Pd)) -pd_bind(x-gl_pd, canvas_makebindsym(x-gl_name)); +canvas_bind(x); x-gl_loading = 1; x-gl_goprect = 0; /* no GOP rectangle unless it's turned on later */ /* cancel vis flag if we're a subpatch of an @@ -479,9 +479,8 @@ t_glist *glist_addglist(t_glist *g, t_symbol *sym, x-gl_screeny1 = GLIST_DEFCANVASYLOC; x-gl_screenx2 = 450; x-gl_screeny2 = 300; -if (strcmp(x-gl_name-s_name, Pd)) -pd_bind(x-gl_pd, canvas_makebindsym(x-gl_name)); x-gl_owner = g; +canvas_bind(x); x-gl_isgraph = 1; x-gl_goprect = 0; x-gl_obj.te_binbuf = binbuf_new(); @@ -723,8 +722,7 @@ void canvas_free(t_canvas
Re: [PD] abstraction penalty benchmarks
On 09/08/13 19:42, Miller Puckette wrote: There still could be situations where an abstraction has a sub-patch (pd foo for instance) - I'm not clear as to whether those namings should be supressed as well. It seems like a tricky problem - lots of people seem to use abstractions with only one instance and might be depending on the bindings. Maybe the best fix would be to make pd_unbind() constant time (perhaps by storing bindings in a doubly-linked list instead of a singly-linked list) and be done with it, instead of hacking workarounds.. Claude -- http://mathr.co.uk ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] abstraction penalty benchmarks
Hi, I looked at accelerating* pd_unbind(), but it seems impossible without breaking binary compatibility somewhere along the line. There's simply no space to store any implementation-private data in objects, as an object is just a pointer to a class. *by making a parallel bindlist per object that points to nodes in a doubly linked bindlist per symbol, so pd_unbind(object, symbol) takes O(symbols per object) instead of O(objects per symbol), with the former number generally much smaller than the latter number (at least in my experience - are there any externals that bind to a large number of symbols? I did write one in Lua, but iirc pdlua uses one proxy object for each binding, so that it can tell which symbol was the target of the message). Claude On 10/08/13 01:06, Ivica Bukvic wrote: When and if such patch is implemented please do let us know as I would like to implement it in pd-l2ork as well. Best wishes, Ico On Aug 9, 2013 8:03 PM, Miller Puckette m...@ucsd.edu wrote: Well, if ia user really wants 32K receives of the same name, (s)he can have them - but most people won't want to do that. In contrast, you can't have 32K copies of an abstraction without hitting this problem - and the business of binding patches to names is only rarely actually used. So (I'm now thinking) Pd should make it easy to defeat that useless behavior. cheers M On Fri, Aug 09, 2013 at 07:11:02PM -0400, Jonathan Wilkes wrote: On 08/09/2013 04:31 PM, Miller Puckette wrote: Or... just limit the number of canvases that can bind themselves to a single symbol to a reasonable number (5 or so, settable by flag for back-compatibility if anyone cares). What happens to Claude's test if you a) patch Pd to stop binding pd-abstractionName.pd, and b) put a [receive pd-abstractionName.pd] inside the abstraction that's getting massively replicated? I'd hypothesize that you end up with the same or closely similar problem, no? If so then messing with the abstraction name binding risks introducing bugs or breaking some strange but interesting patches, and doesn't solve the larger problem which becomes anxiety about [s]/[r] pairs or any other nonlocal connection objects inside abstractions. -Jonathan cheers M On Fri, Aug 09, 2013 at 07:51:30PM +0100, Claude Heiland-Allen wrote: On 09/08/13 19:42, Miller Puckette wrote: There still could be situations where an abstraction has a sub-patch (pd foo for instance) - I'm not clear as to whether those namings should be supressed as well. It seems like a tricky problem - lots of people seem to use abstractions with only one instance and might be depending on the bindings. Maybe the best fix would be to make pd_unbind() constant time (perhaps by storing bindings in a doubly-linked list instead of a singly-linked list) and be done with it, instead of hacking workarounds.. Claude -- http://mathr.co.uk ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
[PD] abstraction penalty benchmarks
Hi, Today I remembered one performance where I saved an abstraction with many instances, bringing things to a halt. So I benchmarked this scenario and some similar ones - some seem to scale very badly. pure-data.git gcc-4.8.1 GNU/Linux/Debian/Wheezy amd64 64bit Pd-0.45.0 (test) compiled 17:10:02 Aug 8 2013 m n open dsp save close 351238.503 1.33879 44.26 3.985 4 4096 324.507 10.7379 786.227150.602 5 32768 2611.92 85.40579234.235853 keydescription m number of levels of nested abstractions n total number of instances at deepest level open time to load patch dsptime to toggle dsp on then off (1000 runs averaged) save time to save one instance at deepest level close time to close patch all times are in ms, measured with [realtime] rows run sequentially in their own pd instance dsp was off at the start of each test the whole run is in zero logical time cpu frequency scaling was disabled (for real) pd was run with -nogui -nosound -nrt The killer in the bottom right corner: with 8x as many abstractions, it takes 100x as long to save an instance, and 200x as long to close the patch. See attached tarball if you want to try it yourself. Claude -- http://mathr.co.uk benchmark.tar.bz2 Description: Binary data ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Read from and write to an array at once (?!?)
On 03/08/13 17:11, Pierre Massat wrote: Well, I just discovered that it was actually possible to read from and write to the same array at the same time. I thought it was impossible (i'd never even tried, to be honest). So here's my (probably stupid) question : is this a feature ? Yes, it works fine due to the topological sort of the DSP graph into a DSP chain - but DSP is block-based, so be aware that each block is read as a whole before it is written - this probably only matters if you wanted to write to a different location for non-block-sized feedback effects. Also you might have little glitchy issues when table length isn't an exact multiple of the block size. There are some examples of [tabreceive~]--stuff--[tabsend~] in the docs, probably in the FFT section of the manual. A simple looper might be a [tabplay~]--stuff--[tabwrite~] thing with the tabplay~ and tabwrite~ both triggered from the same source, and retriggerd by the tabplay~ done bang... If it is that could probably explain why I didn't find much about loopers in Pd, since it is very straightforward. Claude -- http://mathr.co.uk ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] tabread4 interpolation
On 22/07/13 10:47, J Oliver wrote: Where can I find the code for tabread4? Does someone have any lights on how this interpolation is implemented? See also this (quite long) thread: http://lists.puredata.info/pipermail/pd-list/2010-03/077278.html Claude -- http://mathr.co.uk ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] offline rendering?
On 15/06/13 09:53, Jeppi Jeppi wrote: would you think it could be a way for pd to generate audio to file faster than realtime? pd -batch ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] GEM: texture on transparent sphere visible from opposite side
Hi, On 08/06/13 14:48, Matthias Kronlachner wrote: i have a texture on a sphere and slightly add transparency to the sphere. i can now see objects behind the sphere, but is it possible to make the texture of the opposite side of the sphere visible? (through the (semitransparent) front side of the sphere) Short answer: no. Long answer: no, because transparency and OpenGL don't quite get along as nicely as you might expect. Rendering order (of every triangle that makes up every object) matters a great deal. Transparency involves blending the current triangle with whatever is behind it. OpenGL uses its depth buffer to keep track of what's been drawn and how far away it is at each pixel - keeping only the nearest value - whether it was rasterized before or after the previous triangle. You need to draw non-transparent stuff first, then sort every transparent triangle into depth order, possiby splitting up any transparent triangles that intersect each other into smaller triangles, then render them in order urthest from camera first, nearest to camera last. I'm pretty sure that Gem doesn't support depth sorting. You might be able to hack it and get something that looks mostly ok some of the time by rotating the sphere to change the depth order vs render order of the triangles making up the sphere, but it will be very fragile... Claude -- http://mathr.co.uk ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Lowpass to Highpass morph
obj 702 476 sin; #X obj 677 322 t f f; #X obj 677 343 * 2; #X obj 677 364 + 12; #X obj 675 499 tabwrite \$0-cos; #X obj 707 523 tabwrite \$0-sin; #X obj 678 148 table \$0-cos 64; #X obj 678 169 table \$0-sin 64; #X floatatom 569 468 8 0 0 0 - - -; #X obj 483 568 tabsend~ \$0-response; #X msg 530 358 clear \, set 0; #X msg 697 260 0; #X obj 484 494 /~; #X obj 484 541 /~ 100; #X obj 484 520 rmstodb~; #X obj 483 347 sqrt~; #X obj 508 379 fexpr~ max($x \, $y); #X obj 114 287 clip 0 1; #X obj 179 288 clip 0 1; #X text 339 218 angular frequency for plot; #X text 372 284 accumulated gain^2; #X text 501 306 calculate peak gain \; plot amplitude response; #X text 654 126 calculate angular frequency input; #X floatatom 83 65 5 0 0 0 - - -; #X text 53 491 z-plane filter adjustable high/low shelving \; Claude Heiland-Allen 2013-04-22 cla...@mathr.co.uk; #X text 65 418 calculate pole/zero locations; #X connect 0 0 37 0; #X connect 2 0 5 0; #X connect 2 0 29 0; #X connect 3 0 7 1; #X connect 3 0 9 1; #X connect 4 0 3 0; #X connect 6 0 23 0; #X connect 7 0 72 0; #X connect 8 0 29 0; #X connect 8 1 29 1; #X connect 9 0 73 0; #X connect 10 0 12 0; #X connect 10 0 13 0; #X connect 11 0 14 0; #X connect 11 0 15 0; #X connect 12 0 16 0; #X connect 13 0 17 0; #X connect 14 0 18 0; #X connect 15 0 19 0; #X connect 16 0 37 5; #X connect 17 0 37 6; #X connect 18 0 36 5; #X connect 19 0 36 6; #X connect 20 0 21 0; #X connect 21 0 22 0; #X connect 21 0 30 0; #X connect 23 0 8 0; #X connect 23 0 78 0; #X connect 24 0 7 0; #X connect 25 0 9 0; #X connect 26 0 24 0; #X connect 27 0 25 0; #X connect 29 0 32 0; #X connect 30 0 29 0; #X connect 30 1 29 2; #X connect 31 0 26 0; #X connect 31 0 27 0; #X connect 32 1 31 0; #X connect 32 2 33 0; #X connect 33 0 19 1; #X connect 33 0 18 1; #X connect 33 0 17 1; #X connect 33 0 16 1; #X connect 34 0 37 2; #X connect 35 0 37 3; #X connect 36 0 38 0; #X connect 36 4 70 0; #X connect 37 0 36 0; #X connect 37 1 36 1; #X connect 37 2 36 2; #X connect 37 3 36 3; #X connect 37 4 36 4; #X connect 38 0 1 1; #X connect 38 0 1 0; #X connect 39 0 37 4; #X connect 40 0 65 0; #X connect 40 0 41 0; #X connect 41 0 42 0; #X connect 41 0 63 0; #X connect 42 0 38 1; #X connect 42 0 67 1; #X connect 43 0 44 0; #X connect 44 0 49 0; #X connect 45 0 46 0; #X connect 46 0 51 0; #X connect 46 0 56 0; #X connect 47 0 50 0; #X connect 48 0 50 1; #X connect 49 0 45 0; #X connect 49 1 48 0; #X connect 49 1 66 0; #X connect 50 0 52 0; #X connect 51 0 46 1; #X connect 52 0 53 0; #X connect 53 0 54 0; #X connect 53 1 55 0; #X connect 54 0 59 0; #X connect 55 0 60 0; #X connect 56 0 57 0; #X connect 56 1 59 1; #X connect 56 1 60 1; #X connect 57 0 58 0; #X connect 58 0 47 0; #X connect 65 0 71 0; #X connect 66 0 46 1; #X connect 67 0 69 0; #X connect 68 0 64 0; #X connect 69 0 68 0; #X connect 70 0 67 0; #X connect 70 0 71 0; #X connect 71 0 41 0; #X connect 72 0 10 0; #X connect 73 0 11 0; ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Nikon DSLR Capture with Pd
Hi, On 02/04/13 15:38, me.grimm wrote: Has anyone been able to capture images from a Nikon DSLR with Pd? gphoto is a library for interfacing with cameras [0] Ben Bogart wrote a gphoto external for Pd [1] gphoto does probably work on OS X [2] gphoto for Pd's makefile is only for Linux [3] so at least some build system hacking is required, possibly more in depth code changes (if gphoto external for Pd has bitrotted out of sync with current versions of gphoto library) [0] http://gphoto.sourceforge.net/ [1] http://puredata.info/downloads/gphoto [2] http://blog.dcclark.net/2009/05/how-to-gphoto-primer.html [3] https://pure-data.svn.sourceforge.net/svnroot/pure-data/trunk/externals/bbogart/gphoto/makefile Claude I have a student who is able to control her dslr with osx image capture (space bar takes an image) but we can not seem to figure out how to capture directly with/to pd OR even trigger image capture with pd might work also for now BTW this is through the USB cable. thinking out loud - can pd send a system wide event like space bar though shell maybe to image capture? that is if pd can not control dslr directly m -- http://mathr.co.uk ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Pd fonts
On 15/10/12 08:23, Ed Kelly wrote: I've tried various -font-face arguments: $ pd -font-face DejaVu Sans Mono (note the quotes) works for me (at least it looks different from the default) with $ pd -version Pd version 0.42-6 compiled 08:43:13 Mar 19 2012 Hope this helps, Claude -- http://mathr.co.uk ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] [GEM] pix_mano and latest linux kernels
On 14/10/12 21:23, Jaime Oliver wrote: OK, so I got it running and the crash is always in line 727: Program received signal SIGSEGV, Segmentation fault. 0x7fffe18f8418 in pix_mano::processGrayImage (this=optimized out, image=...) at pix_mano.cpp:727 727 if (base[chGray + xcoord] == 80) { // if we find a point (gdb) watchdog: signaling pd... watchdog: signaling pd... Now, I know where that is, but I just don't understand how there can be a problem with this. Or what the problem is for that matter. base could be null or other invalid memory address or (chGray + xcoord) could be outside valid memory when offset by base. I mean, I am merely doing a test that the external does all the time. You're doing several things in that line: computing (chGray + xcoord) * sizeof(array type of base) then reading a number of bytes from that memory location, then comparing it to 80, and then testing the result. The reading from that memory location part is what generally causes SIGSEGV. Furthermore, it doesn't crash in earlier linux versions... Assuming identical Gem version (otherwise it could be internal Gem changes breaking previously sensible code): Probably coincidence, unless xcoord is coming from some kernel driver, or the memory layout is different in such a way that a previously masked bug now causes problems. Any suggestions? first, run with -nrt to avoid watchdog spam. Then in gdb, info locals, print base, print xcoord, help, etc Claude -- http://mathr.co.uk ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Parsing .pd file to get dependency graph
On 12/10/12 14:10, Jamie Bullock wrote: Has anyone written a script to parse a .pd files and get its full tree of dependencies (externals and abstractions)? Vaguely started something like this in 2008, attached are some almost-trivial bash scripts etc. Not very robust, but it's a start. Doesn't work recursively yet (so no dependency tree). Feel free to modify/extend/etc, consider it under the same license as Pd itself. Claude -- http://mathr.co.uk abstractions.sh Description: application/shellscript externals.sh Description: application/shellscript accumrotate alpha ambient ambientRGB camera circle color colorRGB colorSquare colour colourRGB cone cube cuboid curve curve3d cylinder depth diffuse diffuseRGB disk emission emissionRGB fragment_program Gem gemframebuffer GEMglAccum GEMglActiveTextureARB GEMglAlphaFunc GEMglAreTexturesResident GEMglArrayElement GEMglBegin GEMglBindProgramARB GEMglBindTexture GEMglBitmap GEMglBlendEquation GEMglBlendFunc GEMglCallList GEMglClear GEMglClearAccum GEMglClearColor GEMglClearDepth GEMglClearIndex GEMglClearStencil GEMglClipPlane GEMglColor3b GEMglColor3bv GEMglColor3d GEMglColor3dv GEMglColor3f GEMglColor3fv GEMglColor3i GEMglColor3iv GEMglColor3s GEMglColor3sv GEMglColor3ub GEMglColor3ubv GEMglColor3ui GEMglColor3uiv GEMglColor3us GEMglColor3usv GEMglColor4b GEMglColor4bv GEMglColor4d GEMglColor4dv GEMglColor4f GEMglColor4fv GEMglColor4i GEMglColor4iv GEMglColor4s GEMglColor4sv GEMglColor4ub GEMglColor4ubv GEMglColor4ui GEMglColor4uiv GEMglColor4us GEMglColor4usv GEMglColorMask GEMglColorMaterial GEMglCopyPixels GEMglCopyTexImage1D GEMglCopyTexImage2D GEMglCopyTexSubImage1D GEMglCopyTexSubImage2D GEMglCullFace GEMglDeleteTextures GEMglDepthFunc GEMglDepthMask GEMglDepthRange GEMglDisable GEMglDisableClientState GEMglDrawArrays GEMglDrawBuffer GEMglDrawElements GEMglEdgeFlag GEMglEnable GEMglEnableClientState GEMglEnd GEMglEndList GEMglEvalCoord1d GEMglEvalCoord1dv GEMglEvalCoord1f GEMglEvalCoord1fv GEMglEvalCoord2d GEMglEvalCoord2dv GEMglEvalCoord2f GEMglEvalCoord2fv GEMglEvalMesh1 GEMglEvalMesh2 GEMglEvalPoint1 GEMglEvalPoint2 GEMglFeedbackBuffer GEMglFinish GEMglFlush GEMglFogf GEMglFogfv GEMglFogi GEMglFogiv GEMglFrontFace GEMglFrustum GEMglGenLists GEMglGenProgramsARB GEMglGenTextures GEMglGetError GEMglGetFloatv GEMglGetMapdv GEMglGetMapfv GEMglGetMapiv GEMglGetPointerv GEMglGetString GEMglHint GEMglIndexd GEMglIndexdv GEMglIndexf GEMglIndexfv GEMglIndexi GEMglIndexiv GEMglIndexMask GEMglIndexs GEMglIndexsv GEMglIndexub GEMglIndexubv GEMglInitNames GEMglIsEnabled GEMglIsList GEMglIsTexture GEMglLightf GEMglLighti GEMglLightModelf GEMglLightModeli GEMglLineStipple GEMglLineWidth GEMglLoadIdentity GEMglLoadMatrixd GEMglLoadMatrixf GEMglLoadName GEMglLoadTransposeMatrixd GEMglLoadTransposeMatrixf GEMglLogicOp GEMglMap1d GEMglMap1f GEMglMap2d GEMglMap2f GEMglMapGrid1d GEMglMapGrid1f GEMglMapGrid2d GEMglMapGrid2f GEMglMaterialf GEMglMateriali GEMglMatrixMode GEMglMultiTexCoord2fARB GEMglMultMatrixd GEMglMultMatrixf GEMglMultTransposeMatrixd GEMglMultTransposeMatrixf GEMglNewList GEMglNormal3b GEMglNormal3bv GEMglNormal3d GEMglNormal3dv GEMglNormal3f GEMglNormal3fv GEMglNormal3i GEMglNormal3iv GEMglNormal3s GEMglNormal3sv GEMglOrtho GEMglPassThrough GEMglPixelStoref GEMglPixelStorei GEMglPixelTransferf GEMglPixelTransferi GEMglPixelZoom GEMglPointSize GEMglPolygonMode GEMglPolygonOffset GEMglPopAttrib GEMglPopClientAttrib GEMglPopMatrix GEMglPopName GEMglPrioritizeTextures GEMglProgramEnvParameter4dARB GEMglProgramEnvParameter4fvARB GEMglProgramLocalParameter4fvARB GEMglProgramStringARB GEMglPushAttrib GEMglPushClientAttrib GEMglPushMatrix GEMglPushName GEMglRasterPos2d GEMglRasterPos2dv GEMglRasterPos2f GEMglRasterPos2fv GEMglRasterPos2i GEMglRasterPos2iv GEMglRasterPos2s GEMglRasterPos2sv GEMglRasterPos3d GEMglRasterPos3dv GEMglRasterPos3f GEMglRasterPos3fv GEMglRasterPos3i GEMglRasterPos3iv GEMglRasterPos3s GEMglRasterPos3sv GEMglRasterPos4d GEMglRasterPos4dv GEMglRasterPos4f GEMglRasterPos4fv GEMglRasterPos4i GEMglRasterPos4iv GEMglRasterPos4s GEMglRasterPos4sv GEMglRectd GEMglRectf GEMglRecti GEMglRects GEMglRenderMode GEMglRotated GEMglRotatef GEMglScaled GEMglScalef GEMglScissor GEMglSelectBuffer GEMglShadeModel GEMglStencilFunc GEMglStencilMask GEMglStencilOp GEMglTexCoord1d GEMglTexCoord1dv GEMglTexCoord1f GEMglTexCoord1fv GEMglTexCoord1i GEMglTexCoord1iv GEMglTexCoord1s GEMglTexCoord1sv GEMglTexCoord2d GEMglTexCoord2dv GEMglTexCoord2f GEMglTexCoord2fv GEMglTexCoord2i GEMglTexCoord2iv GEMglTexCoord2s GEMglTexCoord2sv GEMglTexCoord3d GEMglTexCoord3dv GEMglTexCoord3f GEMglTexCoord3fv GEMglTexCoord3i GEMglTexCoord3iv GEMglTexCoord3s GEMglTexCoord3sv GEMglTexCoord4d GEMglTexCoord4dv GEMglTexCoord4f GEMglTexCoord4fv GEMglTexCoord4i GEMglTexCoord4iv GEMglTexCoord4s GEMglTexCoord4sv GEMglTexEnvf GEMglTexEnvi GEMglTexGend GEMglTexGenf GEMglTexGenfv GEMglTexGeni GEMglTexParameterf GEMglTexParameteri GEMglTexSubImage1D GEMglTexSubImage2D
Re: [PD] Shifting arrays (permutation)
On 10/10/12 12:51, Rick T wrote: Greets All I was looking for a way to shift arrays (permutation) by samples (permutation generally refers to something more general than shifting or rotating, more like shuffling a deck of cards than cutting it) Personally I keep all my vline~ in [0..1] and use maths to manipulate. Especially because (vanilla's, zexy has a better one)b [wrap~] wraps to [0..1], and could be help do what you need: [0, 1 1000( | [vline~] | [+~ 0.25] -- this value in [0..1] too, modulatable at signal rate | [wrap~] | [*~ table size here] | [tabread4~ your table hear] will play the table wrapped around starting with the last 3/4 then first 1/4 To convert between samples and [0..1], elementary arithmetic helps. Claude -- http://mathr.co.uk ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] counting how many times an audio file is looped
On 06/10/12 06:24, IOhannes m zmölnig wrote: On 10/05/2012 11:25 PM, Rick T wrote: Is there another way I should be doing this trust Pd's timing. that's the foundation. count the bangs that [tabplay~] will output via it's 2nd inlet. For long files, yes. (Is [tabplay] clock-aware? it perhaps could be?) For microloops, I'd prefer [wrap~]: [6( | [0, $1 123( plays $1 times in 123ms total | [vline~] | [wrap~]desired length in samples | / [*~ ] |desired offset into array in samples | / [+~ ] | [tabread4~ array] Claude -- http://mathr.co.uk ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
[PD] nearest neighbour matching?
Hi list, I have a -batch patch that randomly samples the parameter space of control signals to (some black box)* and uses [sigmund~] to detect pitched-ness vs unpitchedness, keeping the pitch info and then a notch filter to detect distortion: http://mathr.co.uk/softrockiii/2012-10-05_probe-puredata.png So I end up with gnuplots that look something like this: http://mathr.co.uk/softrockiii/2012-10-05_pitching-distortion.png Now I want to find the best match for a given pitch and distortion and get back the corresponding parameters that approximately reconstruct the desired sound. What's the best way to go about this? I might end up just hand-rolling some Lua for this kind of matching if no one has any better ideas. * currently mutually modulating FM oscillators like http://archive.org/details/ClaudiusMaximus_-_Soft_Rock_EP concept to be resurrected and reworked/combined with concepts from NoIn EP http://gosub10.org/GOSUB10-002.html Claude -- http://mathr.co.uk ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
[PD] hip~ nyquist gain bug test patch [Was: arraysize]
On 03/10/12 15:22, Claude Heiland-Allen wrote: On 02/10/12 16:15, Miller Puckette wrote: 1. there's a bug in hip~ - its DC gain is slightly (and possibly considerably) greater than 1. Did you mean nyquist-frequency rather than DC here? See attached test patch that waits 10 seconds for settling to steady state (extreme overkill no doubt), at 48k sample rate the nyquist gain for hip~ goes up dramatically as you increase the cutoff... IIRC DC gain for hip~ should be 0 or very close to it verified. and nyquist-frequency gain 1. here is the bug, these get much louder than the -1 1 -1 1 input hip10: -1.0007 1.0007 -1.0007 1.0007 -1.0007 1.0007 -1.0007 1.0007 hip100: -1.0066 1.0066 -1.0066 1.0066 -1.0066 1.0066 -1.0066 1.0066 hip1000: -1.07 1.07-1.07 1.07-1.07 1.07-1.07 1.07 hip1: -2 2 -2 2 -2 2 -2 2 Claude -- http://mathr.co.uk #N canvas 16 47 662 391 10; #X obj 52 65 loadbang; #X obj 54 152 delay 1; #X obj 95 224 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 302 236 hip~ 1000; #X msg 70 88 \; pd dsp 1; #X obj 137 78 tabplay~ \$0-fizz; #X obj 139 56 bang~; #X obj 228 199 table \$0-fizz 64; #X obj 165 194 s \$0-fizz; #X msg 164 126 0 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1; #X obj 302 257 print~ hip1000; #X obj 397 236 hip~ 100; #X obj 399 257 print~ hip100; #X obj 495 239 hip~ 10; #X obj 497 260 print~ hip10; #X obj 149 237 hip~ 1; #X obj 149 258 print~ hip1; #X connect 0 0 4 0; #X connect 0 0 1 0; #X connect 0 0 9 0; #X connect 1 0 10 0; #X connect 1 0 12 0; #X connect 1 0 14 0; #X connect 1 0 16 0; #X connect 2 0 10 0; #X connect 2 0 12 0; #X connect 2 0 14 0; #X connect 2 0 16 0; #X connect 3 0 10 0; #X connect 5 0 3 0; #X connect 5 0 11 0; #X connect 5 0 13 0; #X connect 5 0 15 0; #X connect 6 0 5 0; #X connect 9 0 8 0; #X connect 11 0 12 0; #X connect 13 0 14 0; #X connect 15 0 16 0; ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Recording audio to mp3 using LAME or ffmpeg ?
On 05/10/12 11:55, Pierre Massat wrote: Dear List, How would you go about recording the audio output of a Pd patch directly to mp3 (or any other compressed format actually), without using the object from the Unauthorized library ? Would it be feasible to use the [shell] object with a script using ffmpeg or LAME ? I don't really know whether there would be serious timing uses, who to use those for recording a stream instead of a file, how to send Pd's audio out... use jack and ecasound? gstreamer objects for pd? hacky way might work: writesf~ in raw (headerless mode) mkfifo foo.raw (read mkfifo manual) lame foo.raw (if it accepts raw input) careful with deadlocks/SIGPIPE I could always record to wav and run a script afterwards to compress and delete the original file, but i'd rather have something more direct. i tend to record in 32bit wav (-bytes 4) to avoid any clipping, then remove dc/normalize/convert later. i tend to hoard things, though... Claude Cheers, Pierre. ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Can't create Gem window
Hey, On 05/10/12 12:09, Ed Kelly wrote: Intel Core i5 Radeon HD7700 graphics card. Ubuntu 10.04 64bit OS? This is probably irrelevant as Wheezy is newer than Lucid, but... In Debian Wheezy I have no end of trouble with proprietary NVIDIA driver due to multiarch transition, in the end my workaround is to remember to sudo rm mesa software rasterizer (super slow) /usr/lib/x86_64-linux-gnu/libGL.so and symlink it to the proprietary one installed in /usr/lib/libGL.so - painful claude@cappuccino:~$ ls -l /usr/lib/x86_64-linux-gnu/libGL.so lrwxrwxrwx 1 root root 11 Oct 1 16:35 /usr/lib/x86_64-linux-gnu/libGL.so - ../libGL.so I am wondering if the ati proprietary driver might be to blame, but I am not sure how to check this... Dunno - is there some dual graphics laptop card thing that needs optirun or what have you to get good performance? check the output of glxinfo, whether your config supports such a setting. $ LIBGL_DEBUG=verbose glxinfo | head name of display: :0.0 display: :0 screen: 0 direct rendering: Yes server glx vendor string: NVIDIA Corporation server glx version string: 1.4 server glx extensions: GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGI_video_sync, GLX_SGI_swap_control, GLX_EXT_swap_control, GLX_EXT_swap_control_tear, GLX_EXT_texture_from_pixmap, GLX_ARB_create_context, --- you definitely don't want to see swrast stuff in the debug output (if there is any) Claude -- http://mathr.co.uk ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Pd-extended 0.43 and Openbox
On 04/10/12 01:08, Simon Wise wrote: wouldn't that make it difficult to put the window outside the screen deliberately ... for example to hide the window decorations off-screen? I have needed to use this a few times (when making the window properly fullscreen was not possible or appropriate), and it is sometimes a lot easier than trying to work out how to tell a particular window manager not to put decorations on a particular window. 'devilspie' is what I use for generic window-manager-override tweaking, though I tested it myself with only xfce4 desktop. http://burtonini.com/blog/computers/devilspie https://live.gnome.org/DevilsPie http://www.foosel.org/linux/devilspie Claude -- http://mathr.co.uk ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] array size (was Re: arraysize)
On 02/10/12 16:15, Miller Puckette wrote: 1. there's a bug in hip~ - its DC gain is slightly (and possibly considerably) greater than 1. Did you mean nyquist-frequency rather than DC here? IIRC DC gain for hip~ should be 0 or very close to it and nyquist-frequency gain 1. I did notice that delay loops with [hip~ 5] to leak DC do tend to explode without some [*~ 0.9] or [lop~ 1] or whatever... Claude ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] How to control sliders inside gop abstractions
On 30/09/12 20:08, umberto torrez wrote: Hi, how can i control the sliders of a group of gop abstractions? I need to control the sliders of a group of gop abstractions(the same). Im trying to do in this way: Each slider has $0_hi in its receive symbol property. Im creating each abstracion with a different value , for example: abstraction 1 abstraction 2 ... and so on. As far as i understand the number argument of my abstracion should replace $0 inside my slider. Am i right? or maybe im missing something? $0 is unique to each abstraction instance $1,$2,$3 is where the arguments start because it doesnt work and sending values to 1_hi doesnt control my abstraction. any idea? U. ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] array size (was Re: arraysize)
On 28/09/12 16:23, Miller Puckette wrote: Well, I'm persuadable on this front. I'm concerned with unduly hogging the object namespace - in general, every time I add an object name I potentially introduce incompatiblities with someone's abstraction that might have the same name. And there are 50 or so new classes (!) to provide. I don't even have a list yet (no pun intended) Perhaps it would be better to refactor the object / abstraction / binary / loading / namespace mechanism first, something along the lines of an old discussion I had with HCS: http://claudiusmaximus.goto10.org/cm/2010-07-16_pure-data_libraries_conversation.html Once that is fixed to something less baroque/crufty then it should be easier for everyone to go nuts and have their own namespaces without clobbering or hogging anything, and make patches more portable between Pd variants. I have no time to work on this for the forseeable future, but it's something that needs doing sooner rather than later... cheers M Thanks, Claude -- http://mathr.co.uk ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] pitched reverb?
Hi, On 27/09/12 08:58, umberto torrez wrote: hi, Does anybody know if exists a reveb that allows to tune to specific notes? I know that different room dimensions offer different resonating frequencies, but can this effect be manipulated electronically? I tried some 4D room simulation once, releveant files attached, may be missing some parts and/or bitrotted - it's from 2008). Maybe it provides some ideas / inspiration / herrings... Does anybody know of techniques to achieve it pd? any idea? http://archive.org/download/ClaudiusMaximus_-_Feed_Me_dia/ClaudiusMaximus_-_The_Seventh_Chamber.ogg is one sketch I made by changing a reverberating room's shape according to a bell-ringing sequence. Claude -- http://mathr.co.uk #N canvas 0 0 558 543 10; #X obj 20 21 inlet~; #X obj 237 23 inlet; #X obj 20 41 delwrite~ \$0-d 1000; #X obj 18 435 outlet~; #X obj 237 45 unpack f f f f f f f f f; #X obj 18 80 delread~ \$0-d; #X obj 154 131 delread~ \$0-d; #X obj 164 151 delread~ \$0-d; #X obj 174 171 delread~ \$0-d; #X obj 184 191 delread~ \$0-d; #X obj 194 211 delread~ \$0-d; #X obj 204 231 delread~ \$0-d; #X obj 214 251 delread~ \$0-d; #X obj 224 271 delread~ \$0-d; #X obj 19 178 *~ 0; #X obj 129 171 *~ 0; #X obj 139 191 *~ 0; #X obj 149 211 *~ 0; #X obj 159 231 *~ 0; #X obj 169 251 *~ 0; #X obj 179 271 *~ 0; #X obj 189 291 *~ 0; #X obj 199 311 *~ 0; #X obj 322 271 expr pow(10 \, -340*$f1/1); #X obj 252 131 expr pow(10 \, -340*$f1/1); #X obj 262 151 expr pow(10 \, -340*$f1/1); #X obj 272 171 expr pow(10 \, -340*$f1/1); #X obj 282 191 expr pow(10 \, -340*$f1/1); #X obj 292 211 expr pow(10 \, -340*$f1/1); #X obj 302 231 expr pow(10 \, -340*$f1/1); #X obj 312 251 expr pow(10 \, -340*$f1/1); #X obj 44 103 expr pow(10 \, -340*$f1/1); #X text 354 294 distance loss (1/r); #X text 140 381 reflection loss (one reflection); #X obj 450 25 inlet; #X obj 128 358 *~ 0; #X obj 78 435 outlet~; #X connect 0 0 2 0; #X connect 1 0 4 0; #X connect 4 0 5 0; #X connect 4 0 31 0; #X connect 4 1 6 0; #X connect 4 1 24 0; #X connect 4 2 7 0; #X connect 4 2 25 0; #X connect 4 3 8 0; #X connect 4 3 26 0; #X connect 4 4 9 0; #X connect 4 4 27 0; #X connect 4 5 10 0; #X connect 4 5 28 0; #X connect 4 6 11 0; #X connect 4 6 29 0; #X connect 4 7 12 0; #X connect 4 7 30 0; #X connect 4 8 13 0; #X connect 4 8 23 0; #X connect 5 0 14 0; #X connect 5 0 36 0; #X connect 6 0 15 0; #X connect 7 0 16 0; #X connect 8 0 17 0; #X connect 9 0 18 0; #X connect 10 0 19 0; #X connect 11 0 20 0; #X connect 12 0 21 0; #X connect 13 0 22 0; #X connect 14 0 3 0; #X connect 15 0 35 0; #X connect 16 0 35 0; #X connect 17 0 35 0; #X connect 18 0 35 0; #X connect 19 0 35 0; #X connect 20 0 35 0; #X connect 21 0 35 0; #X connect 22 0 35 0; #X connect 23 0 22 1; #X connect 24 0 15 1; #X connect 25 0 16 1; #X connect 26 0 17 1; #X connect 27 0 18 1; #X connect 28 0 19 1; #X connect 29 0 20 1; #X connect 30 0 21 1; #X connect 31 0 14 1; #X connect 34 0 35 1; #X connect 35 0 3 0; --[[ 4D early reflection calculation for heref~ --]] -- utility 4D maths local v4sub = function(u,v) local s = { } for i = 1,4 do s[i] = u[i]-v[i] end return s end local v4mul = function(u,k) local s = { } for i = 1,4 do s[i] = u[i]*k end return s end local v4dot = function(u,v) local d = 0 for i = 1,4 do d = d + u[i]*v[i] end return d end local v4ref = function(x,p) local n = p.normal local d = p.distance return v4sub(x, v4mul(n, 2 * (v4dot(x,n) - d) / v4dot(n,n))) end local c = 340 / 1000 local v4time = function(x,y) local v = v4sub(x,y) local d = v4dot(v,v) return math.sqrt(d) / c end -- main class local R = pd.Class:new():register(heref-calc) function R:initialize(sel, atoms) self.inlets = 3 self.outlets = 1 return true end -- room size function R:in_3_list(atoms) self.wall = { { normal = { 1, 0, 0, 0 }, distance = atoms[1] }, { normal = { -1, 0, 0, 0 }, distance = 0 }, { normal = { 0, 1, 0, 0 }, distance = atoms[2] }, { normal = { 0, -1, 0, 0 }, distance = 0 }, { normal = { 0, 0, 1, 0 }, distance = atoms[3] }, { normal = { 0, 0, -1, 0 }, distance = 0 }, { normal = { 0, 0, 0, 1 }, distance = atoms[4] }, { normal = { 0, 0, 0, -1 }, distance = 0 } } end -- source position function R:in_2_list(atoms) self.vsource = { atoms } for i = 1,8 do table.insert(self.vsource, v4ref(atoms, self.wall[i])) end end -- listener position function R:in_1_list(atoms) local herefs = { } for i = 1,9 do table.insert(herefs, v4time(atoms, self.vsource[i])) end self:outlet(1, list, herefs) end #N canvas 0 0 967 676 10; #X obj 152 273 mtx_*~ 16 16 0 ...; #X obj 198 80 delread~ \$0-0; #X obj 208 100 delread~ \$0-1; #X obj 218 120 delread~ \$0-2; #X obj 228 140 delread~ \$0-3; #X obj 238 160 delread~ \$0-4; #X obj 248 180 delread~ \$0-5; #X obj 258 200 delread~ \$0-6; #X obj 268 220 delread~ \$0-7; #X obj 298 80 delread~ \$0-8; #X obj 308 100 delread~ \$0-9; #X
Re: [PD] phase modulation feedback
On 24/09/12 14:00, flad chester wrote: Hi list, i was wondering if somebody have implemented phase modulation feedback synthesis in pd? The idea is that the phase can self modulate using the output of the same signal. I did some stuff with mutually modulating FM oscillators, using s~/r~ for one-block delay (64 samples). Phase modulation is slightly different though... Do anybody have implemented an example of this in pd? any idea? http://archive.org/details/ClaudiusMaximus_-_Soft_Rock_EP (2005) http://archive.org/details/ClaudiusMaximus_-_Soft_Rock_DVD (2006) one simple patch attached showing the general idea I'm actually planning to revisit this project soon, combining with the machine listening/learning/sequencing ideas of NoIn EP: http://archive.org/details/GOSUB10-002 (2009) Making a parameter map of oscillator parameters for different tones and degrees of chaos: http://identi.ca/notice/95484731 Should have time to work on this project next in November, busy times ahead... Claude -- http://mathr.co.uk #N canvas 0 0 450 300 10; #X obj 54 130 osc~; #X obj 55 157 s~ \$0-osc1; #X obj 54 77 +~ 60; #X obj 53 101 mtof~; #X obj 253 129 osc~; #X obj 253 76 +~ 60; #X obj 252 100 mtof~; #X obj 255 32 r~ \$0-osc1; #X obj 54 29 r~ \$0-osc2; #X obj 254 156 s~ \$0-osc2; #X obj 101 210 dac~; #X floatatom 143 104 5 0 0 0 - - -; #X obj 150 58 line~; #X obj 55 54 *~; #X obj 253 53 *~; #X msg 142 26 0 \, 72 30; #X obj 92 267 writesf~ 2; #X msg 180 235 stop; #X msg 163 212 open -bytes 4 Magma-1CMix.wav \, start; #X connect 0 0 1 0; #X connect 0 0 10 0; #X connect 0 0 16 0; #X connect 2 0 3 0; #X connect 3 0 0 0; #X connect 4 0 9 0; #X connect 4 0 10 1; #X connect 4 0 16 1; #X connect 5 0 6 0; #X connect 6 0 4 0; #X connect 7 0 14 0; #X connect 8 0 13 0; #X connect 11 0 2 1; #X connect 11 0 5 1; #X connect 12 0 13 1; #X connect 12 0 14 1; #X connect 13 0 2 0; #X connect 14 0 5 0; #X connect 15 0 12 0; #X connect 17 0 16 0; #X connect 18 0 16 0; ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Change pitch without changing length of a audio stream ?
On 21/09/12 08:05, Charles Goyard wrote: Hi list, In a installation I'm building, I use veejay (veejayhq.net) for video display, and route the audio of the video for further mixing in pd. This works very well. Under some circumstances, I change the video playback speed. Veejay has a feature called trickplay that adjusts the audio to the video length by changing the pitch much like a 33rpm vynil record played at 45rpm. What I want is keep the original pitch of the sound. So I figured out timestretching is what to do. I can send the speed factor of the video to pd. So I tried the timestretch~ external, the vocoder example (got this advice from list archive). They both sound terrible, even with the audio files from the examples (bell.aiff). So is it something doable in real-time or do I have to look for a workaround ? Any advice is welcome. Real-time timestretch is a hard problem. (Timestretch itself is hard). I'd see how mixxx does it (possible wrong number of x there, but it's a free DJ-style software with sources available last time I checked). Then see if it's time stretch suits your needs and rip it out into a Pd external - possibly with luck mixxx just uses a library to do the dirty work so it might be a quick job. Claude -- http://mathr.co.uk ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] +=~ object for pd
On 16/07/12 22:26, Simon Iten wrote: [+=~] the object adds all the values it receives and can be reset with a signal (in my case a pulse) is there an equivalent in pd? i can't seem to find one. [rpole~] right inlet 0 to reset right inlet 1 to accumulate ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] bigger symbols
On 23/05/12 16:34, Jeppi Jeppi wrote: Hi all,any easy (and hopefully standard) way to display a bigger and better looking symbol than the default [symbol] object (Ctrl-4)?Thanks! If you only need display (no editing/input), set the label of a canvas, and adjust the properties to set font/size. Beware characters like $#%{}[]' which might cause weird issues (though, I haven't tested recently, so any issues there might have been may be fixed - and I can't remember exactly which ones I had problems with in the past...). Josep M ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] mapping variable-length lists to a fixed length one
On 22/05/12 02:13, tim vets wrote: I have lists of floats from measurements which vary in length (they grow with the duration of the measurements) What would be a good way to map those to a list of, say, 150 items? In concreto: -When variable list A has 15 elements and fixed list B is 150 long, I can simply repeat each value of A 10 times to get a 150 elements list. -When list A has 1500 elements, and B 150, I could take list A 10 elements at a time, and write the averages thereof to list B. but how do I generalize this for _any_ length of list A? look into resampling, eg libsamplerate[1] when #A #B you want to low pass filter to antialias when downsampling when #A #B you want to interpolate to antialias when upsampling and how do I patch this up in pd? :) very temperamental/buggy version attached, especially the filtering is a bit rubbish in this one - it just uses a couple of simple causal lop[2] instead of doing it properly for upsampling, tabread4 does one kind of interpolation (but you might want to use a different interpolation function, refer to the list archives about tabread4c etc) for downsampling, you might want an acausal filter (like an image blur that works in all directions without shifting the image sideways) - most audio filters are causal (one direction only - the direction in this case is time, and the future can't influence the past, so there's some delay) you might want to store statistics too, depending on the type of data (eg: in an audio scope like audacity you can see long-scale peaks/troughs even though the average antialiased visible signal would be a line at 0 assuming no DC offset) - you might pick up some ideas from the description of zoom-cache[3] [1] http://www.mega-nerd.com/SRC/ [2] http://en.wikipedia.org/wiki/Low_pass_filter#Discrete-time_realization [3] http://hackage.haskell.org/package/zoom-cache Claude #N canvas 0 0 485 714 10; #X text 15 12 list_resample.pd by Claude Heiland-Allen 2012-05-22T02:48:37+0100 ; #X obj 15 61 inlet; #X obj 76 109 list length; #X obj 76 130 t a a; #X msg 125 130 resize \$1; #X obj 15 82 t a a; #X obj 15 150 t b a; #X obj 65 189 list prepend 0; #X obj 64 209 s \$0-input; #X obj 125 151 s \$0-input; #X obj 56 62 table \$0-input; #X obj 238 62 inlet; #X obj 308 359 f; #X obj 360 360 + 1; #X msg 341 283 0; #X obj 42 335 f; #X obj 76 336 + 1; #X obj 41 369 moses; #X obj 41 308 t b b; #X obj 121 337 f; #X obj 156 338 +; #X obj 213 251 /; #X obj 41 437 f; #X obj 308 380 tabread \$0-input; #X obj 306 440 +; #X obj 345 439 * 0.5; #X obj 307 403 * 0.5; #X obj 350 402 tabread \$0-input; #X obj 19 240 t b b b; #X obj 38 262 f; #X obj 38 283 until; #X msg 36 520 add2 \$1; #X obj 16 575 outlet; #X obj 104 366 b; #X msg 106 517 set; #X obj 236 164 max 1; #X text 307 340 step through input; #X obj 268 359 until; #X obj 269 336 max 1; #X text 66 265 step through output; #X text 91 381 done; #X obj 44 392 b; #X text 46 421 current interpolated value; #X text 315 421 interpolating lop filter; #X text 339 265 rewind; #X text 199 289 input/output rate; #X obj 397 215 inlet; #X msg 389 439 1 \$1; #X obj 389 460 -; #X obj 56 490 +; #X obj 95 489 * 0.5; #X obj 57 457 * 0.5; #X msg 139 493 1 \$1; #X obj 139 514 -; #X text 68 473 reconstructing lop filter; #X obj 323 216 inlet; #X msg 18 547; #X obj 156 359 moses 1; #X obj 152 386 expr $f1 - floor($f1 \, 0) \; floor($f1 \, 0); #X msg 134 310 1; #X connect 1 0 5 0; #X connect 2 0 3 0; #X connect 3 0 21 0; #X connect 3 1 4 0; #X connect 4 0 9 0; #X connect 5 0 6 0; #X connect 5 1 2 0; #X connect 6 0 28 0; #X connect 6 1 7 0; #X connect 7 0 8 0; #X connect 11 0 35 0; #X connect 12 0 13 0; #X connect 12 0 23 0; #X connect 13 0 12 1; #X connect 14 0 12 1; #X connect 14 0 15 1; #X connect 14 0 27 0; #X connect 15 0 16 0; #X connect 15 0 17 0; #X connect 16 0 15 1; #X connect 17 0 41 0; #X connect 17 1 33 0; #X connect 18 0 15 0; #X connect 18 1 19 0; #X connect 19 0 20 0; #X connect 20 0 57 0; #X connect 21 0 20 1; #X connect 22 0 51 0; #X connect 23 0 26 0; #X connect 24 0 25 0; #X connect 24 0 22 1; #X connect 25 0 24 1; #X connect 26 0 24 0; #X connect 27 0 25 0; #X connect 27 0 50 0; #X connect 27 0 22 1; #X connect 28 0 56 0; #X connect 28 1 29 0; #X connect 28 2 14 0; #X connect 28 2 34 0; #X connect 28 2 59 0; #X connect 29 0 30 0; #X connect 30 0 18 0; #X connect 31 0 56 0; #X connect 33 0 30 1; #X connect 34 0 56 0; #X connect 35 0 17 1; #X connect 35 0 29 1; #X connect 35 0 21 1; #X connect 37 0 12 0; #X connect 38 0 37 0; #X connect 41 0 22 0; #X connect 46 0 26 1; #X connect 46 0 47 0; #X connect 47 0 48 0; #X connect 48 0 25 1; #X connect 49 0 50 0; #X connect 49 0 31 0; #X connect 50 0 49 1; #X connect 51 0 49 0; #X connect 52 0 53 0; #X connect 53 0 50 1; #X connect 55 0 52 0; #X connect 55 0 51 1; #X connect 56 0 32 0; #X connect 57 0 19 1; #X connect 57 1 58 0; #X connect 58 0 19 1; #X connect 58 1 38 0; #X connect 59 0 19 1; #N canvas 0 0 450 300 10; #X text 14 12
Re: [PD] variable receive objects?
On 14/05/12 19:43, Jonathan Wilkes wrote: From: IOhannes m zmoelnigzmoel...@iem.at On 2012-05-14 05:02, John Harrison wrote: I've used those 2 objects a lot and thought they seemed pretty stable... that's because the trivial case (where receiving data and changing the receive label are completely independent of each other (stackwise)) won't create much of a problem. How do I manifest the bug? See attached. Uses iem_r, though it should make no difference which settable-receive you use. WARNING: clicking the boom message makes Pd segfault :WARNING To understand this you need to know that pd stores a receiver in the symbol table. When there is only one receiver, it's just a pointer to the object, but when there's more than one there's a proxy object that contains a list. When you change a receiver it can end up deleting the proxy object if the receiver count for a symbol drops from 2 to 1. Deleting an object while code is executing in its context - boom. Claude #N canvas 0 0 450 300 10; #X obj 30 64 iem_r foo; #X obj 164 62 iem_r foo; #X msg 75 89 set bar; #X msg 208 89 set bar; #X msg 87 133 boom; #X obj 87 154 s foo; #X connect 0 0 2 0; #X connect 1 0 3 0; #X connect 2 0 0 0; #X connect 3 0 1 0; #X connect 4 0 5 0; ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] variable receive objects?
On 12/05/12 12:20, Jörn Nettingsmeier wrote: [snip] is there a way to generate a variable receive object similar to a send via message box, whose source is defined at load time? [snip] or maybe i'm totally up the wrong alley, and someone can suggest a more idiomatic way to deal with this issue? I think more idiomatic is identifier flow from outside in (rather than trying to get the insides out). Use $1 in the player and the controller, instead of their own local $0. Pass the same value in as the player and controller(s) arguments. Possibly passing in something based on the local $0 of their common parent patch if they have one, otherwise pick a magic name that is hopefully unique enough. I find it quite common to add layers of $ when nesting abstractions, perhaps with a pattern similar to: patch:[nbx]--[s $0-r] [foo $0] [r $0-s]--[print] foo: [r $1-r]--[s $0-$1-r] [bar $0-$1] [r $0-$1-s]--[s $1-s] bar: [r $1-r]--[s $0-$1-r] [baz $0-$1] [r $0-$1-s]--[s $1-s] baz: [r $1-r]--[+ 1]--[s $1-s] Claude ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] pure data midi autoconnect
On 11/05/12 16:07, James Mckernon wrote: 'alsa midi' in pd to initialize its it connects its output to all other midi inputs, and its input to all other midi outputs (including through-midi on both sides, meaning it is essentially sending midi to itself, as well as everything else.) Can anyone suggest a way to supress this behaviour? Thanks. I don't know if this still works in recent Pd, but it used to work to tell Pd to have two (2) alsamidi ports, then none are autoconnected. $ pd -alsamidi -mididev 1 # this autoconnects pd everywhere $ pd -alsamidi -mididev 1,1 # 2 ports, and no autoconnections $ pd -version Pd version 0.42-6 compiled 08:43:13 Mar 19 2012 n.b. Cross-posted this because I believe the subject concerns both lists. Claude ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] GEM camera angle-of-view 180deg
Hi Marian, I've not tried this, but: On 14/04/12 17:47, Marian Weger wrote: Is it somehow possible to get a 360 degree angle-of-view with the GEM camera inside a framebuffer? Isn't there some easy way to do the same thing? I don't think so. You could use a vertex shader to implement your own projection algorithm[0] to reduce any strange effects from stitching together multiple perspective projections. Perhaps angular fish eye[1] for the wide direction only (modelling a cylinder instead of a sphere). Almost surely[2] it will still be necessary to render a few wedges of the cylinder to get a full 360 without bad problems at the edge cut[3]. An example of a bad problem with full 360 wide angle camera: something directly opposite the direction of the center of the view gets drawn as a huge wide thing that crosses from near far left to near far right instead of two small things one that goes from near far left to the far left edge and the other that goes from near far right to the far right edge. Little ASCII diagram: | | bad problem |-----| what it should really be Claude [0] http://www.google.co.uk/#q=vertex+shader+360+wide+angle+projection+-xbox [1] http://paulbourke.net/miscellaneous/domefisheye/fisheye/ [2] http://en.wikipedia.org/wiki/Almost_surely [3] http://en.wikipedia.org/wiki/Branch_point#Branch_cuts ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] That old -nogui/nosound problem on Linux ...
On 10/04/12 16:11, Chrissie Caulfield wrote: I don't know why polygate~ does show the problem where hip~ and friends don't but I'm hoping it's a clue! So, does anyone have any (even vague) ideas of where to start before I start randomly digging? Vague guess, might be wrong: I think the bug is that pd -nogui loads (and possibly also loadbangs) the patches specified on the commandline before it initialises the samplerate~ and block~ settings. polygate~ (or other broken dsp externals) are probably getting the samplerate~ or block~ settings before pd has fully initialised them. (eg: object gets samplerate in the object's 'new' method) hip~ and friends work with various workarounds probably because they re-get the samplerate~ or block~ settings when the dsp graph is resorted. (eg: object gets samplerate in the object's 'dsp' method) polygate~ (or other broken dsp externals) are possibly not re-getting the samplerate~ or block~ settings when the dsp graph is resorted. This suggests a possible other workaround that combines two techniques: loader.pd: [loadbang] | [delay 10] delay a bit because Pd has a bug | \ | [; pd dsp 1(turn on dsp to initialize things | [delay 10] | \ | [; pd dsp 0(turn off dsp in case it slows down loading | [delay 10] | [; pd open main.pd .( load the main patch (syntax not tested...) main.pd: your normal patch, feel free to [loadbang]--[; pd dsp 1] as usual, if it doesn't work after all that fuss then I'm out of ideas. Of course, even if the combo workaround works, it's still just a hack and pd still has a real bug that needs fixing, and the externals in question might have real bugs that need fixing too. But it'd provide a further clue. Claude ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] pdlua + Gem-any examples/tips?
Hi, On 19/03/12 19:25, ALAN BROOKER wrote: can I ask where did you get the frag shader from? I wrote it. Thanks all, Claude ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] pdlua + Gem-any examples/tips?
On 18/03/12 14:13, ALAN BROOKER wrote: Does anyone know of any examples of using Lua with Gem in anyway? Attached example uses a custom particle system in Lua that also keeps track of various parameters for a GLSL shader. Rather undocumented/hacky and might not work on any machine but mine... usual NO WARRANTY warning goes here... If you want to see how it should look after it fails to run on your machine: http://claudiusmaximus.goto10.org/v/gears/2012-01-14_gear_chain_v1.ogv (36MB) Claude uniform float cogs; uniform float spokes; uniform float dir; uniform float sweep; uniform float teeth; uniform float hole; uniform float radiusin; uniform float radiusout; uniform float threshin; uniform float threshout; uniform float spin; void main(void) { vec2 p = gl_TexCoord[0].xy * 2.0 - 1.0; float r = length(p); if (1.0 r r hole) { float a0 = atan(p.y, p.x); float a = a0 + spin; float tr = 1.0 - teeth * (1.0 - cos(cogs * a)); if (tr r) { a *= spokes; a += dir * pow(sweep, r); float s = cos(a); float t = -2.0; float h = 10.0; float q = cos(8.0 * cogs * r * r); if (radiusout r r radiusin) { t = mix(threshin, threshout, (r - radiusin) / (radiusout - radiusin)); q = cos(5.0 * a); } if (s t) { vec3 u = vec3( cos(a0), sin(a0), 0.5 * q * (1.0 - r * r)); vec3 v = vec3(-sin(a0), cos(a0), 0.0); vec3 n = normalize(cross(u, v)); vec3 l = normalize(vec3(vec2(960.0, 270.0) - gl_FragCoord.xy, 512.0)); float d = max(dot(l, n), 0.0); vec3 f = 2.0 * d * n - l; float c = 0.5 * pow(max(f.z, 0.0), h); gl_FragColor = vec4(mix(0.5 * d * gl_Color.rgb, vec3(1.0), clamp(c, 0.0, 1.0)), 1.0); } else { discard; } } else { discard; } } else { discard; } } #N canvas 2033 240 847 674 10; #X obj 38 218 glsl_fragment gear.frag; #X msg 189 219 link \$1; #X obj 226 245 glsl_program; #X obj 228 375 square; #X obj 40 10 gemhead 10; #X obj 228 346 color; #X obj 245 149 route gear; #X obj 39 112 gearbox; #X obj 228 287 translateXYZ; #X obj 335 253 unpack f f; #X obj 39 153 gemlist; #X obj 426 83 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X obj 227 414 translateXYZ; #X obj 320 337 * -1; #X obj 364 339 * -1; #X obj 408 41 loadbang; #X obj 409 110 gemwin 25; #X msg 245 174 cogs \$1 \, spokes \$2 \, dir \$3 \, sweep \$4 \, teeth \$5 \, hole \$6 \, radiusin \$7 \, radiusout \$8 \, threshin \$9 \, threshout \$10 \, color \$11 \$12 \$13 \, scale \$14 \, translate \$15 \$16 \, spin \$17; #X obj 245 219 route color scale translate; #X obj 40 64 t b a; #X msg 409 62 dimen 1920 540 \, create \, 1; #X obj 17 402 pix_write 0 0 1920 540; #X obj 21 32 t b a a; #X msg 49 330 file /data/cm/gc/1/i 0; #X msg 42 298 auto 1; #X connect 0 0 2 0; #X connect 0 1 1 0; #X connect 1 0 2 0; #X connect 2 0 8 0; #X connect 3 0 12 0; #X connect 4 0 22 0; #X connect 5 0 3 0; #X connect 6 0 17 0; #X connect 7 0 10 0; #X connect 7 1 6 0; #X connect 8 0 5 0; #X connect 9 0 8 1; #X connect 9 0 13 0; #X connect 9 1 8 2; #X connect 9 1 14 0; #X connect 10 0 0 0; #X connect 11 0 16 0; #X connect 13 0 12 1; #X connect 14 0 12 2; #X connect 15 0 20 0; #X connect 17 0 18 0; #X connect 18 0 5 1; #X connect 18 1 3 1; #X connect 18 2 9 0; #X connect 18 3 2 0; #X connect 19 0 7 0; #X connect 19 1 10 1; #X connect 20 0 16 0; #X connect 22 1 21 0; #X connect 22 2 19 0; #X connect 23 0 21 0; #X connect 24 0 21 0; local G = pd.Class:new():register(gearbox) math.randomseed(os.time()) local function distance(p, q) local dx = p.x - q.x local dy = p.y - q.y return math.sqrt(dx * dx + dy * dy) end function G:initialize(sel, atoms) self.inlets = 1 self.outlets = 2 self.spawnhue = 0 self.spawnparity = true self.spawnrate = 10 self.spawncounter = 0 self.scrollspeed = 0.01 self.scrollangle = 0 self.friction = 0.975 self.dt = 0.002 self.gears = { } return true end function G:spawn() self.spawnhue = math.fmod(self.spawnhue + 1 / 32, 1) local t = self.spawnhue * 2 * math.pi -- rec.709 yuv2rgb local r = 0.5 + 0.25 * 1.28033 * math.sin(t) local g = 0.5 - 0.25 * 0.21482 * math.cos(t) - 0.25 * 0.38059 * math.sin(t) local b = 0.5 + 0.25 * 2.12798 * math.cos(t) local p = math.random() 0.5 local c = math.floor(math.sqrt(math.random() * (144 - 25) + 25)) local s = 3 * c / 24 local h = (math.random() - 0.5) * 10 local da = 0.4 * (math.random() - 0.5) local a if p then a = 2 * math.pi / c else a = - 2 * math.pi / c end local v = -0.5-math.random() table.insert(self.gears, { parity = p , cogs = c , size = s , mass = s * s , angle = math.random() * 2 * math.pi , dangle = 4 * a , position = { x = 20 * math.cos(self.scrollangle + da), y = 20 * math.sin(self.scrollangle + da) } , dposition = { x = v * math.cos(self.scrollangle + da), y = v * math.sin(self.scrollangle + da) } , color = { r = r, g
Re: [PD] precision of vline~ and/or pd messaging
On 24/01/12 21:50, João Pais wrote: maybe the messaging isn't precisely aligned with the audio. For this patch I'm using E Lyon's samm~ and click2bang~ I'm not familiar with those externals, nor in inspecting the output of a patch (which is on the large size) instead of the patch. But some general points: Timing of message-signal is 100% accurate with vline~ or other clock-aware objects, because all the message processing for a given dsp block happens before the dsp block is calculated. vline~ and other objects can use the timestamp of the messages (which is in the future compared to the dsp processing) and schedule their dsp computations appropriately. If you use metro, delay, vline~ all your timing will be in sync. Timing of signal-message is problematic, for the same reason: the earliest a message can be sent is after the whole dsp block is calculated, so if you need to send a message mid-way through a dsp block you'd need a time machine to go back in time(*) before the dsp block was started to be computed and then trigger a message with a future (during the dsp block) timestamp. The best you can do is a 1-block delay for signal-message, so perhaps click2bang~ should be modified to tell you where in the block the click(s) occurred so you can compensate, assuming any delay/latency is acceptable. Or you could implement an abstraction to do something like this using [tabsend~] and [bang~]. Or you could run your patch at 192kHz where 125ms is a multiple of the default block size, or you could use a block size of 1. Claude (*) If affordable time travel will be invented I'd have not sent this email ;) ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] number to fractions external?
On 16/12/11 06:51, i go bananas wrote: by the way, here is the method i used: first, convert the decimal part to a fraction in the form of n/10 next, find the highest common factor of n and 10 (using the 'division method' like this: http://easycalculation.com/what-is-hcf.php ) then just divide n and 10 by that factor. I don't think that method will give happy results for most simple fractions. Plus it's useful to get approximations that are simpler or more accurate, like 3 or 22/7 or 355/113 for pi.. Your patch doesn't work very well for me: input: 1/7 fraction: 2857/2 input: 8/9 fraction: 1/12500 input: 7/11 fraction: 15909/25000 input: 11/17 fraction: 4313.67/.67 (input is $1 $2--[/], so as accurate as floating point is...) actually, that means it's accurate to 6 decimal places, i guess. There's a way to get a simple fraction like 1/7 instead of 143/1000 or whatever, could be possible to implement in Pd? (I've not tried.) [0] http://hackage.haskell.org/packages/archive/base/latest/doc/html/src/Data-Ratio.html#approxRational [1] http://en.wikipedia.org/wiki/Continued_fraction#Best_rational_approximations well...whatever :D Claude ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] fux_kinect
On 12/11/11 16:53, Mathieu Bouchard wrote: gl_frame_cond = (pthread_cond_t*) malloc(sizeof(pthread_mutex_t)); A nice idiom for malloc is to use the sizeof of the target of the pointer to which you are assigning its result (no explicit cast needed when assigning from a void * afaik, at least no warnings/errors here with gcc (Debian 4.4.5-8) 4.4.5): $ gcc -std=c99 -Wall -pedantic -Wextra -Wno-unused-parameter \ -o malloc malloc.c #include stdlib.h struct foo { int bar, baz; double quux; }; int main(int argc, char **argv) { struct foo *f = malloc(sizeof(*f)); free(f); return 0; } Claude ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Interruption of audio / Loading sound into array
On 31/10/11 17:37, Sebastian Hanusa wrote: Dear List! I have a problem, where hope the solution is so easy as it is complicated for me to find a solution: When I am loading a soundfile (about one 30 seconds, stereo, .aif, 16bit/44100Hz) to an array and simultaneously I have a quite simple audio prozess like replaying a second soundfile with [readsf] + for example a delay and a bandbass I get in the moment of loading to the array a dropout of the audio stream. I tryed to switch off the patch within the array for the moment of loading - but I get the same result. Is there a way to avoid this dropout? If you need the sample instantly now, then probably not (you could try increasing the pd buffer size which adds latency, but that's no guarantee). But, if you need it quite soon but I can wait a little see also: http://lists.puredata.info/pipermail/pd-list/2008-05/062310.html and similar mailing list archive threads. I am working with pd_extended 0.42.5 on a MacBook 2 GHz Intel Core 2 Duo, OS X 10.5.8 Thanks a lot for any help and with best regards, Sebastian Claude ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] pduino rewrite
Hi Ingo, On 16/09/11 13:02, Ingo wrote: When I started I thought it was very convenient to use wireless [send/receive] objects to send midi data to the sample-voices (which it is). [snip] Sending 3,000 messages to 8,000 [receive] objects adds up to 24 million times per second that the individual [receive] objects had to check whether the message was meant to be for them or not. [snip] The second fix was to replace the wireless sends with hard wired patch chords. Faced with this scenario I would probably have tried dynamic sends, so the data determines which receive gets the message. For example: ... | [pack f f f f f f] | [ ; r-$1-$2-$3 $4 $5 $6 ( [r r-1-4-7] | [unpack f f f] | ... [r r-27-63-49] | [unpack f f f] | And using nested abstractions you could create the receives based on $args, and if you need lots of voices you could use dynamic patching to instantiate them. Claude ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] pdtest - pd functional testing external
Ahoy, I'm curious why you didn't use(*) pdlua and write your whole external in Lua? Admittedly, there probably are still some bugs relating to require(), for which fixes would be welcome - last time I checked setting the paths for the Lua interpreter was rather a nightmare with different platforms (even different distros) having different locations.. On 13/09/11 14:49, Louis-Philippe wrote: documentation and source code can be found: https://github.com/lp/pdtest#readme Claude (*) instead of borrowing GPL code and licensing as MIT-style ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] freeverb crashes on new computer
On 07/09/11 15:23, Mathieu Bouchard wrote: On Tue, 6 Sep 2011, ronni montoya wrote: Do anybody have an idea why is this behaivor and how to solve it? nan is often due to trying to do 0/0 or log(-1) or other out-of-range things. Probably inf - inf or 0 * inf are NaN, I haven't checked the specs. (some other out-of-range operations yield +inf or -inf instead, it depends) Actually... is [clip~ -1 1] really able to get rid of nan ? No, because NaN compares always result in false: http://pure-data.git.sourceforge.net/git/gitweb.cgi?p=pure-data/pure-data;a=blob;f=src/d_math.c;h=f76bffef18607334a67b147fc498b7513dd6372b;hb=HEAD#l42 Workaround/fix might be: if (!(f x-lo)) f = x-lo; if (!(f x-hi)) f = x-hi; But this might all be screwed up depending on how Pd and/or freeverb is compiled, I know some inf/nan things can behave even more strangely with -ffast-math (for example, Pd .git has no mention of it as far as I can tell). Claude ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] [OT] SSE/MMX tips?
On 07/09/11 12:17, Bill Gribble wrote: The operation is integration. Try calling it 'scan' and you might end up with more productive searches, at least to my mind integration is more about summing over continuous regions than something discrete like this. Searching for data parallel algorithm scan leads to pages like: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.85.1876rep=rep1type=pdf http://http.developer.nvidia.com/GPUGems3/gpugems3_ch39.html Claude ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
[PD] workaround for -batch -nogui delwrite~ etc bugs
Hi all, The problem: Using pd -nogui or pd -batch, some stuff seems not set up yet when the patch is loaded, making [delwrite~] (among others) not work correctly. The workaround: Use dynamic patching to instantiate the real patch with a delay. Example: pd -batch -r 48000 -open workaround_loader.pd -send workaround 50 500 pd -batch -r 48000 -open workaround_loader.pd -send workaround 10 1000 Hopefully useful, thanks, Claude #N canvas 0 0 450 300 10; #X obj 15 17 r workaround; #X obj 15 58 t b a b; #X obj 15 79 delay 2000; #X obj 15 100 list; #X obj 15 121 s workaround; #X obj 15 38 spigot 1; #X msg 79 38 0; #N canvas 0 0 450 300 \$0-workaround 0; #X restore 15 142 pd \$0-workaround; #X obj 112 57 t b b b; #X msg 83 79 \; pd dsp 1; #X msg 151 77 \; pd dsp 0; #X msg 225 86 clear; #X obj 112 35 delay 1000; #X msg 131 116 obj 10 10 workaround_main \, loadbang; #X obj 131 141 s pd-\$0-workaround; #X connect 0 0 5 0; #X connect 1 0 2 0; #X connect 1 1 3 1; #X connect 1 2 6 0; #X connect 1 2 9 0; #X connect 1 2 12 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 5 0 1 0; #X connect 6 0 5 1; #X connect 8 0 9 0; #X connect 8 1 13 0; #X connect 8 2 10 0; #X connect 11 0 14 0; #X connect 12 0 8 0; #X connect 13 0 14 0; #N canvas 0 0 451 528 10; #X obj 17 13 r workaround; #X obj 17 63 unpack f f; #X obj 75 105 osc~; #X obj 17 84 delread~ \$0-delay; #X obj 17 163 +~; #X obj 141 128 pack f f; #X obj 141 107 * 0.1; #X obj 186 108 * 0.9; #X obj 75 126 *~; #X msg 141 149 1 \$1 \, 0 \$2 \$1; #X obj 141 170 vline~; #X obj 141 191 *~; #X obj 141 212 *~; #X obj 91 212 dac~; #X obj 17 237 delwrite~ \$0-delay 1; #X obj 17 105 *~ 0.9; #X obj 38 261 env~ 16384; #X obj 37 308 ; #X obj 39 331 ; #X obj 38 282 t f f f; #X obj 77 309 ==; #X obj 39 352 sel 1; #X obj 39 373 spigot 1; #X msg 39 417 \; pd quit; #X obj 135 329 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X obj 180 310 writesf~; #X msg 143 292 stop; #X obj 39 394 delay 1000; #X obj 141 86 t f f; #X msg 180 289 open workaround-\$1-\$2.wav \, start; #X msg 255 35 \; workaround 50 440; #X msg 255 75 \; workaround 500 44; #X connect 0 0 1 0; #X connect 0 0 29 0; #X connect 1 0 3 0; #X connect 1 0 28 0; #X connect 1 1 2 0; #X connect 2 0 8 0; #X connect 3 0 15 0; #X connect 4 0 13 0; #X connect 4 0 13 1; #X connect 4 0 14 0; #X connect 4 0 16 0; #X connect 4 0 25 0; #X connect 5 0 9 0; #X connect 6 0 5 0; #X connect 7 0 5 1; #X connect 8 0 4 1; #X connect 9 0 10 0; #X connect 10 0 11 0; #X connect 10 0 11 1; #X connect 11 0 12 0; #X connect 11 0 12 1; #X connect 12 0 8 1; #X connect 15 0 4 0; #X connect 16 0 19 0; #X connect 17 0 18 0; #X connect 18 0 21 0; #X connect 19 0 17 1; #X connect 19 1 17 0; #X connect 19 2 20 0; #X connect 20 0 18 1; #X connect 21 0 22 0; #X connect 21 0 26 0; #X connect 22 0 27 0; #X connect 24 0 22 1; #X connect 26 0 25 0; #X connect 27 0 23 0; #X connect 28 0 6 0; #X connect 28 1 7 0; #X connect 29 0 25 0; ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] workaround for -batch -nogui delwrite~ etc bugs
On 08/08/11 15:38, Mathieu Bouchard wrote: On Mon, 8 Aug 2011, Claude Heiland-Allen wrote: Using pd -nogui or pd -batch, some stuff seems not set up yet when the patch is loaded, making [delwrite~] (among others) not work correctly. Did you try extended 42.6 or vanilla 43 ? Previously I used vanilla 42. I just now tried vanilla 43: -nogui works partially [delwrite~] sounds ok when importing raw data into audacity [writesf~] saves audio data but gives unplayable files (mplayer Cannot find codec for audio format 0x1.) -batch has problems [delwrite~] sounds ok (when using [soundfiler] to save output) [writesf~] gives empty files (just 44 bytes of header) pd runs in realtime mode without being asked (watchdog blah) So, I guess the [delwrite~] issue is fixed (thanks!) but the other issues with [writesf~] make the workaround still necessary. Claude ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Adding Gridflow to the visual arsenal
On 17/05/11 15:32, Pagano, Patrick wrote: Does anyone have any how to patches for bridging GEM/Gridflow/pdp/pidip? gridflow has bridges to PDP and Gem: #to_pdp #from_pdp #to_pix #from_pix gridflow must be loaded after pdp/Gem for the bridge to be loaded: $ pd -lib pdp:Gem:gridflow an example patch for the Gem bridge: gridflow/examples/game_of_life_gem.pd Claude ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] loading patches very slow in linux
On 16/05/11 15:56, Mathieu Bouchard wrote: there seems to be a problem finding abstractions quickly. Probably bitrotted by now, and had issues/missing features even then: http://lists.puredata.info/pipermail/pd-list/2008-10/065307.html Another thing to possibly check is whether dsp is on or off when you load patches, perhaps? I think Pd tries to turn it off before and restore the state after loading, though. Claude -- http://claudiusmaximus.goto10.org ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] dsp external pointer problem
Hi, Unrelated to your issue, perhaps, but I thought this work mentioning: On 12/05/11 09:34, Ahmet Kizilay wrote: t_int *ak_addthese_tilde_perform(t_int *w) { [snip] t_sample ** ins = getbytes(sizeof(t_sample *) * 2); [snip] There's a memory leak here (no corresponding call to freebytes() or whatever it is called)! And technically it's not realtime-safe to allocate memory in perform method (but this doesn't matter so much with the current Pd implementation, afaik). I suggest allocating this memory in the constructor (new method) (and freeing it in the destructor), because you (probably) already know the number of inlets in the constructor (otherwise allocate in the dsp add method). Claude -- http://claudiusmaximus.goto10.org ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] multiple OSC messages in one udp packet?
On 10/05/11 10:38, matteo sisti sette wrote: Does the OSC standard (or to be more precise, the standard for OSC over UDP) allow to pack multiple OSC messages into a single UDP packet? No time to read it all myself, but: http://opensoundcontrol.org/spec-1_0 I ask this because I am sending OSC messages from Pd to TouchOSC (on an iPad) and when I send it multiple messages in 0 logical time (even just 3 or 4 messages at a time, not dozens), Have you tried explicitly packing them into OSC bundles? This should make them really occur at the same time, rather than as soon as received. And it might fix the issue as a side effect. TouchOSC It seems some recent versions are buggy, don't know if it supports OSC bundles... http://hexler.net/forum/viewthread/31/ almost systematically loses many of them. Claude -- http://claudiusmaximus.goto10.org ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] msg to abstractions
On 05/05/11 10:31, Jeppi Jeppi wrote: Hi again,just another question regarding the pd-msg system. Say I have two parametrized abstractions [boo 1] and [boo 2] loaded in my patch. When I send a message to them to dynamically create some objects inside, I send it as [obj 20 30 metro 100(---[s pd-boo.pd] which, of course, goes to both instances. Would it be a way to send the message only to a single instance, maybe taking into account the creation parameters? Adding prefix to the abstraction names is not elegant, as that would require previously creating n abstractions, named [1_boo] , [2_boo] and so on...clumsy I would probably workaround this stuff by doing something like this: boo.pd 8 [inlet]-- or a global [receive BOO] | [route $1] | | [loadbang] | | | [clear( -- click this before saving too | / [s pd-$0-boo-subpatch] -- the $0 is local to each abstraction [pd $0-boo-subpatch] 8 Then [list prepend 1] etc each message before sending it to all the [inlet] or [send BOO] or whatever. Claude -- http://claudiusmaximus.goto10.org ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] msg to abstractions
On 05/05/11 11:56, Claude Heiland-Allen wrote: On 05/05/11 10:31, Jeppi Jeppi wrote: Adding prefix to the abstraction names is not elegant, as that would require previously creating n abstractions, named [1_boo] , [2_boo] and so on...clumsy Just remembered there is a loader plugin out there somewhere that creates new abstractions from a template for any unknown names - not sure where to find it though IOhannes might know? Claude -- http://claudiusmaximus.goto10.org ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] multiple [udpreceive n] instances
On 04/05/11 12:32, Jamie Bullock wrote: What I want to do is instantiate [udpreceive 5000] and then another [udpreceive 5000] I get the same data to both objects. Alternatively, can anyone suggest away to achieve the same result with the existing objects? You could (but see caveat below) make an abstraction [myudpreceive]: 8 [udpreceive $1] | [send MYUDPRECEIVE-$1] [receive MYUDPRECEIVE-$1] | [outlet] 8 The top half will only work in one instance but the bottom half will work in all of them. But: expect problems if you delete the original instance with the working/instantiated [udpreceive]... so probably better to have one toplevel / master [udpreceive] that sends to a global receive name. Claude -- http://claudiusmaximus.goto10.org ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Midi note handling for monophonic synth
Hi Joe, On 21/04/11 12:48, Joe White wrote: Hi all, I'm implementing a synth in Pd using midi/notein as an input. One problem I keep coming up against is handling note off messages. This guy's blog post describes the issue - http://kemptonmooney.com/2010/09/pure-data-midi-note-off-solution/ However, I think his solution is not exactly what I'm looking for. The synths I use in Logic have note priority methods and remember all held down notes (or at least 10). If pitch is the only thing determining which notes should sound, you could use a [table $0-active 128] (one index for each MIDI note) to count how many times each note has been pressed and not released, then process it how you like. If the order of key presses matters, you could keep an ordered list of pressed notes (example below using Haskell to prototype the algorithm) and sound the most recently pressed note that hasn't been released: 8 $ ghci ... let soundingNote = listToMaybe let noteOn note vel notes = (note, vel) : notes let noteOff note vel notes = deleteBy ((==)`on`fst) (note, vel) notes let noNotes = [] let test = noteOff 62 60 . noteOn 60 60 . noteOn 62 60 $ noNotes soundingNote test Just (60,60) soundingNote (noteOff 60 25 test) Nothing 8 I wondering if anyone has managed to implement something like this in Pd or might know where I can find out more about it. Might be something more directly useful in the previous discussions: http://lists.puredata.info/search/Pd-list?query=monophonicmax=100result=normalsort=score Claude -- http://claudiusmaximus.goto10.org ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Graph a circle arc in an array?
On 10/04/11 15:12, Tyler Leavitt wrote: I've not had any real success using the formulas with [sin] and [cos]... maybe I'm missing something here. The only solution that I've gotten to work is the midpoint circle algorithm with Peter's patch. A circle centered at the origin is implicitly[1] described by: x^2 + y^2 = r^2 Rearranging this gives: y = +/- sqrt(r^2 - x^2) for -r = x = r Hopefully this more useful for your purposes than the parametric form: (x,y) = (cos(t), sin(t)) for -PI = t = PI Should be much simpler to implement than an optimized-for-integers Bresenham-style implementation. Relatedly[2] I like this function too: f(x,t) = sqrt((t^2)+(x^2)*(2*t+1))-t for -1 = x = 1 and 0 = t [1] http://en.wikipedia.org/wiki/Circle#Cartesian_coordinates [2] http://en.wikipedia.org/wiki/Conic_section Claude -- http://claudiusmaximus.goto10.org ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
[PD] [ot] Re: Making a Realtime Convolution External
On 07/04/11 16:15, Mathieu Bouchard wrote: Suppose that you launch a second fred on another cpu. http://www.archive.org/download/GOSUB10-002/GOSUB10-002-02-ClaudiusMaximus--Drain_Hops_Crawling_On_My_Fred.ogg http://gosub10.org/GOSUB10-002.html Claude -- http://claudiusmaximus.goto10.org ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] 3 new gui-plugins
On 03/04/11 22:38, Hans-Christoph Steiner wrote: traverse the whole search path to see the objects that could be loaded. Its doable. I don't think so, consider for example: EXTERN void orly_setup(void) { if (rand() % 666 == 42) { yarly_setup(); } else { exit(7); } } ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] [Pdmtl] [PD-announce] four more fractal videos, and reposting the two previous ones
On 04/02/11 16:45, j...@rybn.org wrote: (BTW, can you make it so you don't have to copy-paste each time you want a new level to the fractal ? because in my patch, I just have to change a number) Sure it is possible with Lua or something else. Or even plain Pd... Claude -- http://claudiusmaximus.goto10.org #N canvas 492 24 788 677 10; #X msg 23 25 create \, 1; #X obj 23 66 gemwin; #X msg 33 45 destroy; #X obj 153 31 gemhead; #X obj 153 491 gemlist; #X obj 153 598 polygon 3; #X obj 170 512 loadbang; #X msg 170 535 -0.5 -0.28866 0; #X msg 187 555 0.5 -0.28866 0; #X msg 204 575 0 0.57735 0; #X obj 153 241 route T R t r s [ ]; #X obj 184 400 rotateXYZ 0 0 180; #X obj 184 357 gemlist; #X obj 232 312 gemlist; #X obj 184 423 scaleXYZ 0.333 0.333 1; #X obj 232 334 GEMglPushMatrix; #X obj 248 269 gemlist; #X obj 248 291 GEMglPopMatrix; #X obj 168 447 gemlist; #X obj 168 470 rotateXYZ 0 0 60; #X msg 35 514 draw line; #X obj 184 380 translateXYZ 0.333 0.192 0; #X msg 35 534 draw fill; #X obj 153 52 scaleXYZ 6 6 1; #X msg 153 203 T \, R \, [ \, t \, T \, ] \, R \, [ \, t \, T \, ] \, R \, [ \, t \, T \, ] \, R \, [ \, t \, T \, ] \, R \, [ \, t \, T \, ] \, R \, [ \, t \, T \, ]; #X obj 153 72 t b a; #X text 361 503 Jack/RYBN 2011; #X text 106 513 -; #X text 106 533 -; #X obj 60 177 v \$0-depth; #X obj 60 151 b; #X obj 63 261 t b b f; #X obj 63 282 v \$0-depth; #X obj 63 303 - 1; #X obj 63 324 v \$0-depth; #X obj 102 304 + 1; #X obj 101 42 vradio 15 1 0 8 empty empty empty 0 -8 0 10 -262144 -1 -1 3; #X obj 60 224 sel 0; #X text 361 523 recursified by Claude Heiland-Allen 2011; #X connect 0 0 1 0; #X connect 2 0 1 0; #X connect 3 0 23 0; #X connect 4 0 5 0; #X connect 6 0 7 0; #X connect 6 0 8 0; #X connect 6 0 9 0; #X connect 7 0 5 1; #X connect 8 0 5 2; #X connect 9 0 5 3; #X connect 10 0 30 0; #X connect 10 1 18 0; #X connect 10 2 12 0; #X connect 10 5 13 0; #X connect 10 6 16 0; #X connect 11 0 14 0; #X connect 12 0 21 0; #X connect 13 0 15 0; #X connect 16 0 17 0; #X connect 18 0 19 0; #X connect 20 0 5 0; #X connect 21 0 11 0; #X connect 22 0 5 0; #X connect 23 0 25 0; #X connect 24 0 10 0; #X connect 25 0 30 0; #X connect 25 1 4 1; #X connect 25 1 18 1; #X connect 25 1 12 1; #X connect 25 1 13 1; #X connect 25 1 16 1; #X connect 29 0 37 0; #X connect 30 0 29 0; #X connect 31 0 32 0; #X connect 31 1 24 0; #X connect 31 2 35 0; #X connect 32 0 33 0; #X connect 33 0 34 0; #X connect 35 0 34 0; #X connect 36 0 37 1; #X connect 37 0 4 0; #X connect 37 1 31 0; ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Scheduling events, libpd, and sequencing
On 15/02/11 13:30, Peter Kirn wrote: But what would be the most efficient way to send events to those objects for future scheduling? I have some code that allows you to cache incoming events (eg: from [netreceive]) and dispatch them all at once in 0 logical time. I called it [bundle] because of the vague similarity to OSC bundles. Something like begin, foo, bar, baz, end /* with arbitrary time between messages */ | [bundle] | foo, bar, baz /* all in 0 logical time, when 'end' arrives */ There are some issues (like 'list' vs 'notlist' messages, 'begin' and 'end' won't be stored, negative nesting count (too many 'end'), ...) but it might be a useful starting point. qlist seems to be built for the purpose, but two issues: 3. sends to names instead of outlet, which makes it much less flexible Claude #N canvas 0 0 331 368 10; #X obj 19 20 inlet; #X obj 19 41 route begin end; #X obj 19 62 b; #X obj 92 62 b; #X obj 92 83 v \$0-depth; #X obj 92 104 - 1; #X obj 119 146 v \$0-depth; #X obj 19 83 v \$0-depth; #X obj 19 145 v \$0-depth; #X obj 19 104 + 1; #X obj 92 166 sel 0; #X obj 138 118 spigot; #X obj 190 114 spigot; #X obj 138 56 t a a b; #X obj 197 53 v \$0-depth; #X obj 197 93 == 0; #X obj 233 94 != 0; #X obj 197 73 t f f; #X obj 243 336 outlet; #X obj 92 280 textfile; #X obj 190 134 list prepend add; #X obj 190 155 list trim; #X msg 131 211 rewind; #X obj 92 187 t b b b; #X obj 111 231 until; #X msg 92 252 clear; #X obj 92 125 t f f; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 3 0; #X connect 1 2 13 0; #X connect 2 0 7 0; #X connect 3 0 4 0; #X connect 4 0 5 0; #X connect 5 0 26 0; #X connect 7 0 9 0; #X connect 9 0 8 0; #X connect 10 0 23 0; #X connect 11 0 18 0; #X connect 12 0 20 0; #X connect 13 0 11 0; #X connect 13 1 12 0; #X connect 13 2 14 0; #X connect 14 0 17 0; #X connect 15 0 11 1; #X connect 16 0 12 1; #X connect 17 0 15 0; #X connect 17 1 16 0; #X connect 19 0 18 0; #X connect 19 1 24 1; #X connect 20 0 21 0; #X connect 21 0 19 0; #X connect 22 0 19 0; #X connect 23 0 25 0; #X connect 23 1 24 0; #X connect 23 2 22 0; #X connect 24 0 19 0; #X connect 25 0 19 0; #X connect 26 0 10 0; #X connect 26 1 6 0; #N canvas 0 0 450 300 10; #X obj 124 153 bundle; #X msg 31 27 begin; #X msg 32 116 end; #X msg 120 77 foo; #X msg 168 81 bar; #X msg 212 79 baz; #X obj 124 174 print bundle; #X connect 0 0 6 0; #X connect 1 0 0 0; #X connect 2 0 0 0; #X connect 3 0 0 0; #X connect 4 0 0 0; #X connect 5 0 0 0; ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] algorithms for drawing filter response curves
On 06/02/11 23:12, Hans-Christoph Steiner wrote: now I'm looking for the algorithms for generating a plot of the frequency response of a given set of biquad coefficents? See perhaps: http://www-users.cs.york.ac.uk/~fisher/mkfilter/ In particular: http://www-users.cs.york.ac.uk/~fisher/software/mkfilter/current/complex.C global complex evaluate(complex topco[], int nz, complex botco[], int np, complex z) http://www-users.cs.york.ac.uk/~fisher/software/mkfilter/current/genplot.C static void computefr(complex fr[], int nsteps) Claude ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Picture to Audio to Array
On 26/01/11 19:32, Moritz Schell wrote: Everytime I repeat the whole action (with the same picture - same grey values) a new wave appears in the array. 1. [tabwrite~] is *not* clock-aware, so it starts on block boundaries 2. [vline~] *is* clock-aware, so it might start sub-sample accurate 3. [osc~] has internal state (its phase) which you are not resetting a possible solution might involve: 1. use [line~] instead of [vline~] 2. reset [osc~] phase when you start the [tabwrite~] Claude ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
[PD] [cos~] broken for moderately large inputs
Hi, Seems [cos~] only gives expected results between -1024 and 1024. Above 1024 the frequency halves, halving again at 5120, etc. Below -1024 the frequency doubles, until chaos at -3072. http://claudiusmaximus.goto10.org/g/tech/cos~-test.pd.png http://claudiusmaximus.goto10.org/g/tech/cos~-test-2.pd.png http://claudiusmaximus.goto10.org/g/tech/cos~-test-3.pd.png Claude ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Capture video+audio from PD using XvidCap.
On 08/01/11 10:11, Dima Bak wrote: Hi! I want to record video of my session in pd. I try to use XvidCap, but there is no sound. What audio driver i need to use in pd? Thanks. I haven't found the perfect solution yet. Using JACK in Pd, you might try recordmydesktop or istanbul. I found recordmydesktop silently dropped frames giving out of sync jittery output, while istanbul crashed on exit but I could rescue a file from /tmp/. Recordmydesktop seems no longer developed, while istanbul has recent commits in its repository. Both encode to Ogg Theora+Vorbis format. Istanbul is based on gstreamer, so it should be possible to use gstreamer directly if you need to configure more options. http://recordmydesktop.sourceforge.net/about.php http://live.gnome.org/Istanbul Claude ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Osc phase and number of periods for subsonic touch-music
On 08/12/10 07:32, Daniel K. wrote: generating sine waves with finite numbers of periods that always started with the same phase. 10 periods of 20Hz sine wave, subsample accurate timing without needing [block~]: 0, 10 500 | [vline~] | [- 0.25] | [cos~] | [dac~] For N periods of F Hz, something like this should work if my mental algebra is up to scratch: 0, N T where T = 1000 * N / F Have fun! Claude -- http://claudiusmaximus.goto10.org ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] OpenMP and Pd
Hi Pedro, Somehow I thought this was a new message, but the date tells me it's from quite some time ago. Replying anyway as it may be interesting to you and all: On Thu, May 20, 2010 at 4:46 PM, Pedro Lopespedro.lo...@ist.utl.pt wrote something roughly along the lines of: I was trying to include pragma comments of OpenMp in a PD external, but it does not seem to work for some reason. undefined symbol: GOMP_parallel_start OpenMP has a run time system that is linked into the executable when you compile with -fopenmp - if you compile a shared object (like a Pd external) with -fopenmp it hopes that the executable that loads it will have the OpenMP run time system inside it. So the fix is simple: just compile Pd itself with -fopenmp, then compile your external with -fopenmp too, and it should Just Work (TM). Attached patch against pd-0.42-5 allowed me to load a slightly modified version of gridflow and see Pd using more than one core: http://claudiusmaximus.goto10.org/g/tech/pd-gridflow-openmp.png (After applying the patch, run autoreconf to regenerate ./configure) NB: while it does use more than one core, I just compared with the single core version of gridflow without openmp and it uses only 25% of my cpu (on one core) while the openmp version uses 145% of my cpu (spread over two cores). So, it's no magic bullet... Claude -- http://claudiusmaximus.goto10.org --- pd-0.42-5.orig/src/configure.in 2008-12-10 18:30:53.0 + +++ pd-0.42-5/src/configure.in 2010-12-06 09:17:50.0 + @@ -2,11 +2,12 @@ AC_INIT(d_arithmetic.c) AC_SUBST(alsa, yes) -AC_SUBST(jack, no) +AC_SUBST(jack, yes) AC_SUBST(portaudio, no) AC_SUBST(portmidi, no) AC_SUBST(binarymode, -m755) AC_SUBST(fftw, no) +AC_SUBST(openmp, yes) AC_SUBST(tk, yes) AC_SUBST(PDLIB) AC_SUBST(CPPFLAGS) @@ -44,6 +45,8 @@ setuid=$enableval) AC_ARG_ENABLE(fftw, [ --enable-fftw use FFTW package], fftw=$enableval) +AC_ARG_ENABLE(openmp, [ --enable-openmp use OpenMP package], +openmp=$enableval) AC_ARG_ENABLE(fat, [ --disable-fat build fat binary on Mac OS X], fat=$enableval, fat=yes) AC_ARG_ENABLE(tk, [ --disable-tkbuild without tcl/tk-GUI], @@ -254,6 +257,10 @@ else MORECFLAGS=$MORECFLAGS -O6 -funroll-loops -fomit-frame-pointer fi +if test x$openmp = xyes; +then +MORECFLAGS=$MORECFLAGS -fopenmp +fi if test x$jack = xyes; then LDFLAGS=$LDFLAGS -lrt -ljack ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Simple Subtractive Synth filter envelope
On 22/11/10 21:48, samuel rowe wrote: an envelope generator with ADSR vline~ is your friend here: 1 10, 0.5 100 10, 0 1000 2000 | [vline~] | [*~]\[osc~ 666] | [dac~] the output will not feed into the argument for a filter cutoff value. right. you can't connect signal outlets to message inlets: http://www-crca.ucsd.edu/~msp/Pd_documentation/x2.htm#s4.2 and most of pd's filters (lop~, hip~, bp~, ...) expect messages for the parameters. the workaround is to use the raw filter objects to build more complex filters from poles and zeros. I made a resonant low pass filter using that method: http://lists.puredata.info/pipermail/pd-list/2007-11/056858.html [PD] pd filter with pole and zero Sat Nov 24 19:00:13 CET 2007 There are also externals with more filters (iemlib has many) and some abstractions out there somewhere. Good luck! Claude -- http://claudiusmaximus.goto10.org ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] 3d tube with control of the position of the extremities
Hi Luiz, On 17/11/10 22:10, Luiz Naveda wrote: I was trying to build 3d cylinders using GEM. But I the actual solutions (cylinder and tube) cannot be easily manipulated. I would like to control the x y z of the extremities of the tube, like a [polygon 2] but with control of diameter and faces of the cylinder. Any useful tip? I am really missing the point or there is no easy solution for that in PD? I needed this a while ago for my [1] MarkIII project, so I made it. There was no really easy solution, a lot of maths/geometry to do. See attached. Maybe there is a better way? Claude [1] http://claudiusmaximus.goto10.org/cm/2010-01-28_markiii_demos.html -- http://claudiusmaximus.goto10.org #N canvas 0 0 450 387 10; #X obj 15 19 inlet; #X obj 113 19 inlet; #X obj 211 19 inlet; #X obj 323 50 inlet; #X obj 16 40 t a a; #X obj 16 361 outlet; #X obj 113 44 unpack f f f; #X obj 211 44 unpack f f f; #X obj 173 102 -; #X obj 203 102 -; #X obj 43 62 separator; #X obj 225 262 loadbang; #X obj 30 318 cylinder; #X obj 172 150 t f f; #X obj 173 174 *; #X obj 44 98 translate 1 0 0 0; #X obj 46 223 rotate; #X obj 212 150 t f f; #X obj 213 174 *; #X obj 262 150 t f f; #X obj 263 174 *; #X obj 218 199 +; #X obj 174 202 +; #X obj 174 225 sqrt; #X obj 174 248 swap; #X obj 175 272 /; #X obj 174 299 expr 180.0*acos($f1)/3.1415926; #X obj 174 329 *; #X obj 211 317 expr if($f10 \, -1 \, 1); #X obj 93 196 pack f f; #X msg 93 221 \$2 \$1 0; #X obj 138 174 * -1; #X obj 139 154 *; #X obj 93 156 *; #X obj 32 293 translateXYZ 0 0 0; #X obj 235 104 +; #X obj 248 66 -; #X obj 311 101 == 0; #X obj 313 121 * 1e-05; #X obj 250 87 t f f; #X obj 149 228 /; #X obj 142 252 * 0.5; #X obj 31 271 scaleXYZ -1 1 1; #X obj 35 249 separator; #X msg 224 280 7; #X connect 0 0 4 0; #X connect 1 0 6 0; #X connect 2 0 7 0; #X connect 2 0 15 2; #X connect 3 0 12 1; #X connect 3 0 34 3; #X connect 3 0 40 1; #X connect 4 0 5 0; #X connect 4 1 10 0; #X connect 6 0 8 0; #X connect 6 1 9 0; #X connect 6 2 36 0; #X connect 7 0 8 1; #X connect 7 1 9 1; #X connect 7 2 36 1; #X connect 8 0 13 0; #X connect 8 0 33 0; #X connect 9 0 17 0; #X connect 9 0 32 0; #X connect 10 0 15 0; #X connect 11 0 44 0; #X connect 13 0 14 0; #X connect 13 1 14 1; #X connect 14 0 22 0; #X connect 15 0 16 0; #X connect 16 0 43 0; #X connect 17 0 18 0; #X connect 17 1 18 1; #X connect 18 0 21 0; #X connect 19 0 20 0; #X connect 19 1 20 1; #X connect 20 0 21 1; #X connect 21 0 22 1; #X connect 22 0 23 0; #X connect 23 0 24 0; #X connect 23 0 40 0; #X connect 24 0 25 0; #X connect 24 1 25 1; #X connect 25 0 26 0; #X connect 26 0 27 0; #X connect 27 0 16 1; #X connect 28 0 27 1; #X connect 29 0 30 0; #X connect 30 0 16 2; #X connect 31 0 29 1; #X connect 32 0 31 0; #X connect 33 0 29 0; #X connect 34 0 12 0; #X connect 35 0 19 0; #X connect 35 0 24 1; #X connect 35 0 28 0; #X connect 35 0 32 1; #X connect 35 0 33 1; #X connect 36 0 39 0; #X connect 37 0 38 0; #X connect 38 0 35 1; #X connect 39 0 35 0; #X connect 39 1 37 0; #X connect 40 0 41 0; #X connect 41 0 42 3; #X connect 42 0 34 0; #X connect 43 0 42 0; #X connect 44 0 12 2; #N canvas 0 0 450 422 10; #X obj 134 147 gemwin 25; #X obj 116 173 gemhead; #X msg 198 300 0.1; #X obj 117 194 t a a; #X obj 168 222 world_light; #X msg 228 198 1 0 1; #X msg 136 87 create \, 1 \, lighting 0; #X msg 189 267 1 1 0; #X floatatom 266 231 5 0 0 0 - - -; #X obj 296 284 pack f f f; #X obj 306 259 t b a; #X floatatom 312 230 5 0 0 0 - - -; #X obj 346 259 t b a; #X floatatom 352 230 5 0 0 0 - - -; #X obj 283 312 t a b; #X msg 296 334 -2 -2 0; #X obj 145 365 tube2; #X connect 1 0 3 0; #X connect 2 0 16 3; #X connect 3 0 16 0; #X connect 3 1 4 0; #X connect 5 0 4 1; #X connect 6 0 0 0; #X connect 7 0 16 2; #X connect 8 0 9 0; #X connect 9 0 14 0; #X connect 10 0 9 0; #X connect 10 1 9 1; #X connect 11 0 10 0; #X connect 12 0 9 0; #X connect 12 1 9 2; #X connect 13 0 12 0; #X connect 14 0 16 1; #X connect 14 1 15 0; #X connect 15 0 16 2; ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] ubuntu ppa's
On 05/11/10 05:22, august wrote: I'd like to contribute to the puredyne ppa's at launchpad. Great! I was wondering if someone could help me get up to speed on how to make a ppa, maybe with a simple example I can just copy and paste. 1. create a Launchpad account 2. sign the code of conduct 3. create a Launchpad PPA for your own use/testing/etc 4. package the software Debian-style 5. dput it to your own PPA for Launchpad to build 6. join the Puredyne team 7. copy stable versions from your PPA to the Puredyne PPA The hard part is step 4 - takes some trial-and-error, especially for software that isn't simple to build. A quick way to get examples is add a deb-src line to correspond to the deb line for the Puredyne PPA in your sources.list.d, then sudo apt-get update apt-get source pd-foo to unpack the source deb. -august. Thanks, Claude -- http://claudiusmaximus.goto10.org ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Pd 20% idle CPU usage on MBP
Hi, On 28/10/10 16:41, Jamie Bullock wrote: Pd's idle CPU usage is 15-20%. Does anyone know why this is? probably a bug.. you could try using gdb and interrupting Pd to see where it is being busy, or some profiling tool (gprof or strace or shark (?) or something else). Is there anything that can be done to improve the situation? Try turning DSP on and then off again, maybe. Claude ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] opencv
On 28/10/10 17:39, Philip Cunningham wrote: Hello list, I wonder if there are any tutorials available on how to use OpenCV with Pd? I'm trying to download necessary components using the following site: http://www.hangar.org/wikis/lab/doku.php?id=start:puredata_opencv but having very little luck. Operating system is Ubuntu 10.4. You could try the Puredyne PPA for pd-pdp-opencv (available right nownow) and pd-pix-opencv packages (available soon..) for Lucid: https://launchpad.net/~puredyne-team/+archive/ppa Claude ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
[PD] [PD-announce] z→z²+c released on GOSUB10 netlabel
Hi everyone, My latest work made with Pure-data is available, including the source code so you can make your own generative fractal music: http://gosub10.org/GOSUB10-003.html The Mandelbrot set is possibly the world’s most famous fractal. z→z²+c is a series of sonifications, focussing on the periodic attractors found almost everywhere within the Mandelbrot set. Given just two real numbers (forming one point in the complex plane), dynamic patterns can emerge as the one simple equation governing the system is repeated over and over: z→z²+c The source code for this release (implemented in Pure-data using GridFlow and zexy) is free software distributable under the terms of the GNU General Public License (version 3 or greater). Copyleft: This is a free work, you can copy, distribute, and modify it under the terms of the Free Art License. Released on 17th October 2010. Track listing: 1. ClaudiusMaximus – The Military-Industrial Complex 2. ClaudiusMaximus – After The Despoilment 3. ClaudiusMaximus – Race Against Time 4. ClaudiusMaximus – Before Civilisation Dedicated to innovative music and audio/visuals, the GOSUB10 label will feature an eclectic group of musicians drawn together by their shared use of Free/Libre/Open Source Software (FLOSS). Freely distributed by stream, download and special DVD releases, and made available through an open license, GOSUB10 is run by the GOTO10 collective – an international group of artists, musicians and programmers, dedicated to FLOSS and digital arts. Brought to life in a intensive four day work sprint but years in the making, the GOSUB10 netlabel is a natural extension of GOTO10’s activities supporting and promoting digital art alongside FLOSS tools through workshops, festivals, exhibitions, writing, and more. http://gosub10.org Claude -- http://claudiusmaximus.goto10.org ___ Pd-announce mailing list pd-annou...@iem.at http://lists.puredata.info/listinfo/pd-announce ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] OSC messages without /
On 21/10/10 18:26, Leandro da Mota Damasceno wrote: So, the question is... Is there any workaround I could try in PD? | [list split 1] | | /$1 | | | [list append ] | [list trim] | ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] reverb in pd
On 20/10/10 16:20, Mathieu Bouchard wrote: On Wed, 20 Oct 2010, ronni montoya wrote: Hello, i was trying freeverb in pd and i dont like how it sounds. I was wondering if there are any other reverb objects or externals that sound better. Any idea? I'm still pretty much just using [delread~] and [vd~], with multipliers like [*~ 0.95] and [*~ -0.95] for example... afair, natural echo is modelled by a negative multiplier. each 30 centimetres span needs 1 ms. don't forget that if one delay is less than a block size you need a subpatch and [block~]. A while ago I made a reverb with 16 delay lines using iemmatrix and lua (and possibly other externals), the concept was 4D room simulation or something along those lines - not sure how accurate my maths was but it sounds nice to my ears...: svn co https://code.goto10.org/svn/maximus/2008/hverb/ http://claudiusmaximus.goto10.org/feed/media/ClaudiusMaximus_-_HyperShoeBoxen.ogg http://claudiusmaximus.goto10.org/feed/media/ClaudiusMaximus_-_Corridor_Pacing.ogg Claude -- http://claudiusmaximus.goto10.org ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] noob asking : is there a way to script pd?
On 14/10/10 22:07, Achim Bloch wrote: Hello listees I'd like to know if there is a way to act on pd objects via a script language, I mean, coding behaviors and feedbacks? Sorry if this sounds noob, my knowledge about pd is very basic. Thanks, C I'm not sure what you mean - do you want to write new objects, or do you want to script patch creation/usage? You can write objects in scripting languages (python, lua, ...), and these objects can send messages, and messages to canvases can create new objects and connect them and manipulate them in other ways - see also the iemguts library for additional ways of manipulating objects that might be what you mean. You can also interact with scripts running externally, using the pdsend/pdreceive executables or direct socket communication with [netsend] and [netreceive] in Pd. OSC is also an option if this workflow suits your problem domain. Claude ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Vline~ subsample accuracy clarification
On 10/10/10 23:20, Oliver Larkin wrote: Hi, Can someone explain to me how vline~ can align the endpoints of the envelope, accurate to a fraction of a sample You need to know some background about pd's scheduler for the following to make sense, here are some reasonable places to start reading: http://www.mail-archive.com/pd-list@iem.at/msg06215.html Re: [PD] accuracy of signal/message-objects IOhannes m zmoelnig Tue, 08 May 2007 00:16:54 -0700 http://www.mail-archive.com/pd-list@iem.at/msg06284.html Re: [PD] accuracy of signal/message-objects Frank Barknecht Wed, 09 May 2007 05:40:28 -0700 Essentially, Pd has a 'logical clock', which means messages have a time stamp that clock-aware objects can access. All the messages that would happen in 1 DSP block are executed before that DSP block is computed, which means that for example [vline~] can collect all its messages with time stamps so it knows exactly when each line segment is due to start. Then, for each sample in the DSP block, [vline~] checks if the current segment is over. If it isn't over, it outputs the next sample and carries on. If it has ended (most likely in-between the previous sample and the current sample), it uses the time stamps to start the next segment at exactly the right time, and calculates how far along that ramp it will be at the timestamp of the current sample. Of course the source code is more complicated than that, lots of things to consider like multiple line segments in between two samples, constant hold at the end of a line segment when no other is scheduled yet, etc. The main thing to note is that the time stamps are subsample accurate, which means clock-aware objects can be schedule messages with subsample accuracy. Of course, how much sense it is to implement this is a bit fuzzy - if you have 1 line segments in between 2 adjacent sample points, you'll miss out on a lot of detail... I don't really see how that's possible. my guess is that it's somehow similar to the way interpolation is used in fractional delay lines, but I can't quite translate that idea to an envelope. Thanks Oli Claude -- http://claudiusmaximus.goto10.org ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Shuffling arrays
On 04/10/10 16:06, martin.pe...@sympatico.ca wrote: That's a bad way to shuffle, The same way that it's a really bad way to sort - maybe it could be classed as a bogobubblesort. I chose to do it that way for aesthetic purposes (a jumbled sequence gradually returns to order) rather than efficiency... This might be relevant if you value correctness: http://okmij.org/ftp/Haskell/perfect-shuffle.txt as it can swap things back again and generally reduce the randomness, the way someone who is good at shufflng cards can put them all back the way they started while appearing to mix them up. A better way is to start at the beginning of the array, swap the first item with one of the remaining items, then swap the second item, up to the end. Martin Claude wrote: On 03/10/10 23:21, Andrew Faraday wrote: Hey Guys I've recently come across the .shuffle method in Ruby which randomly re-orders the content of an array. Does anyone know of a way to do this in Pd, that is, either change the order of notes within an array or output them in a random order (without repeating any part of it)? Help would be appreciated Andrew You can pick pairs of indices at random and swap them with tabread/tabwrite; repeat to shuffle more. I used a similar technique to gradually sort an array (swap random elements only if they are out of order): https://code.goto10.org/svn/maximus/2007/clouds-are-made-of-water/ http://www.archive.org/details/ClaudiusMaximus_-_Clouds_Are_Made_Of_Water (track 5) Claude -- http://claudiusmaximus.goto10.org ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Shuffling arrays
On 03/10/10 23:21, Andrew Faraday wrote: Hey Guys I've recently come across the .shuffle method in Ruby which randomly re-orders the content of an array. Does anyone know of a way to do this in Pd, that is, either change the order of notes within an array or output them in a random order (without repeating any part of it)? Help would be appreciated Andrew You can pick pairs of indices at random and swap them with tabread/tabwrite; repeat to shuffle more. I used a similar technique to gradually sort an array (swap random elements only if they are out of order): https://code.goto10.org/svn/maximus/2007/clouds-are-made-of-water/ http://www.archive.org/details/ClaudiusMaximus_-_Clouds_Are_Made_Of_Water (track 5) Claude -- http://claudiusmaximus.goto10.org ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] more dimensions for boids ?
Hi, On 01/10/10 09:58, ronni montoya wrote: Hello everybody , i was reading a paper that describe the software swarm music(Blackwell and Bentley 2002). This software uses 7 dimensional boids instead of 2 or 3 . I was wondering how can i implement this in pd? Is it possible to add more dimensions to the boids2d or boids3d external? how can i do that? I'm not familiar with these externals. If they are implemented similarly to 'msd' externals, you might be able to recompile for any number of dimensions (fixed at compile time) with a simple flag or so. how can i implement boids with more dimensions? With a vector representation of the rules for the boids to follow it should be possible to have as many dimensions as you like: for example, checking that a boid can see another boid: V `dot` P --- -0.5 , where V = view direction, P = boid direction ||V|| ||P|| This equation doesn't specify dimension, so should work for any. If its not possible wouldnt be any difference if i use 2 boids3d objects to control 6 audio parameters?would it be the same having 2 boids3d objects controlling 6 parameters and having one boid of 6 six dimentions? No - because you don't get transfer of energy/vibes/whatever between the two sets of 3 dimensions - they remain disjoint. It's not just about the total number of dimensions, but how they are connected together (at every point in the space). Claude -- http://claudiusmaximus.goto10.org ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] markov chains?
On 30/09/10 19:45, L.J. wrote: looking for implementations of markov chains i found http://footils.org/cms/weblog/2009/may/23/markov-chains-pure-data/ but the page seems to be gone? can anybody point me to some simple markov patches? There's one in the documentation but that method would become painful for larger chains and learning: doc/2.control.examples/21.markov.chain.pd GridFlow has an example too: gridflow/examples/markov.pd I also have a half-finished project using pdlua implementing Markov chain stuff, little-to-no documentation on how to use it though: http://claudiusmaximus.goto10.org/cm/2010-01-28_markiii_demos.html appreciated Claude -- http://claudiusmaximus.goto10.org ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Fw: Latency
On 18/09/10 00:44, Dan Wilcox wrote: On Sep 17, 2010, at 5:39 PM, Ed Kelly wrote: I will sell my FA-101 and get a UA! ... the UA-25 only has 2 ins and outs at 16bit, you can do 2 in at 24bit or 2 out at 24 bit, but not full duplex. I think it's slightly more complicated than that! With my UA-25 I get full duplex at 24bit with the sample rate switch set to 44.1kHz and 48kHz (and the advance mode switch set to 'on', in case that matters). At 96kHz it is probably different, but I never tried that yet. (This is with the original UA-25, which I believe has been discontinued - the later versions may have different behaviour.) From my qjackctl messages pane: --88-- apparent rate = 44100 creating alsa driver ... hw:1|hw:1|256|3|44100|2|2|nomon|swmeter|-|32bit control device hw:1 configuring for 44100Hz, period = 256 frames (5.8 ms), buffer = 3 periods ALSA: final selected sample format for capture: 24bit little-endian ALSA: use 3 periods for capture ALSA: final selected sample format for playback: 24bit little-endian ALSA: use 3 periods for playback --88-- Claude ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Any Live Coders?
On 12/09/10 23:35, Andrew Faraday wrote: Either way, I was wondering if anyone feels like sharing some of their mental templates for a live code approach. Just to get the ball rolling, here's one of my favorites: [mostly-incomprehensible ascii art snipped] Thanks for the tip/reminder that [s~]/[r~]/[throw~]/[catch~] might be useful in a livecoding session - I've always been frustrated by having to connect things together, especially when needing to insert something in the middle of a chain. Another good practice/hacky workaround for Pd livecoding is inserting extra [*~ 1] all over the place so you can break a stereo chain atomically later on. Otherwise, I usually prepare some small abstractions for drums ([kick~] [snare~] [clap~] [hihat~] etc), as coding a reasonable sounding drum synth is hard (in fact I think I mostly 'borrowed' from Andy Farnell's stuff). And some simple effects that are boring to code too, like delay-based [pitchshift~] and audio-rate [compress~] (my own invention that sounds too extreme, but stops everything clipping and I don't have to worry about levels so much). One of my tricks when live coding (and more generally) is using arithmetic on beat counts, like [*] [+] [div] [mod] in various combinations. Then using the resulting numbers as frequency multipliers (for harmonic series/scales). For a (composed) EP that uses this technique, see: http://www.archive.org/details/ClaudiusMaximus_-_Clouds_Are_Made_Of_Water in particular the third track. The same kind of thing works for slower oscillators, to get rhythms from waveshaping a [phasor~] (I think this might be what you were trying in the ascii diagram, perhaps?). Another trick is to use delay effects to amplify your mistakes and make them seem intentional by repetition. Pitchshifts in a feedback delay lines are fun too. Anyway, I uploaded some older recordings this morning, four Pd livecoding sessions: http://www.archive.org/details/ClaudiusMaximus_-_Livecoding_2008 Listening back to them with a critical ear, I think in places I forgot the value of (self-)sabotage for making more interesting improvised music - getting locked into a groove (even if it's funky) isn't good if it goes on for too long. Claude -- http://claudiusmaximus.goto10.org ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Guitar distortion (Chebyshev?)
On 12/09/10 15:31, Pierre Massat wrote: I m not sure whether this is the right way of dealing with guitar distortion. I don't think there's a right way - judge by your ears, if you like it then that way is good for you at that particular moment in time. Personally when I want distortion I use various (frequency-) filters and expr~ to waveshape, but my input is generally synthetic. Miller's patch for guitar has an interesting waveshaping technique you could borrow: essentially it involves separating a sinusoid into separate phase/amplitude information, and waveshaping from the phase before recombining with the amplitude. Tihs could probably be extended to a 2D wavetable with a [tabread16~] or something similar. Results without a separate pickup for each string (necessary to get close to a single-frequency sinusoid) will probably be very strange. http://www-crca.ucsd.edu/~msp/smeck/latest/doc/index.htm Another thing to consider is aliasing: I read somewhere (and I hope I'm not repeating untruths) that you need to oversample by a factor of N if you waveshape by a polynomial of degree N (eg a cubic would need 3x oversampling to avoid aliasing). Claude -- http://claudiusmaximus.goto10.org ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] prime numbers
On 11/09/10 21:33, Kim Cascone wrote: is there a Pd object for generating prime numbers? A prime number has exactly two factors (1 and itself). I attached an abstraction to generate a list of all factors of a number, which could be used to see if a number is prime (inefficiently). Claude -- http://claudiusmaximus.goto10.org #N canvas 0 0 341 412 10; #X obj 24 22 inlet; #X obj 24 61 t b f f b; #X obj 24 42 max 1; #X obj 36 238 list prepend; #X obj 37 260 t a a; #X obj 25 286 list append; #X obj 25 313 outlet; #X obj 36 85 until; #X obj 36 106 f; #X obj 64 106 + 1; #X obj 36 134 t f f; #X obj 59 155 swap; #X obj 59 176 mod; #X obj 59 196 ==; #X obj 36 217 spigot; #X msg 75 84 1; #X connect 0 0 2 0; #X connect 1 0 5 0; #X connect 1 1 7 0; #X connect 1 2 11 1; #X connect 1 3 3 1; #X connect 1 3 15 0; #X connect 2 0 1 0; #X connect 3 0 4 0; #X connect 4 0 5 1; #X connect 4 1 3 1; #X connect 5 0 6 0; #X connect 7 0 8 0; #X connect 8 0 9 0; #X connect 8 0 10 0; #X connect 9 0 8 1; #X connect 10 0 14 0; #X connect 10 1 11 0; #X connect 11 0 12 0; #X connect 11 1 12 1; #X connect 12 0 13 0; #X connect 13 0 14 1; #X connect 14 0 3 0; #X connect 15 0 8 1; #N canvas 1 3 449 297 10; #X obj 98 111 factors; #X floatatom 98 33 5 0 0 0 - - -; #X msg 128 53 360; #X obj 112 137 print factors; #X msg 139 76 127; #X obj 98 174 list length; #X obj 98 195 sel 2; #X obj 98 216 print isprime; #X connect 0 0 3 0; #X connect 0 0 5 0; #X connect 1 0 0 0; #X connect 2 0 0 0; #X connect 4 0 0 0; #X connect 5 0 6 0; #X connect 6 0 7 0; ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] prime numbers
Hi, On 12/09/10 04:33, ydego...@gmail.com wrote: Mathieu Bouchard wrote: On Sat, 11 Sep 2010, Kim Cascone wrote: is there a Pd object for generating prime numbers? currently I'm: [1 2 3 5 7 9...97] 1 is not a prime number. (9 is not a prime number either) i just read '1 is not a prime number' of course 9 is not, ut a prime number can only be divided by 1 and itself, so why 1 can't be? 1 is special and unique, it has only 1 factor (itself). I'd guess that 0 has an infinite number of factors, but I'm not sure on this. In any case it's probably special too. Mathematicians almost all agree that 1 should not be classified as prime, because it does not have exactly 2 distinct factors. The main reason is that if you leave out the number 1 from the set of prime numbers, you can prove nice uniqueness theorems about prime factorization: http://en.wikipedia.org/wiki/Fundamental_theorem_of_arithmetic The name shows just how important that property is considered to be. The uniqueness of prime factorization can be used to show some quite impressive things, see for example: http://en.wikipedia.org/wiki/Goedel_numbering used to prove that you can't prove everything (or something along those lines, I've not studied this maths in enough depth). Claude -- http://claudiusmaximus.goto10.org ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Introduction to elementary filter components in Pd
On 11/09/10 21:03, brandon zeeb wrote: So, for an intermediate to advanced Pd user who would like know more about this real, what would you recommend? https://ccrma.stanford.edu/~jos/filters/Graphical_Amplitude_Response.html http://www-users.cs.york.ac.uk/~fisher/mkfilter/ Claude ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] return a list of externals
On 10/09/10 18:55, Kim Cascone wrote: is there a way to get a list of all the externals used in a patch? Yes, probably in several ways. One I used is to patch Pd to print out the list of all classes registered when they get registered (and the library names when they are loaded), so the first lot are internal, and the rest external. Using this you can get some plain lists of objects from different libraries. Then you can use some shell scripts (and the lists you generated from the patched Pd) to filter out all the internal objects from the patch files, and get a list of all the externals used. For example code: https://code.goto10.org/svn/maximus/2008/pdpatchinfo/ (may have slightly bitrotted, and probably the object lists are out of date by now). other than by hand of course... I see nothing in pd --help Claude -- http://claudiusmaximus.goto10.org ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] sonyfing chaotic functions
On 01/09/10 05:28, ronni montoya wrote: Hello everybody , i was wondering if somebody have worked sonyfing chaotic functions in pd. I've been working lately with the periodic attractors within the chaos of z→z²+c , an early audio recording is at http://claudiusmaximus.goto10.org/feed/media/ClaudiusMaximus%20-%204%203%202%206%205%202%202%20%2B0.3514203503727912903%2B0.5820160284638404846i%20%282010-08-25%29.ogg But not mapping the values from the functions into sound parameters, but instead using the resulting values for generating waveforms. See the help patch for [fexpr~] - it has a section for Lorentz equation sounds. Do anybody have tried something like this in pd? Maybe theres some example patches i could begin studying? thanks in advance Thanks, Claude -- http://claudiusmaximus.goto10.org ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] GEM Shear / angle relationship
Hi Ed, On 31/08/10 15:31, Ed Kelly wrote: Can anyone tell me how to calculate the 'shear' value (when using [shearYX] in Gem) from an angle (degrees or radians, I don't mind)? This is just a guess, for one direction of shear in 2D space: shear = tan(angle) (the angle marked ** in the ascii diagram below) | __ |**/ / | / / |/_/ (because tan(0) = 0, tan(45deg) = 1, tan(90deg) = inf) Otherwise try drawing triangles and doing some trigonometry (in a right-angle triangle: sin=opposite/diagonal cos=adjacent/diagonal tan=opposite/adjacent ) Claude -- http://claudiusmaximus.goto10.org ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] [pix_crop] doesn't work after [pix_set] ??
On 18/08/10 16:15, Matteo Sisti Sette wrote: Hi, I'm trying [pix_set 8 8] | [pix_crop] and whatever width, height and offset I give pix_crop it doesn't crop at all. It works here, see attached (requires gridflow as well as Gem as I didn't feel like writing a long list in the patch). Versions: cla...@zebimus:~$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=10.04 DISTRIB_CODENAME=lucid DISTRIB_DESCRIPTION=Ubuntu 10.04.1 LTS cla...@zebimus:~$ uname -a Linux zebimus 2.6.32-24-generic #39-Ubuntu SMP Wed Jul 28 05:14:15 UTC 2010 x86_64 GNU/Linux cla...@zebimus:~$ apt-cache policy puredata gem gridflow puredata: Installed: 0.42.5-3 Candidate: 0.42.5-3 Version table: *** 0.42.5-3 0 500 http://gb.archive.ubuntu.com/ubuntu/ lucid/universe Packages 100 /var/lib/dpkg/status gem: Installed: 1:0.92.2-2 Candidate: 1:0.92.2-2 Version table: *** 1:0.92.2-2 0 500 http://gb.archive.ubuntu.com/ubuntu/ lucid/universe Packages 100 /var/lib/dpkg/status gridflow: Installed: 9.10-1~ppa1~lucid3 Candidate: 9.10-1~ppa1~lucid3 Version table: *** 9.10-1~ppa1~lucid3 0 500 http://ppa.launchpad.net/claudiusmaximus/ppa/ubuntu/ lucid/main Packages 500 http://ppa.launchpad.net/puredyne-team/ppa/ubuntu/ lucid/main Packages 100 /var/lib/dpkg/status Claude -- http://claudiusmaximus.goto10.org #N canvas 0 0 450 454 10; #X obj 44 274 pix_crop; #X obj 143 94 #checkers; #X obj 44 120 pix_set 64 64; #X msg 64 245 16; #X obj 144 72 #for (0 0) (64 64) (1 1); #X obj 144 119 #to_list; #X msg 106 82 RGB; #X obj 161 12 loadbang; #X obj 145 36 t b b; #X obj 141 10 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 44 147 t a a; #X obj 44 179 pix_separator; #X obj 182 176 pix_separator; #X obj 44 80 gemhead; #X obj 74 223 loadbang; #X obj 182 298 pix_texture; #X obj 44 299 pix_texture; #X obj 182 197 separator; #X obj 44 199 separator; #X obj 182 351 square; #X obj 44 353 square; #X obj 11 57 gemwin; #X msg 35 8 create \, 1; #X msg 41 32 0 \, destroy; #X msg 91 243 32; #X obj 182 324 translateXYZ 1.5 0 0; #X obj 44 324 translateXYZ -1.5 0 0; #X connect 0 0 16 0; #X connect 1 0 5 0; #X connect 2 0 10 0; #X connect 3 0 0 1; #X connect 3 0 0 2; #X connect 4 0 1 0; #X connect 5 0 2 1; #X connect 6 0 2 0; #X connect 7 0 8 0; #X connect 8 0 4 0; #X connect 8 1 6 0; #X connect 9 0 8 0; #X connect 10 0 11 0; #X connect 10 1 12 0; #X connect 11 0 18 0; #X connect 12 0 17 0; #X connect 13 0 2 0; #X connect 14 0 3 0; #X connect 14 0 24 0; #X connect 15 0 25 0; #X connect 16 0 26 0; #X connect 17 0 15 0; #X connect 18 0 0 0; #X connect 22 0 21 0; #X connect 23 0 21 0; #X connect 24 0 0 4; #X connect 24 0 0 3; #X connect 25 0 19 0; #X connect 26 0 20 0; ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] [pd~] gem crashing
On 18/08/10 16:35, João de Brito Vidigal wrote: I'mtrying to use the [pd~] object to separate audio and video! However, when I [create( the [gemwin] it just gets stuck!!! I'm guessing it might be this from the pd~ help patch: ATTENTION: DSP must be running in this process for the sub-process to run. This is because its clock is slaved to audio I/O it gets from us! What it doesn't say is that the sub-process *also* needs dsp running for its clock to run. here go the files! I didn't try your patch as it's kind of huge (I send a small test case). Claude -- http://claudiusmaximus.goto10.org #N canvas 40 134 450 300 10; #X msg 130 94 pd~ stop; #X obj 25 42 loadbang; #X msg 25 63 \; pd dsp 1; #X msg 130 67 pd~ start -nogui -lib Gem subprocess.pd; #X obj 101 126 pd~ -sr 44100 -ninsig 0 -noutsig 0 -fifo 20; #X connect 0 0 4 0; #X connect 1 0 2 0; #X connect 3 0 4 0; #N canvas 0 0 450 300 10; #X obj 98 16 loadbang; #X msg 98 46 create \, 1; #X obj 98 71 gemwin; #X obj 96 188 square; #X obj 96 101 gemhead; #X msg 190 45 \; pd dsp 1; #X obj 96 128 t a b; #X obj 136 129 f 0; #X obj 163 131 + 1; #X obj 163 152 mod 360; #X obj 96 163 rotateXYZ; #X connect 0 0 1 0; #X connect 0 0 5 0; #X connect 1 0 2 0; #X connect 4 0 6 0; #X connect 6 0 10 0; #X connect 6 1 7 0; #X connect 7 0 8 0; #X connect 7 0 10 2; #X connect 7 0 10 1; #X connect 8 0 9 0; #X connect 9 0 7 1; #X connect 10 0 3 0; ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] Infinite and NaN float values?
On 16/08/10 18:59, Matteo Sisti Sette wrote: Is this expected behaviour? Yes. IEEE floating point (used by most common CPUs, though GPUs might not support all features) is a bit warty. If so i guess infinities and NaN have been recently introduced, haven't they? No. But Pd tries to guard against them. However there seem to be some inconsistency: 5/4 returns 0 (as I was used to), not +inf. Also, I'm not sure +inf is the value you expect when adding something to the greatest representable value... or is it? Pd [/] guards against division by 0 by outputting 0 instead of +infinity, -infinity or NotANumber (depending on the sign of the left argument). The reason why NaN and (to a lesser extent?) infinities are discouraged by non-scientific software is that it pollutes everything: any arithmetic operation you try to do with NaN gives you a NaN (or worse, an unexpected result: comparisons always give False so the three-way partition x ==x x doesn't hold). For scientific software NaN can be useful, to indicate that the algorithms aren't good enough or that the input was bad. Also I cannot seem to find a way to write inf's or NaN as a literal (in a message box), and I cannot find an [isNaN] or similar object... that's why I wonder if this is a feature or a bug. [expr isnan($f1)], perhaps? It creates, but I didn't manage to create a NaN to test yet (expr guards against division by zero too). Also, sliders seem not to like them. If you feed a NaN (or maybe +Inf, I'm not sure) to a slider, it makes NaN compares 'False' for everything, my guess is that it checks for out of bounds (x top || bottom x) which gives false for NaN, so it assumes it's in the right range and passes a NaN to the graphics engine, which then goes beserk - more robust would be !(x top bottom x) which should work even for NaN Claude -- http://claudiusmaximus.goto10.org ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list
Re: [PD] new wrap incompatible object error
On 17/08/10 01:38, Hans-Christoph Steiner wrote: On Aug 16, 2010, at 8:30 PM, Mathieu Bouchard wrote: On Mon, 16 Aug 2010, Hans-Christoph Steiner wrote: Personally, its much more annoying if you have used [wrap] in your patch, then your patch mysteriously breaks. Hence the error. I could be worded better, so I'm updating it. can you make it a warn() instead, so that people can use Find Last Error for things that are really Errors ? That's especially because Find Last Error can really find only the Last one. a broken wrap or pow~ is really an error in my opinion. The timeline is important here, because I know that I (and possibly others) have a tendency to remember things in a way that justifies my own current viewpoint: 0. puredata had [wrap~] but not [wrap] 1. [zexy/wrap] was implemented 2. pd-extended imports -lib zexy unqualified 3. some people using pd-extended use [wrap] (from zexy) 4a. puredata implemented [wrap] that isn't quite the same 4b. puredata implemented externals can override internals (+warnings) 4c. pd-extended removed externals can override internals 5. some people write patches using [wrap] (from puredata) 6. pd-extended changes [wrap] to emit warnings 7a. puredata [wrap] users get upset about the warnings from pd-extended 7b. pd-extended [wrap] users get upset about the warnings from puredata The point here is that, the puredata users in 5 who want to make patches with [wrap] work with both puredata and pd-extended without warnings/error message, now have NO options and the suggested solution from pd-extended BREAKS puredata: A. using plain [wrap], puredata works fine and pd-extended complains B. using -lib zexy [wrap], puredata complains and pd-extended complains C. using -lib zexy [zexy/wrap], puredata FAILS*, pd-extended works fine So, given that C is not an option for most puredata users, pd-extended should certainly not be recommending this as the way to fix patches, at least not unconditionally (afaik in some modes -lib zexy [wrap] behaves the same as puredata [wrap], but it can do more?) Other solutions might be: I. allow externals to override internals, like puredata II. extend pd-extended's [wrap] to behave just like -lib zexy [wrap] when zexy is loaded/imported III. extend puredata's [wrap] to behave just like -lib zexy [wrap] and then port the changes to pd-extended --[[-- opinion The pd-extended users in 3 who want to make patches with [wrap] work with both puredata and pd-extended should have known that they were using an extension, but sadly pd-extended's decision to load everything automatically to make life easier for users caused this mess in the first place, in the end making life harder for everybody. The incompatible suggestion smacks of pd-embrace-and-extend... http://en.wikipedia.org/wiki/Embrace_and_extend --]]-- opinion (*) with puredata and pd-zexy from Ubuntu Lucid 'universe': $ pd -stderr -verbose -lib zexy Pd version 0.42-5 compiled 20:01:18 Jan 5 2010 [snip] tried ./zexy.l_ia64 and failed tried /usr/lib/pd/extra/zexy.l_ia64 and failed tried ./zexy.pd_linux and failed tried /usr/lib/pd/extra/zexy.pd_linux and succeeded warning: class 'wrap' overwritten; old one renamed 'wrap_aliased' warning: class 'abs~' overwritten; old one renamed 'abs~_aliased' © the zexy external 2.1 © © (l) forum::für::umläute © © compiled: May 30 2008 © © send me a 'help' message © tried /home/claude/zexy/wrap.l_ia64 and failed tried /usr/lib/pd/extra/zexy/wrap.l_ia64 and failed tried /home/claude/zexy/wrap.pd_linux and failed tried /usr/lib/pd/extra/zexy/wrap.pd_linux and failed tried /home/claude/zexy/wrap/wrap.l_ia64 and failed tried /usr/lib/pd/extra/zexy/wrap/wrap.l_ia64 and failed tried /home/claude/zexy/wrap/wrap.pd_linux and failed tried /usr/lib/pd/extra/zexy/wrap/wrap.pd_linux and failed tried /home/claude/zexy/wrap.pd and failed tried /usr/lib/pd/extra/zexy/wrap.pd and failed tried /home/claude/zexy/wrap.pat and failed tried /usr/lib/pd/extra/zexy/wrap.pat and failed zexy/wrap ... couldn't create I hope this all makes sense, and that a more appropriate solution can be reached before the final release version of Pd-extended-0.42. Claude -- http://claudiusmaximus.goto10.org ___ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management - http://lists.puredata.info/listinfo/pd-list