我正在尝试使用libPd,这是PureData的包装。但是文档很差,而且我不太喜欢C++,您知道如何简单地将浮动值发送到Pd修补程序吗?
我是否需要安装libPd,还是只需包含这些文件?
发布于 2013-10-06 18:29:04
如果您想向正在运行的Pd实例(独立应用程序)发送值,可以通过Pd的网络设施来实现。
例如:
[netreceive 65432 1]
|
[route value]
|
[print]将通过以下方式接收从cmdline发送的数据:
echo "value 1.234567;" | pdsend 65432 localhost udp您也可以同时发送多个值。
echo "value 1.234567 3.141592;" | pdsend 65432 localhost udp如果您发现pdsend为了您的目的而放慢速度(例如,如果您为要发送的每一条消息启动可执行文件,则会有相当大的开销!),您可以在应用程序中直接构造该消息,并使用普通的UDP-套接字将FUDI-消息发送到Pd。
消息实际上是简单的文本字符串,原子由空格和终止分号分隔。
accelerator 1.23 3.14 2.97; button 1;您也可能考虑使用OSC,但为此,您需要Pd端的一些外部(mr桃的OSC;mr桃(或iemnet)的net )。
至于性能,我一直在使用后者来处理复杂的跟踪数据(在125 for时,每帧有数百个值)和流多声道音频,所以我不认为这是一个问题。
如果您已经在使用libPd,并且只想从主机应用程序中进行通信,请使用Adam的解决方案(但是您的问题有点模糊,所以我包括这个答案,以防万一)
发布于 2013-09-30 13:25:21
首先,看看软硬。它有一个优秀的libpd实现与OpenFrameworks。如果您从C++开始,您可能希望从OpenFrameworks开始,因为它有一些很好的文档,并且通过ofxpd扩展与Pd进行了很好的集成。
对于开始使用libpd (虽然没有详细介绍C++ )有两个很好的参考:原始文章和彼得·布林克曼的书。
在libpd wiki上有一个p开始使用libpd的年龄。底部的链接项目在main.cpp中有一些代码片段,演示如何将浮动发送到Pd修补程序。
pd.sendBang("fromCPP");
pd.sendFloat("fromCPP", 100);
pd.sendSymbol("fromCPP", "test string");在Pd修补程序中,您将设置一个接收fromCPP,然后这些消息将在您的修补程序中注册。
为了获得打印输出,您必须使用libpd中的接收方,以便接收字符串,然后对它们执行一些操作。libpd附带了PdBase,这是一个很好的类,可以让libpd启动和运行。PdBase有sendBang、sendFloat、sendMessage,还设置了接收器,以便您可以从Pd补丁中获得输出。
https://stackoverflow.com/questions/19079378
复制相似问题