我想知道是否有等效的puredata-utils
?我想从 python 脚本发送消息并[netreceive]
在 Pd 中接收它们。我怎样才能做到这一点?
问问题
860 次
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 回答