【问题标题】:python script to send OSC to SuperCollider using Neuroskys mindwave and NeuroPy module使用 Neuroskys mindwave 和 NeuroPy 模块将 OSC 发送到 SuperCollider 的 python 脚本
【发布时间】:2016-12-15 11:21:12
【问题描述】:

我正在尝试使用来自neuroPy 的变量 (1-13) 向Supercollider 发送多个 OSC 消息。它只适用于一个变量。如何利用更多变量。

from NeuroPy import NeuroPy
import time
import OSC

port = 57120
sc = OSC.OSCClient()
sc.connect(('192.168.1.4', port)) #send locally to laptop
object1 = NeuroPy("/dev/rfcomm0")
zero = 0
variable1 = object1.attention
variable2 = object1.meditation
variable3 = object1.rawValue
variable4 = object1.delta
variable5 = object1.theta
variable6 = object1.lowAlpha
variable7 = object1.highAlpha
variable8 = object1.lowBeta
variable9 = object1.highBeta
variable10 = object1.lowGamma
variable11 = object1.midGamma
variable12 = object1.poorSignal
variable13 = object1.blinkStrength


time.sleep(5)

object1.start()

def sendOSC(name, val):
    msg = OSC.OSCMessage()
    msg.setAddress(name)
    msg.append(val)
    try:
        sc.send(msg)
    except:
        pass
    print msg #debug



while True:
    val = variable1
    if val!=zero:
        time.sleep(2)
        sendOSC("/att", val)

这很好,我在 Supercollider 中按预期收到了消息。

如何添加更多变量并获取更多消息?

我认为它应该是 setCallBack 的东西。

【问题讨论】:

    标签: python osc supercollider


    【解决方案1】:

    你不需要发送多个 OSC 消息,你可以发送一个包含所有值的 OSC 消息。事实上,这将是一个更好的方法,因为所有更新的值都会同步到达,并且更少将需要网络流量。

    您的代码目前相当于

    msg = OSC.OSCMessage()
    msg.setAddress("/att")
    msg.append(object1.attention)
    sc.send(msg)
    

    这对于一个值来说很好。对于多个值,您可以执行以下几乎相同的操作:

    msg = OSC.OSCMessage()
    msg.setAddress("/neurovals")
    msg.append(object1.attention)
    msg.append(object1.meditation)
    msg.append(object1.rawValue)
    msg.append(object1.delta)
    # ...
    sc.send(msg)
    

    应该没问题,你会得到一个包含多个数据的OSC消息。你也可以把上面写成

    msg = OSC.OSCMessage()
    msg.setAddress("/neurovals")
    msg.extend([object1.attention, object1.meditation, object1.rawValue, object1.delta])  # plus more vals...
    sc.send(msg)
    

    查看 OSCMessage 类的文档,了解更多关于如何构建消息的示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-29
      • 1970-01-01
      • 2017-08-21
      • 1970-01-01
      • 2019-04-01
      • 2021-06-15
      • 2014-04-03
      相关资源
      最近更新 更多