首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >libPd和c++包装器实现

libPd和c++包装器实现
EN

Stack Overflow用户
提问于 2013-09-29 14:48:41
回答 2查看 1.5K关注 0票数 2

我正在尝试使用libPd,这是PureData的包装。但是文档很差,而且我不太喜欢C++,您知道如何简单地将浮动值发送到Pd修补程序吗?

我是否需要安装libPd,还是只需包含这些文件?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-06 18:29:04

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

例如:

代码语言:javascript
复制
[netreceive 65432 1]
|
[route value]
|
[print]

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

代码语言:javascript
复制
echo "value 1.234567;" | pdsend 65432 localhost udp

您也可以同时发送多个值。

代码语言:javascript
复制
echo "value 1.234567 3.141592;" | pdsend 65432 localhost udp

如果您发现pdsend为了您的目的而放慢速度(例如,如果您为要发送的每一条消息启动可执行文件,则会有相当大的开销!),您可以在应用程序中直接构造该消息,并使用普通的UDP-套接字将FUDI-消息发送到Pd。

消息实际上是简单的文本字符串,原子由空格和终止分号分隔。

代码语言:javascript
复制
accelerator 1.23 3.14 2.97; button 1;

您也可能考虑使用OSC,但为此,您需要Pd端的一些外部(mr桃的OSC;mr桃(或iemnet)的net )。

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

如果您已经在使用libPd,并且只想从主机应用程序中进行通信,请使用Adam的解决方案(但是您的问题有点模糊,所以我包括这个答案,以防万一)

票数 2
EN

Stack Overflow用户

发布于 2013-09-30 13:25:21

首先,看看软硬。它有一个优秀的libpd实现与OpenFrameworks。如果您从C++开始,您可能希望从OpenFrameworks开始,因为它有一些很好的文档,并且通过ofxpd扩展与Pd进行了很好的集成。

对于开始使用libpd (虽然没有详细介绍C++ )有两个很好的参考:原始文章彼得·布林克曼的书

在libpd wiki上有一个p开始使用libpd的年龄。底部的链接项目在main.cpp中有一些代码片段,演示如何将浮动发送到Pd修补程序。

代码语言:javascript
复制
pd.sendBang("fromCPP");
pd.sendFloat("fromCPP", 100);
pd.sendSymbol("fromCPP", "test string");

在Pd修补程序中,您将设置一个接收fromCPP,然后这些消息将在您的修补程序中注册。

为了获得打印输出,您必须使用libpd中的接收方,以便接收字符串,然后对它们执行一些操作。libpd附带了PdBase,这是一个很好的类,可以让libpd启动和运行。PdBase有sendBang、sendFloat、sendMessage,还设置了接收器,以便您可以从Pd补丁中获得输出。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19079378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档