Skip to main content

OSC (Open Sound Control) 介绍

OSC (Open Sound Control) 介绍

注意: OSC 需要使用第三方应用程序来在 Resonite 之外发送/接收数据。在下载第三方应用程序时,请自行做出最佳判断。

Open Sound Control (OSC) 是一种允许软件和硬件发送与接收数据的网络协议。传统上,它用于控制音频相关设备,如 DJ 设备、乐器和推子/调音台。

然而,OSC 本身可以用于几乎任何需要在网络上发送结构化数据的场景。在 Resonite 中,我们看到它被用于:

  • 触觉反馈 (Haptics)
  • 面部与眼动追踪 (Face and Eye Tracking)
  • 宏按键/快捷键面板 (Macro Pads/Shortcut pads)

前提条件

虽然 OSC 使得在 Resonite 中导入导出数据变得更加容易,但它仍然是一种网络协议,这意味着需要具备以下前提条件:

  • 具备关于 IP 地址网络端口 的基础知识。
  • 对于接收数据:
    • 运行 Resonite 的电脑需开放一个端口。
    • 运行 Resonite 的电脑的 IP 地址。
  • 对于发送数据:
    • Resonite 在网络上可以访问到的 OSC 服务器。
  • 某种 OSC 应用程序/工具。请参阅下文的工具章节。
注意: 在使用 OSC 时,Resonite 会与其它应用程序发生端口冲突(换句话说:它会占用给定的端口号),请务必选择一个你未在使用的端口。

相关组件

OSC 拥有以下 Resonite 组件:

  • OSC_Receiver - 从 OSC 接收数据到 Resonite 中。
  • OSC_Sender - 从 Resonite 向 OSC 发送数据。
  • OSC_Value - 将一个 OSC 数值暴露为常规组件字段。
  • OSC_Field - 将 OSC 数值存储在另一个组件的数值字段中。

支持的数据类型

OSC 支持多种数据类型,Resonite 支持以下类型:

(注:许多 OSC 应用程序纯粹以 Float 形式发送数据)

  • Float (浮点型)
  • Double (双精度浮点型)
  • Int (整型)
  • Long (长整型)
  • String (字符串)
  • Color (颜色)
  • ColorX (会转换为 sRGB)
  • DateTime (日期时间)
  • Byte (字节)

多维数值 (Multi-Dimensional Values)

OSC 支持包含多个数值的变量。这与 Resonite 拥有 Float3 等类型的类型系统非常相似。

例如,一个应用程序可能以“多维数值”的形式发送旋转值。此时,你可以使用 ArgumentIndex (参数索引) 来控制你正在交互的是哪个值:

路径 (Path) 参数索引 (Argument Index) 数值 (Value) 描述
/osc/rotation 0 90 旋转的俯仰角 (Pitch)
/osc/rotation 1 180 旋转的偏航角 (Yaw)
/osc/rotation 2 0 旋转的翻滚角 (Roll)

OSC 消息和数据的结构取决于发送方,因此不同的应用程序或工具可能会以不同的方式发送数据。

常用工具

目前已存在许多支持 OSC 并与 Resonite 实现兼容的工具:

  • OSC Controller - 在手机上控制推子、按钮等,并通过 OSC 发送数据。
  • Sensors2OSC - 通过 OSC 发送安卓设备的传感器数据。
  • Basic-OSC-Example - 一个用 C# 编写的非常简单的 OSC 应用程序。用于测试 OSC 连接性。
  • GigglePuck - 一款触觉设备,可根据 Resonite 中的交互产生震动。
  • ofxOscMidi - 一个用于从硬件 MIDI 控制器或软件 DAW 接收 MIDI 消息,并将其转换为 Resonite 可理解的 OSC 消息的程序。也可接收来自 Resonite 的 OSC 输入并发送至 MIDI 输出。

示例