2016-11-07 2 views
0

Я кодирую в python 2.7, чтобы разместить связь OSC с моего ipad до моего rasp pi, используя приложение touchOSC из магазина приложений. (это не для музыки или midi, а просто для доступа к значениям для управления шаговыми двигателями и т. д.). Я использую окна для кодирования, а затем передаю .py в свой рашпиль pi (не проблема здесь). Я установил фейдер в макет программного обеспечения OSC с именем, IP-адресом, который находится в коде ниже. Кроме того, я установил значение диапазона фейдера в программном обеспечении, которое touchOSC предоставил от 0 до 1.Правильный алгоритм управления фейдером OSC

Проблема в том, что я получаю только нули, когда я вызываю фейдер на своем ipad. То, что я хочу видеть, - это значения, увеличивающиеся от 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]), я получаю ноль, когда я регулирую фейдер на моем IPad через сенсорный OSC. это очевидно; однако я хочу получить доступ к плавающим точкам между 0 и 1 по мере увеличения фейдера.

Я предполагаю, что код будет выглядеть так: значение = float(args[someLoop]) может быть что-то вроде value = float(args[range(0,1,.125)])

Спасибо заранее.

+0

'range' не работает с шагами поплавка. Что вы хотите сделать точно? –

+0

Да, вы правы. Я просто хочу отредактировать строку кода, чтобы вместо отправки нуля при вызове фейдера был отправлен список значений float, соответствующий увеличению фейдера. Может быть, это будет цикл? 'while True. если args <1. значение + = 0.125. else: break. print value' –

+0

Я не уверен, что это дубликат, поскольку это контролируемый приращение. Мой вопрос: как я могу увеличить значение с помощью ползунка? Мне интересно, будет ли цикл while делать это или если есть лучший способ использовать счетчик. Прошу прощения, но у меня нет большого опыта в передаче этих типов связи через OSC. –

ответ

0

значения, поступающие из TouchOSC являются поплавки между 0 и 1. В функции fader_0, вы в настоящее время преобразования поплавок из TouchOSC, args[0] к int, который округляется любое число меньше 1 до 0, таким образом, ваша программа печатает ноль каждый раз.

Вы можете легко увидеть, как это происходит в питона переводчика:

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

Раствор просто удалить функцию int из fader_0 так:

def fader_0(path, tags, args, source): 
    value=args[0] 
    print "Fader Value:", value 
Смежные вопросы