首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python脚本使用Neuroskys mindwave和NeuroPy模块将OSC发送到SuperCollider

python脚本使用Neuroskys mindwave和NeuroPy模块将OSC发送到SuperCollider
EN

Stack Overflow用户
提问于 2016-08-09 20:08:01
回答 1查看 329关注 0票数 2

我正在尝试使用neuroPy中的变量(1-13)向Supercollider发送多个OSC消息。它只需要一个变量就可以很好地工作。我如何利用更多的变量。

代码语言:javascript
复制
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有关。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-09 22:53:18

您无需发送多条OSC信息,只需发送一条OSC信息,即可使用中的所有值。事实上,这将是一种更好的方法,因为所有更新的值都将同步到达,并且需要的网络流量更少。

您的代码当前执行的等价物是

代码语言:javascript
复制
msg = OSC.OSCMessage()
msg.setAddress("/att")
msg.append(object1.attention)
sc.send(msg)

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

代码语言:javascript
复制
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消息。你也可以把上面的代码写成

代码语言:javascript
复制
msg = OSC.OSCMessage()
msg.setAddress("/neurovals")
msg.extend([object1.attention, object1.meditation, object1.rawValue, object1.delta])  # plus more vals...
sc.send(msg)

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

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

https://stackoverflow.com/questions/38850287

复制
相关文章

相似问题

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