C++ libPd和c++;包装器实现

C++ libPd和c++;包装器实现,c++,puredata,C++,Puredata,我正在尝试使用libPd,PureData的包装器。 但是文档很差,我不太喜欢C++。 你知道我如何简单地向Pd补丁发送一个浮点值吗 我需要安装libPd还是只需要包含文件?首先,请签出。它使用OpenFrameworks实现了出色的libpd。如果您从C++开始,您可能需要开始,因为它有一些伟大的文档,并且通过OXPD扩展与PD集成得很好。p> >有两个很好的引用用于启动LBPD(虽然没有覆盖太多的C++):p> 在libpd wiki上有一个p。底部的链接项目在main.cpp中有一些代码

我正在尝试使用libPd,PureData的包装器。 但是文档很差,我不太喜欢C++。 你知道我如何简单地向Pd补丁发送一个浮点值吗

我需要安装libPd还是只需要包含文件?

首先,请签出。它使用OpenFrameworks实现了出色的libpd。如果您从C++开始,您可能需要开始,因为它有一些伟大的文档,并且通过OXPD扩展与PD集成得很好。p>

>有两个很好的引用用于启动LBPD(虽然没有覆盖太多的C++):p> 在libpd wiki上有一个p。底部的链接项目在main.cpp中有一些代码片段,演示了如何将浮动发送到Pd修补程序

pd.sendBang("fromCPP");
pd.sendFloat("fromCPP", 100);
pd.sendSymbol("fromCPP", "test string");
在您的Pd补丁中,您将设置[receive fromCPP],然后这些消息将在您的补丁中注册


为了获得打印输出,您必须使用libpd的接收器来接收字符串,然后对其进行处理。libpd附带了PdBase,这是一个用于启动和运行libpd的好类。PdBase有sendBang、sendFloat、sendMessage,还设置了接收器,以便您可以从Pd补丁获得输出

如果您想向正在运行的Pd实例(独立应用程序)发送值,可以通过Pd的网络设施发送

e、 g

将通过以下方式接收从cmdline发送的数据:

echo "value 1.234567;" | pdsend 65432 localhost udp
您还可以一次发送多个值,例如

echo "value 1.234567 3.141592;" | pdsend 65432 localhost udp
如果您发现
pdsend
因您的目的而变慢(例如,如果您为要发送的每条消息启动可执行文件,则会有相当大的开销!),您可以直接在应用程序中构造消息,并使用普通UDP套接字将FUDI消息发送给Pd

FUDI消息实际上是简单的文本字符串,原子之间用空格和分号分隔,例如

accelerator 1.23 3.14 2.97; button 1;
您也可以考虑使用OSC,但为此,您需要在Pd端使用一些外部命令(OSC由Mrpache编写;net由Mrpache(或iemnet))

至于性能,我一直使用后者处理复杂的跟踪数据(每帧125fps有数百个值)和流式多声道音频,所以我认为这不是一个问题


如果您已经在使用libPd并且只想从主机应用程序进行通信,请使用Adam的解决方案(但您的问题对此有点含糊不清,因此我将此答案包括在内以防万一)

谢谢您的回答,我正在尝试编译libPd文件夹中的示例C代码(只是为了尝试),我得到了“z_libpd.h:没有终止此类文件或目录编译。”我使用“sudo gcc pdtest.c-o pdtest”进行编译。我尝试在libpd文件夹中使用“sudo make install”,但它显示“make:**没有规则使目标“install”。停止“谢谢你,但即使使用UDP也太慢了。我需要从红外距离传感器读取值,当我只使用一个传感器时,速度正常,但当我使用两个传感器时,速度不再可接受。在这种情况下,我认为问题不在Pd侧,而是在发送侧-例如,
pdsend
的呼叫开销。我已经相应地更新了答案。谢谢,我正在尝试使用OSCpack,但是当我编译示例代码时,我得到了:“SimpleSend.cpp:5:41:致命错误:osc/OscOutboundPacketStream.h:没有这样的文件或目录”这很奇怪,因为文件就在那里!先谢谢你;)@很明显,你的编译器不是在“那里”,而是在其他地方。简单的答案是使用
-I
指定编译器的搜索目录;但您可能应该正确安装OSCpack(如果您的系统上有可能);但是,如何针对给定的库进行编译实际上与原始问题无关
accelerator 1.23 3.14 2.97; button 1;