Home > Enterprise >  Python-osc, add_arg in a for loop
Python-osc, add_arg in a for loop

Time:07-22

I want to add_arg to my OSC message without knowning the exact length of a list.
The thing is, I want to avoid typing my osc message like this:

probabilityMSG.add_arg(classProbability[0], arg_type='f')
probabilityMSG.add_arg(classProbability[1], arg_type='f')
probabilityMSG.add_arg(classProbability[2], arg_type='f')
probabilityMSG.add_arg(classProbability[3], arg_type='f')

So I try to put that add_arg in a for loop. Below is my function:

def send_OSC(overallClassProbability, predictedClass, predictedParams):
    ipAddress = "127.0.0.1"
    port = 5005

    client = udp_client.SimpleUDPClient(ipAddress, port)

    classProbability = overallClassProbability.flatten()

    probabilityMSG = osc_message_builder.OscMessageBuilder(address = '/percentage')
    classMSG = osc_message_builder.OscMessageBuilder(address= '/class')
    paramsMSG = osc_message_builder.OscMessageBuilder(address= '/params')

    # -------
    for i in range(len(classProbability)):
        probabilityMSG.add_arg(classProbability[i], arg_type='f')

    # -------
    for i in range(len(predictedParams)):
        paramsMSG.add_arg(predictedParams[i], arg_type='f')

    # -------
    classMSG.add_arg(predictedClass, arg_type='i')

    # -------
    paramsMSG = paramsMSG.build()
    classMSG = classMSG.build()
    probabilityMSG = probabilityMSG.build()
    client.send(paramsMSG)
    client.send(classMSG)
    client.send(probabilityMSG)

But I have nothing coming out with this technic...
It seems like python-osc cannot handle this.

Do you have any idea?

EDIT: Should I write a self modifying Python code? I was thinking about making a script that would modify the OSC message sending script.

I am referring to this post for the self modifying Python script.

CodePudding user response:

I have no idea why it didn't work last time. But, yeah, seems to work fine with add_arg within a for loop.

  • Related