地毯上的开放式声音控制(OSC)阵列.c#中的OSC
本文关键字:OSC 阵列 中的 控制 开放式 声音 | 更新日期: 2023-09-27 18:18:55
我正在用c#编写一些代码。OSC库开放声音控制或OSC。我已经成功地将OSC消息从它发送到处理等中的其他代码,但只有浮点数或整型数的单个或短列表,而不是数组。我有一个相当大的数组(1462个浮点数),我想在一个消息中作为数组发送,而不是1462个单个浮点数消息,但是我在MSVS中除了错误什么也没有得到。
我想在c#代码中做的基本上是这样的:float[] myArray = new float[1462];myOscMessage = new OscMessage("/array", myArray);
我已经看了这里的语法:
https://bitbucket.org/rugcode/rug.osc/wiki/Message%20arguments%20as%20Rug.Osc%20understands%20them和尝试过的语法如下:
myOscMessage = new OscMessage("/array", {myArray});
——或
myOscMessage = new OscMessage("/array", new float[]{myArray});
——或
myOscMessage = new OscMessage("/array", new float[]{new float[]{myArray}});
,但我得到错误像:
类型为"System"的未处理异常。在Rug.Osc.dll中出现ArgumentException
——或——
不能将float[]转换为float
我可能在这里错过了简单,但我似乎无法弄清楚。关于如何在c#中使用Rug通过OSC发送浮点数组有什么建议吗?OSC图书馆吗?
目前不能使用类型为float
的数组作为OscMessage
构造函数的参数。然而,可以使用object[]
。
您可以使用下面的代码将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);
message
的内容将是/test, 1f, 2f, 3f, 4f, 5f, 6f, 7f, 9f, 10f
我将考虑在下一个版本中添加使用任何有效OSC类型的数组参数创建消息的功能。
免责声明:我是Rug的作者。Osc