地毯上的开放式声音控制(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图书馆吗?

地毯上的开放式声音控制(OSC)阵列.c#中的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