@@ -15,6 +15,7 @@ class OscMessageBuilder(object):
1515 ARG_TYPE_FLOAT = "f"
1616 ARG_TYPE_DOUBLE = "d"
1717 ARG_TYPE_INT = "i"
18+ ARG_TYPE_INT64 = "h"
1819 ARG_TYPE_STRING = "s"
1920 ARG_TYPE_BLOB = "b"
2021 ARG_TYPE_RGBA = "r"
@@ -27,7 +28,7 @@ class OscMessageBuilder(object):
2728 ARG_TYPE_ARRAY_STOP = "]"
2829
2930 _SUPPORTED_ARG_TYPES = (
30- ARG_TYPE_FLOAT , ARG_TYPE_DOUBLE , ARG_TYPE_INT , ARG_TYPE_BLOB , ARG_TYPE_STRING ,
31+ ARG_TYPE_FLOAT , ARG_TYPE_DOUBLE , ARG_TYPE_INT , ARG_TYPE_INT64 , ARG_TYPE_BLOB , ARG_TYPE_STRING ,
3132 ARG_TYPE_RGBA , ARG_TYPE_MIDI , ARG_TYPE_TRUE , ARG_TYPE_FALSE , ARG_TYPE_NIL )
3233
3334 def __init__ (self , address : str = None ) -> None :
@@ -105,7 +106,10 @@ def _get_arg_type(self, arg_value: Union[str, bytes, bool, int, float, tuple, li
105106 elif arg_value is False :
106107 arg_type = self .ARG_TYPE_FALSE
107108 elif isinstance (arg_value , int ):
108- arg_type = self .ARG_TYPE_INT
109+ if arg_value .bit_length () > 32 :
110+ arg_type = self .ARG_TYPE_INT64
111+ else :
112+ arg_type = self .ARG_TYPE_INT
109113 elif isinstance (arg_value , float ):
110114 arg_type = self .ARG_TYPE_FLOAT
111115 elif isinstance (arg_value , tuple ) and len (arg_value ) == 4 :
@@ -146,6 +150,8 @@ def build(self) -> osc_message.OscMessage:
146150 dgram += osc_types .write_string (value )
147151 elif arg_type == self .ARG_TYPE_INT :
148152 dgram += osc_types .write_int (value )
153+ elif arg_type == self .ARG_TYPE_INT64 :
154+ dgram += osc_types .write_int64 (value )
149155 elif arg_type == self .ARG_TYPE_FLOAT :
150156 dgram += osc_types .write_float (value )
151157 elif arg_type == self .ARG_TYPE_DOUBLE :
0 commit comments