1

我想知道是否有等效的puredata-utils?我想从 python 脚本发送消息并[netreceive]在 Pd 中接收它们。我怎样才能做到这一点?

4

2 回答 2

4

[netreceive]FUDI协议中接收消息。

FUDI很简单:

  • 每条消息都以分号 + 换行符 ( ;\n)结束
  • 每条消息由一个由空格分隔的原子列表组成
    • 原子是符号或数字
    • 数字是任何看起来像数值的东西(十进制,选择科学记数法)
    • 符号就是一切

这是一个向 Pd 发送消息的小示例 python 程序[netreceive]

import socket
IP="127.0.0.1"
PORT=5005
addr=(IP, PORT)
EOL=';\n'
sock=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
for i in range(10):
  msg="list foo "+str(i)+" bar"
  sock.sendto(msg+EOL, addr)

注意 1:在 UDP 模式下,似乎每个数据包只允许一条消息(例如,消息 ( "a b"+EOL+"c d"+EOL) 将作为列表传递,[a b(其余消息将被丢弃)

注2:在UDP模式下,结束分号是可选的;但是,需要终止 LF。(例如,一个数据包a b\nc d\n将作为一个列表接收[a b c d(

这种方法的优点是它可以与 Pd-vanilla 一起使用(因为它不需要任何外部来解析 OSC 消息)

于 2014-07-22T11:44:48.133 回答
2

我建议使用 OSC 通过网络调用来控制 PureData 脚本。

这个存储库包含一个非常基本的代码示例,说明如何执行此操作。(打开“osctoot.pd”和任何一个 python 脚本来查看它的运行情况)

此方法完全独立于平台。

于 2014-06-10T18:43:44.827 回答