概要
python-oscのOscMessageBuilder
を使ったOSCクライアントからメッセージ引数で0
を送受信すると、Type Tagがi
ではなくF
すなわちFalseになってしまい、相手のアプリが正しく動かないなどの不具合が発生することがあります。
SimpleUDPClient
のsend_message()
でも同様の問題が起きているようなので、以下の例が参考になれば幸いです。
実例
以下に実例を掲載します。
まず、0
がFalse
になってしまう駄目な場合。
from pythonosc import osc_message_builder
from pythonosc import udp_client
if __name__ == "__main__":
client = udp_client.UDPClient("127.0.0.1", 5005)
msg = osc_message_builder.OscMessageBuilder(address="/my_address")
msg.add_arg(0)
msg = msg.build()
client.send(msg)
これを意図通りに0
がint
になるようにするには次のようにします。
from pythonosc import osc_message_builder
from pythonosc import udp_client
if __name__ == "__main__":
client = udp_client.UDPClient("127.0.0.1", 5005)
msg = osc_message_builder.OscMessageBuilder(address="/my_address")
msg.add_arg(0, osc_message_builder.OscMessageBuilder.ARG_TYPE_INT)
msg = msg.build()
client.send(msg)
まとめ
このようにadd_arg
の第二引数にosc_message_builder.OscMessageBuilder.ARG_TYPE_INT
を加えることで、0
をint
として送ることが出来るようになります。
ちなみに、osc_message_builder.OscMessageBuilder.ARG_TYPE_INT
の代わりにosc_message_builder.OscMessageBuilder.ARG_TYPE_FLOAT
を指定すれば、0
をfloat
の値として送ることも出来ます。