Mac OS X上的纯数据 - 如何发送消息?

时间:2014-06-07 12:26:25

标签: python puredata

我想知道是否相当于puredata-utils?我想从python脚本发送消息,并在Pd中使用[netreceive]接收它们。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:3)

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

FUDI 非常简单:

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

这是一个示例python程序,用于向Pd [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)

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

Note2 :在UDP模式下,终止分号是可选的;但终止LF 必需 。 (例如,数据包a b\nc d\n将作为列表[a b c d(

收到

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

答案 1 :(得分:2)

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

This repository包含一个非常基本的代码示例,说明如何执行此操作。 (打开" osctoot.pd"以及任何一个python脚本以查看它的运行情况)

此方法完全独立于平台。