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'```
@Mdns Hello again....
When you say switcher.pd won't work do you mean it shows a red box. It works for me just fine (I know that doesn't help!)............
But you will always need to upload any abstractions that you have created that are used in your "master patch"
You will see that the easiest way to do that is to make a zip folder of all of the necessary bits and upload that.
It seems that you are still having "path" problems. They are probably the most common problems along with getting audio to work properly.
Now that you have found (I hope) where all of the patches you had made had been hidden.... make a folder on your desktop and copy them there..... do NOT have any spaces in the folder name!!
Then open (from the menu at the top of the main (Terminal) Pd window...... select "Edit" "Preferences" and you will see a pop-up window like this.......
Add the "path" to your new desktop folder and click apply/ok. Close the window, open it again...is your path still there? It's a bit temperamental...... probably restart Pd and check again
Hopefully now everything in your new folder will work (your patches) and most of the Pd objects as well, and all subfolders that you create inside your new folder. If you add C:/users/xxxx/desktop to the paths then any pd patch on your desktop should work.
When Pd opens some of its paths are not active (/extra/mrpeach for example). You can force Pd to find the objects in that folder by putting an object into your patch.... [import mrpeach]. Anything in that folder will then work......
You can also include the path to the object in it's name...... [mrpeach/dumpOSC xxxx] for example.
Let us know how you get on....... whether that helps or whether you still have problems...