Pd-extended to Vanilla migrations issues. Gui freeze, console errors, etc.
I migrated from Pd Extended to Vanilla (0.47-1) a few days ago. I've tried to familiarize myself with the handling of externals and the Deken manager, which seems to slowly become more understandable the more I work with it.
But today I've run into some odd issues I never experienced with Pd-extended.
– First of all, the console is a mess of "tried to load, failed" and "tried to load, succeeded" at every start up, which is understandable, but I can't seem to figure out what to take from it. Sometimes I get both the "failed" and "succeeded" version of a message one after the other, regarding the same library/external. Sometimes it will claim to have failed trying to load a given external, but I can call up the objects just fine without having to [declare] or use the [name/*object] initialization.
I would assume that I have made too much of a mess trying to add the paths to "path" and "start up". So I guess it's trying to look for certain things in subfolders where it's not? The issue is that everything seems to load up correctly, but I still get a ton of misleading console messages.
– This one is odd. After having loaded up Pd and scrolling up through the console's many, many messages, I will get to the "credits" message of the zexy external, but it will lag and freeze for a moment before reaching it, sometimes multiple times before allowing me to scroll by it smoothly.
– I tried to continue work on a patch, a 4 channel random sample player. The gui elements will sometimes freeze after pressing play and running everything, which renders all gui elements unresponsive, though I can still operate the patch, but just with no update. From here on out I can't close any patches or windows, nor can I go into patch mode, I simply have to close down Pd and open it again.
I understand that many gui elements can be taxing, but I really haven't got a lot of them going on. I have worked on patches far more graphically taxing in Pd-extended without any problems what so ever. In fact, I've never had any issues like this with Pd-extended.
There is some [metro] objects banging at 100 ms intervals to update the 4 individual audio arrays, but stopping those didn't seem to help a whole lot.
Everytime a sample has ended, it will bang and choose a new sample for immediate playback, sometimes the whole patch system seemed to stop, seemingly as if not being able to handle the stream of information. Again, no issues in Pd-extended.
I hope you'll be willing to help me out here. I suspect that the first order of business is to clean up the "path" and "startup" menus to clear up the system, but I'm unsure about how I would go about that.
send list to outlet in external
Thanks for your advise about the clock method. As this is quite important, this information should be given somewhere (In externs/dspobj~.c which comes with pd for example)
That's the difficulty with Pd, sometimes the information are scattered between this forum, puredata.info, the mailing list, facebook, etc. But you already have an example in d_misc.c with the object [bang~] (and it seems that I did a mistake, you should use clock_delay instead of clock_set. I don't know if it really matters, I'll investigate the code).
What are own inlets? Is a second inlet~ already an own inlet?
Can you point me to the source of [pack]? (Couldn't find a file "pack.c" or similar in pd's repository on github.)
No, in fact inlets' pointers are pretty useless that's why almost nobody use them in their objects. But the second arguments of the inlet_new methods can be necessary (pointerinlet_new, floatinlet_new, etc.). For example, when you create a floatinlet_new, you give the adress of the float value to set. If you need to allocate memory for this, you need to free it at the destruction of your object (see [pack] in x_connective.c). But you can also use another class as an intermediary between the "real" inlet and your object, I call this a "proxy" like in Max. In the function
EXTERN t_inlet *inlet_new(t_object *owner, t_pd *dest, t_symbol *s1, t_symbol *s2);
owner is your object, dest can be the proxy, s1 is the symbol expected by your object and s2 is the symbol that will be used for the proxy.
If you want an example, you can have a look at [clone] in g_clone.c or this example I made.
Do I have to free memory I allocated myself with malloc?
(I just started with C (coming from Python), so I'm still unsure about how things work exactly.)
Yes of course. And you can use t_getbytes and t_freebytes if you only want to include m_pd.h
How to install externals, libraries, gui plug-ins, etc.
Hello, having trouble installing external libraries in pd, I'm in Xubuntu, so I'm new to Pd and Linux both.
tried almost everything in posts but there's not a lot of information on the topic, thanks in advance
I have three folder containing one sample library (according to pd web site and other resources these are standard folders for external libraries)
~/Pd-externals/moonlib; /usr/local/lib/pd-externals/moonlib; and /usr/lib/pd/extra/moonlib
My path config in Pd is: ~/Pd-externals; /usr/local/lib/pd-externals; and /usr/lib/pd/extra
I've tried the next Startup configs (and every other logic folder variation):
Console print at startup:
tried /home/sosimicro/Pd-externals and failed /home/sosimicro/Pd-externals: can't open
Console prints a long list of errors when I try to create a library object like [mkob]
I'm in a dead end, I really don't want to install pd-extended, there must be a way
Compiling Pd-extended on Windows
I created a new thread as the older post [Problem compiling on windows] (http://forum.pdpatchrepo.info/topic/967/problem-compiling-external-on-windows/16) seems to have ended and my problem has a different nature.
Moreover. I have not been able to find an answer on the puredata sites (puredata.info or puredata.org).
My end goal is to play with the 'grid' external in pd-extended/externals/unauthorized/grid but since I do not get this one working and I have never compiled an external before I started with the simpler tutorials in Pd/doc/6.externs.
My steps and error are as follows:
**1. **Adap path in 'makefile' in Pd/doc/6.externs to 'C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC'
(this path contains a /lib folder with .lib and .obj files on my machine)
**2. **Start ( Admin) Visual C++ 2008 64-bit command prompt
**3. **Locate directory Pd/doc/6.externs
**4. ** run 'nmake pd_nt' command
**5. ** gives error in locating the libc.lib file
(LINK: fatal error LNK1181: cannot open input file 'C:...\VC\lib\libc.lib'
When I remove this instruction from the makefile, I does not find the kernel32.lib file also.
When I finally remove the former instruction, I get an error creating the library obj1,lib and object obj1,exp as I have 6 unresolved external symbols ex. obj1.ob : error LNK2019: unresolved external symbol __imp_post referenced in function obj1_float
Could someone help me solve these issues and help me succeed in making this external work?
Then, any additional explanation in getting grid to work afterwards?
Any additional info regarding Pd's treatment of externals/libraries etc is appreciated as well.. I just can't get a grip on it,
[Sel x] - Order of operations
Could maybe someone explain the order of operations of my [sel] objects on both left and right. 1473000944963-1-working-2-not-working.pd Eventually, I want them to do the same thing, but 3 examples work very differently. (1) Works perfectly (2.1) and (2.2.) do not work in the same way as (1) does, although I am only omitting a few things, and without them I think it should still work in the same way.
I am new to PD, so I really want to understand everything that's going on, and I think that if I don't it will harm my future patching.
How to create multiple objects at once? Many objects with increasing arguments?
@lacuna I am about to be away without internet for 3 days...... so...... I will describe how it works and post another example....
Each object that you create in the subpatch has a reference within Pd...... a number... which depends on the order in which they are created..... so.....
Your 123 objects will have numbers 1-123..........
But you want to add some other objects. If you add an [outlet~] or [*~ 0.3] before you add your abstractions then that will be object 1 and your abstractions will be objects 2-124. You must be rigorous about the order in which you place the objects.
In this example......... example.pd There are already 3 objects placed in the sub-patch...... open [pd mixer_final] to have a look.
The patch then builds the objects and connects them.....
There is a [loadbang] to say how many of each object should be created, and that creates a [matrix~] with the correct number of inputs and outputs.
Lots of error messages appear in the terminal because the rest of the patches are missing... it does not matter for this example.
The [connect( messages are formatted like this..... [connect "object number" "outlet number" "object number" "inlet number"( and the inlet and outlet numbers are counted from 0-n...... first one "0"......
I do hope that is all makes sense!
Hit the bang at the top of the patch to see everything created in the sub-patch......
pd-msg in Pd vanilla
Coming back to PD after a long hiatus. I'm trying to learn how to do dynamic patching with the built-in internal messages, but the old examples don't seem to be working properly.
I copied the pd-msg folder from PD-extended and added to my PD vanilla (0.46.7) "path" (the one in Program Files/Common Files/PD)
I saw that the folder loaded in Pd's 'browser' and started going through all the examples. As I went through I noticed some worked fine, while others gave me error messages in the console. All examples work fine in PD extended (0.43.4)
Is there updated documentation on dynamic patching/internal messages in PD vanilla? do the pd-msg examples only work in PD-extended?
GPIO RASPBERRY P3 AND PURE DATA
@sylvain Hello Sylvain.....
I have to admit to being unsure.....
Wiring Pi allows you to address the pins, and there is a webIOpi web interface that allows remote control of the pins (switching them from out to in) and a serial control page that (presumably) can communicate with the uart......... but........ I am not sure that it has ben updated for the pi3.
You can find an external for Pd that claims to talk to the pins from Pd here.......
and there is a (very) short conversation on the pdlist about this........
https://lists.puredata.info/pipermail/pd-list/2013-04/102172.html which suggests that wiringPi is necessary.
Millers coding of Pure Data for the Pi (which contains an object for talking to the gpio pins) can be found here......
and there is some very useful discussion that points to that here.............
The post suggests that Pd-L2Ork could be a more useful version of Pd for you.......
My Pi is working well with dmx lighting control through a usb interface in Pd (using comport) and I control the GPIO pins through an Android remote app for my home entertainment........
But for PD to gpio I am unfortunately a noob......
gui externals tutorial ?
"make install" does not seem to install anything so I added object files manualy
It compiles but the linker cant seem to find pd stuffs although it is linked with pd...
cc -I"D:/WORK/DSP/pd-0.46-7/src" -Wno-unused-parameter -DPD -DVERSION='"0.0"' -O6 -funroll-loops -fomit-frame-pointer -Wall -W -g -o "src/adsr.o" -c "src/adsr.c" cc -rdynamic -shared -L"D:/WORK/DSP/pd-0.46-7/src" -L"D:/WORK/DSP/pd-0.46-7/bin" -o "src/adsr.dll" "src/adsr.o" libCicmWrapper_la-ebox.o libCicmWrapper_la-egraphics.o libCicmWrapper_la-eclass.o libCicmWrapper_la-eobj.o libCicmWrapper_la-ecommon.o libCicmWrapper_la-epopup.o -lpd libCicmWrapper_la-ebox.o: In function `ebox_dosave': /cygdrive/d/WORK/DSP/CicmWrapper/Sources/ebox.c:819: undefined reference to `s__X' libCicmWrapper_la-ebox.o: In function `ebox_properties': /cygdrive/d/WORK/DSP/CicmWrapper/Sources/ebox.c:1098: undefined reference to `s_symbol' /cygdrive/d/WORK/DSP/CicmWrapper/Sources/ebox.c:1113: undefined reference to `s_symbol' libCicmWrapper_la-eclass.o: In function `eclass_attr_getter': /cygdrive/d/WORK/DSP/CicmWrapper/Sources/eclass.c:639: undefined reference to `s_float' /cygdrive/d/WORK/DSP/CicmWrapper/Sources/eclass.c:653: undefined reference to `s_symbol' libCicmWrapper_la-eclass.o: In function `eclass_attr_setter': /cygdrive/d/WORK/DSP/CicmWrapper/Sources/eclass.c:753: undefined reference to `s_float' /cygdrive/d/WORK/DSP/CicmWrapper/Sources/eclass.c:775: undefined reference to `s_symbol' libCicmWrapper_la-eclass.o: In function `eclass_addmethod': /cygdrive/d/WORK/DSP/CicmWrapper/Sources/eclass.c:240: undefined reference to `s_float' /cygdrive/d/WORK/DSP/CicmWrapper/Sources/eclass.c:252: undefined reference to `s_symbol'
gui externals tutorial ?
so I think the linker should be set to -lCicmWrapper but I got conflicts and undefined
can you help me out ?
cc -rdynamic -shared -L"D:/WORK/DSP/pd-0.46-7/src" -L"D:/WORK/DSP/pd-0.46-7/bin" -o "src/adsr.dll" "src/adsr.o" -L"D:/WORK\DSP/PD/CicmWrapper-camo-dev/Sources/.libs" -lCicmWrapper -lc -lpd D:/WORK/DSP/pd-0.46-7/bin/pd.lib(pd.dll):(.text+0x0): multiple definition of `error' /usr/lib/libc.a(t-d000927.o):fake:(.text+0x0): first defined here D:/WORK\DSP/PD/CicmWrapper-camo-dev/Sources/.libs/libCicmWrapper.a(libCicmWrapper_la-ecommon.o): In function `epd_add_folder': /cygdrive/d/WORK/DSP/PD/CicmWrapper-camo-dev/Sources/ecommon.c:578: undefined reference to `sys_searchpath' /cygdrive/d/WORK/DSP/PD/CicmWrapper-camo-dev/Sources/ecommon.c:603: undefined reference to `sys_staticpath' /cygdrive/d/WORK/DSP/PD/CicmWrapper-camo-dev/Sources/ecommon.c:603: undefined reference to `namelist_append_files' /cygdrive/d/WORK/DSP/PD/CicmWrapper-camo-dev/Sources/ecommon.c:609: undefined reference to `sys_staticpath' /cygdrive/d/WORK/DSP/PD/CicmWrapper-camo-dev/Sources/ecommon.c:609: undefined reference to `namelist_append_files'```