Rug中的开放式声控(OSC)阵列。C中的OSC#
我正在用C#编写一些代码,将Rug.OSC库用于开放式声音控制或OSC。我已经成功地将OSC消息从它发送到处理中的其他代码,等等,但是只有单个或短的浮点或整数列表,而不是数组。我有一个相当大的数组(1462个浮点数),我想在一条消息中作为数组发送,而不是1462个单浮点数消息,但是我在MSV中只得到错误 我想在C#代码中做的基本上是: float[]myArray=新的float[1462]; myOscMessage=newoscmessage(“/array”,myArray) 我查看了这里的语法: 并尝试了如下语法: myOscMessage=newoscmessage(“/array”,{myArray}) --或-- myOscMessage=newoscmessage(“/array”,newfloat[]{myArray}) --或-- myOscMessage=newoscmessage(“/array”,newfloat[]{newfloat[]{myArray}}) 但我会遇到如下错误: Rug.Osc.dll中发生类型为“System.ArgumentException”的未处理异常 --或-- 无法将float[]转换为floatRug中的开放式声控(OSC)阵列。C中的OSC#,c#,arrays,osc,C#,Arrays,Osc,我正在用C#编写一些代码,将Rug.OSC库用于开放式声音控制或OSC。我已经成功地将OSC消息从它发送到处理中的其他代码,等等,但是只有单个或短的浮点或整数列表,而不是数组。我有一个相当大的数组(1462个浮点数),我想在一条消息中作为数组发送,而不是1462个单浮点数消息,但是我在MSV中只得到错误 我想在C#代码中做的基本上是: float[]myArray=新的float[1462]; myOscMessage=newoscmessage(“/array”,myArray) 我查看了这里
我可能错过了这里的简单,但我似乎无法理解。关于如何使用Rug.OSC库通过C#中的OSC发送浮点数组的任何建议?目前,无法在
OscMessage
构造函数中将类型为float
的数组用作参数。但是,可以使用对象[]
您可以使用下面的代码将float[]
强制转换为object[]
float[] floats = new float[] { 1f, 2f, 3f, 4f, 5f, 6f, 7f, 9f, 10f };
// cast float array into an object array
object[] objects = floats.Cast<object>().ToArray();
OscMessage message = new OscMessage("/test", objects);
float[]floats=newfloat[]{1f、2f、3f、4f、5f、6f、7f、9f、10f};
//将浮点数组强制转换为对象数组
object[]objects=floats.Cast().ToArray();
OscMessage=新的OscMessage(“/test”,对象);
消息的内容将是/test、1f、2f、3f、4f、5f、6f、7f、9f、10f
在下一版本中,我将研究添加使用任何有效OSC类型的数组参数创建消息的功能
免责声明:我是Rug.Osc的作者,还应注意,在默认设置下,使用Rug.Osc通过UDP在单个消息中发送1462个浮点值是不可能的,因为它将超过最大数据包大小。由于为每个数组元素编写了一个typetag条目,因此它的大小超过7310字节。最好以字节[]
(blob)的形式发送,因为类型标记开销最小。您可能还需要考虑将阵列切片,或者使用非udp传输层(如TCP)。