04-功能详解
功能详解
OSC 消息格式
OSC 地址采用 URL 风格路径,以 / 开头:
/1/fader1
/synth/filter/cutoff
/composition/layers/3/opacity
/live/set/tempo
地址区分大小写,不支持通配符(标准 OSC)。
类型标签
OSC 消息携带类型信息。NexOsc 支持三种常用类型:
| 标签 | 类型 | 示例值 |
|---|---|---|
i | int32 | 42 |
f | float32 | 0.75 |
s | string | "hello" |
消息打包
- OSC 消息以二进制格式打包(大端字节序):
- 地址字符串(4 字节对齐,空字符填充)
- 类型标签字符串(以
,开头,4 字节对齐) - 参数数据(每个 4 字节,字符串特殊处理)
程序自动完成打包/解析,用户无需关心底层格式。
控件面板详解
┌────┐
│ ▲ │ ← 滑块位置决定值
│ █ │
│ █ │
│ █ │
│ █ │
│ ▼ │
├────┤
│Vol │ ← 标签
└────┘
- 垂直拖拽调整值(0.0 底部 ~ 1.0 顶部)
- 值变化时实时发送 OSC 消息
- 地址格式:
/地址/fader值
按钮(Button)
┌──────┐
│ ● │ ← 按下亮起
│ Mute │
└──────┘
- 点击按下:发送值
1.0 - 松开:发送值
0.0 - 适合开关/触发类参数
旋钮(Knob)
┌──┐
╱ ╲
│ ● │ ← 指针指示当前值
╲ ╱
└──┘
Pan
- 垂直拖拽或滚轮调整
- 角度 0°~270° 映射值 0.0~1.0
- 适合需要精细调节的参数
标签(Label)
┌──────────┐
│ -12 dB │ ← 显示当前接收值
│ Volume │
└──────────┘
- 不发送 OSC 消息
- 用于监控接收到的值
- 收到新值时短暂闪烁(视觉反馈)
控件交互流程
用户操作推子
↓
控件值变化 (0.0 → 0.75)
↓
构建 OSC 消息: /1/fader1 ,f 0.75
↓
通过 UDP 发送到远程地址:端口
↓
日志显示: [TX] /1/fader1 = 0.75
OSC 接收 → 控件更新
UDP 收到 OSC 消息: /1/fader1 ,f 0.3
↓
解析地址和值
↓
匹配控件: 查找地址为 /1/fader1 的控件
↓
更新控件显示 (推子滑块移动到 0.3 位置)
↓
日志显示: [RX] /1/fader1 = 0.3
TouchOSC 兼容性
- NexOsc 的控件面板兼容 TouchOSC Layout:
- 地址格式一致(
/1/fader1、/2/button3) - 控件类型对应(推子 ↔ fader、按钮 ↔ push、旋钮 ↔ rotary)
- 值范围一致(0.0-1.0)
- 这意味着:
- 可以接收 TouchOSC App 发来的消息并更新控件
- NexOsc 的控件操作也可被监听 TouchOSC 格式的其他软件识别
自动发送
- 勾选后按指定间隔重复发送当前发送区的 OSC 消息。适用于:
- 周期性参数刷新
- LFO(低频振荡器)效果模拟
- 心跳信号
数据可视化
从接收到的 OSC 数值中提取并实时绘图。使用正则表达式规则从 OSC 消息日志中匹配数值。