OSC特有的音量控制器控制算法

2024-06-09 14:52:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Python2.7编写代码,以适应从我的ipad到我的rasp-pi之间的OSC通信,使用appstore中的“touchOSC”应用程序。(这不是用于音乐或midi,而是简单地访问控制步进电机等的值…)我使用windows进行编码,然后将.py传输到我的rasp pi(这里不是问题所在)。我用下面代码中的名称和IP地址设置了音量控制器的布局软件。另外,我在touchOSC提供的软件中设置了音量控制器的范围值,从0到1。在

问题是我在ipad上启动音量控制器时只收到0。我希望看到的是值通过浮动值从0递增到1。我想我需要使用一些排序范围函数?这就是问题所在,如何指定我希望音量控制器在下面的代码中递增?在

现在的代码是:

from OSC import OSCServer,OSCClient, OSCMessage

server = OSCServer( ("192.168.0.8", 8000) ) 
client = OSCClient()

def handle_timeout(self):
    print ("I'm IDLE")
#This here is just to do something while the script recieves no information....
server.handle_timeout = types.MethodType(handle_timeout, server)

def fader_0(path, tags, args, source): 
    value=int(args[0]) # Value is the variable that will transform the input from the faders into whole numbers(easier to deal with)
    print "Fader Value:", value

server.addMsgHandler("/1/fader1", fader)

我的问题是关于Def fader_0(path, tags, args, source) 当我输入:value = int(args[0])时,当我通过touch OSC调整ipad上的音量控制器时,我收到一个0。这很明显;但是,我希望在音量控制器增加时访问0到1之间的浮点值。在

我假设代码应该是:value=float(args[someLoop])可能是value = float(args[range(0,1,.125)])

提前谢谢你。在


Tags: the代码servervaluetimeoutpiargs控制器
1条回答
网友
1楼 · 发布于 2024-06-09 14:52:44

来自TouchOSC的值在0和1之间浮动。在fader_0函数中,您当前将float从TouchOSC args[0]转换为int,该函数将小于1的任何数字舍入为0,因此您的程序每次都输出0。在

在python解释器中可以很容易地看到这是如何发生的:

In [2]: int(0.7)
Out[2]: 0

解决方案是从fader_0中删除int函数,如下所示:

^{pr2}$

相关问题 更多 >