atemOSC 是一个网络代理,监听遵循OSC 协议的命令并在 Blackmagic ATEM 视频切换台上执行这些命令。
设置和使用
启动应用程序后,输入切换器的IP地址和要监听的本地端口(默认3333),然后向运行atemOSC的计算机的IP地址发送OSC命令该端口。如果您设置了传出 IP 地址和端口,则 atemOSC 将向您指定的 IP 地址和端口发送状态更新和反馈 OSC 消息。
如果您从运行 atemOSC 的同一台计算机上的排队软件或翻译软件发送 atemOSC 消息,请确保将消息发送到127.0.0.1
atemOSC 正在侦听的端口上的 (localhost)。
如果您从另一台设备发送 atemOSC 消息,您需要将其发送到在 atemOSC 正在侦听的端口上运行 atemOSC 的计算机的 IP 地址。您可以通过转到System Preferences
>Network
或ifconfig
在终端窗口中运行来查找 macOS 计算机的 IP 地址。
如果您想从 AppleScript 或终端命令发送 OSC,您可以下载并使用sendosc命令。有关使用 AppleScript 和 sendOSC 的示例,请参阅此存储库中的actionscript 示例。SendOSC 还支持将 AtemOSC 与ControllerMate和X-keys 一起使用。
如果您想使用 MIDI 板或设备控制切换台,请考虑将此软件与OSCulator或MidiPipe配对。
OSC API
将 atemOSC 连接到切换台后,可以通过转到“OSC 地址”选项卡获取切换台可用的 OSC 地址的完整列表。下面的列表只是对通用切换器的地址外观的概述。
所有地址必须以/atem/
. atemOSC 将忽略它收到的所有地址不以 开头的 OSC 命令/atem/
。
多切换器支持
如果您只想连接到单个 ATEM 切换台,请将昵称字段留空并照常使用下面的地址。默认情况下,所有没有昵称的命令都将发送到第一个没有昵称的切换器。
如果您将多个切换台连接到 atemOSC,您将需要为每个切换台提供一个昵称,并在地址中使用该昵称来指定将命令发送到哪个切换台。如果给切换台添加昵称,必须在地址中发送昵称,所有反馈消息都会在地址中包含昵称。
例如,/atem/my-switcher-1/transition/auto
将在昵称为的切换器上触发自动转换my-switcher-1
节目和预览选择
默认情况下,命令将发送到第一个混音效果块 (M/E)。要在其他混音效果块上发送命令,请使用地址:/atem/me/$i/program <number>
,其中$i
是 1、2、3 或 4
- Black
/atem/program 0
Cam 1
/atem/program 1
- Cam 2
/atem/program 2
- Cam 3
/atem/program 3
- Cam 4
/atem/program 4
- Cam 5
/atem/program 5
- Cam 6
/atem/program 6
- 等等……
- Color Bars
/atem/program 1000
- Color 1
/atem/program 2001
- Color 2
/atem/program 2002
- Media 1
/atem/program 3010
- Media 2
/atem/program 3020
- Key 1 Mask
/atem/program 4010
- DSK 1 Mask:
/atem/program 5010
- DSK 2 Mask:
/atem/program 5020
- Clean Feed 1
/atem/program 7001
- Clean Feed 2
/atem/program 7002
- Auxiliary 1
/atem/program 8001
- 等等……
/atem/preview $i
可以使用预览选择。
还支持在地址中发送输入而不是作为值(例如/atem/program/5
)
反馈:为所有值启用
注意:实际数字因设备而异,请务必查看应用内地址菜单
注意:您可以通过发送/atem/send-status
命令(稍后详细说明)获取每个输入的名称,这将返回每个输入的短名称/atem/input/$i/short-name
和长名称/atem/input/$i/long-name
。初始提取后,您还将在 ATEM Software Control 中更改短名称或长名称时收到更新。
过渡控制
默认情况下,命令将发送到第一个混音效果块 (M/E)。要在其他混音效果块上发送命令,请使用地址:/atem/me/$i/transition/...
,其中$i
是 1、2、3 或 4
- T-bar
/atem/transition/bar <0-1>
- Cut
/atem/transition/cut
- Auto
/atem/transition/auto
- Fade to Black Toggle
/atem/transition/ftb
- Preview Transition
/atem/transition/preview <true|false>
设置自动过渡的过渡类型n:
- Mix
/atem/transition/type mix
- Dip
/atem/transition/type dip
- Wipe
/atem/transition/type wipe
- Stinger
/atem/transition/type sting
- DVE
/atem/transition/type dve
- Also supports sending the type in the address instead of as a string value (e.g.
/atem/transition/type/dve
)
设置自动转换速率:
- Currently selected type
/atem/transition/rate <float>
- Mix
/atem/transition/mix/rate <float>
- Dip
/atem/transition/dip/rate <float>
- Wipe
/atem/transition/wipe/rate <float>
- DVE
/atem/transition/dve/rate <float>
反馈:已启用 /atem/transition/bar
辅助源选择
- 将 Aux $i 源设置为 $x
/atem/aux/$i $x
- 其中
$x
是有效节目源的整数值,可以是 1-6,具体取决于 ATEM 切换台的功能。检查帮助菜单中的正确值。 - 例如
/atem/aux/1 1
将 Aux 1 输出设置为源 1(摄像机 1)
- 其中
反馈:已启用
上游键控器
默认情况下,命令将发送到第一个混音效果块 (M/E)。要在其他混音效果块上发送命令,请使用地址:/atem/me/$i/usk/...
,其中$i
是 1、2、3 或 4
- 设置领带 BKGD
/atem/usk/0/tie <true|false>
- 发送值 1 以启用绑定,发送 0 以禁用
- 切换领带 BKGD
/atem/usk/0/tie/toggle
- 设置 On-Air Upstream Keyer $i
/atem/usk/$i/on-air <true|false>
- 发送一个 true 值来切断 USK 的直播,发送一个 false 的值来切断它的播出
- Cut Toggle On-Air Upstream Keyer $i
/atem/usk/$i/on-air/toggle
- Set Tie Upstream Keyer $i
/atem/usk/$i/tie <true|false>
- 发送 true 值以启用绑定,发送 false 值以禁用
- Toggle Tie Upstream Keyer $i
/atem/usk/$i/tie/toggle
- 为下一个场景设置上游键控器 $i
/atem/usk/$i/tie/set-next <true|false>
- 发送布尔值 true 以在下一次转换后显示 USK,如果您不想在下一次转换后显示 USK,则发送 false
- 例如,如果 USK 1 正在播出,
/atem/usk/1/tie/set-next true
将解开 USK 1 使其保持开启状态,同时/atem/usk/1/tie/set-next false
将绑定 USK 1 使其在下一次转换后停止播出。
- 为上游键控器 $i 设置键类型
/atem/usk/$i/type <luma|chroma|pattern|dve>
- 还支持在地址中发送类型而不是作为字符串值(例如
/atem/usk/$i/type/luma
)
- 还支持在地址中发送类型而不是作为字符串值(例如
USK 来源
- 为上游键控器 $i 设置填充源
/atem/usk/$i/source/fill <int>
- Int 值应该是要设置为源的输入的 ID(来自应用内帮助菜单,在 Sources 部分下)
- 为上游键控器 $i 设置键(剪切)源
/atem/usk/$i/source/cut <int>
- Int 值应该是要设置为源的输入的 ID(来自应用内帮助菜单,在 Sources 部分下)
USK 亮度参数
- 为上游键控器 $i 设置剪辑亮度参数
/atem/usk/$i/luma/clip <float>
- 浮点值应介于 0.0(0%)和 1.0(100%)之间
- 为上游键控器 $i 设置增益亮度参数
/atem/usk/$i/luma/gain <float>
- 浮点值应介于 0.0(0%)和 1.0(100%)之间
- 为上游键控器 $i 设置预乘亮度参数
/atem/usk/$i/luma/pre-multiplied <bool>
- 为上游键控器 $i 设置逆亮度参数
/atem/usk/$i/luma/inverse <bool>
USK 色度参数
- 为上游抠像器 $i 设置 Hue Chroma 参数
/atem/usk/$i/chroma/hue <float>
- 浮点值应介于 0.0 和 359.9 之间
- 为上游键控器 $i 设置增益色度参数
/atem/usk/$i/chroma/gain <float>
- 浮点值应介于 0.0(0%)和 1.0(100%)之间
- 为上游键控器 $i 设置 Y 抑制色度参数
/atem/usk/$i/chroma/y-suppress <float>
- 浮点值应介于 0.0(0%)和 1.0(100%)之间
- 为上游键控器 $i 设置提升色度参数
/atem/usk/$i/chroma/lift <float>
- 浮点值应介于 0.0(0%)和 1.0(100%)之间
- 为上游键控器 $i 设置“窄色度键范围”参数
/atem/usk/$i/chroma/narrow <bool>
USK DVE 参数
- 为上游键控器 $i 设置启用 DVE 边界
/atem/usk/$i/dve/enabled <true|false>
- 支持其它的值是:
border-width-outer
,border-width-inner
,border-softness-outer
,border-softness-inner
,border-opacity
,border-hue
,border-saturation
,和border-luma
哪里$i
可以是 1、2、3 或 4,具体取决于 ATEM 切换台的功能
反馈:为“/atem/usk/$i/on-air”、“/atem/usk/$i/tie”、“/atem/usk/$i/source/ ”、“/atem/usk/$”启用i/luma/ ‘ 和 ‘/atem/usk/$i/chroma/*’
下游键控器
- 设置 On-Air Downstreamkeyer $i
/atem/dsk/$i/on-air <true|false>
- 发送一个 true 值来切断 DSK 直播,发送一个 false 值来切断它
- Auto Toggle On-Air Downstreamkeyer $i
/atem/dsk/$i/on-air/auto
- Cut Toggle On-Air Downstreamkeyer $i
/atem/dsk/$i/on-air/toggle
- Set Tie Downstreamkeyer $i
/atem/dsk/$i/tie <true|false>
- 发送 true 值以启用绑定,发送 false 值以禁用
- Toggle Tie Downstreamkeyer $i
/atem/dsk/$i/tie/toggle
- 为下一个场景设置 Downstreamkeyer $i
/atem/dsk/$i/tie/set-next <true|false>
- 发送值 true 以在下一次转换后显示 DSK,如果您不想在下一次转换后显示 DSK,则发送值
- 例如,如果 DSK1 正在播出,
/atem/dsk/1/tie/set-next true
将解开 DSK1 使其保持开启状态,同时/atem/dsk/1/tie/set-next false
将绑定 DSK1 使其在下一次转换后停止播出。
DSK 源
- 为 Downstreamkeyer $i 设置填充源
/atem/dsk/$i/source/fill <int>
- Int 值应该是要设置为源的输入的 ID(来自应用内帮助菜单,在 Sources 部分下)
- 为 Downstreamkeyer $i 设置键(剪切)源
/atem/dsk/$i/source/cut <int>
- Int 值应该是要设置为源的输入的 ID(来自应用内帮助菜单,在 Sources 部分下)
DSK参数
- 为 Downstreamkeyer $i 设置剪辑参数
/atem/dsk/$i/clip <float>
- 浮点值应介于 0.0(0%)和 1.0(100%)之间
- 为 Downstreamkeyer $i 设置增益参数
/atem/dsk/$i/gain <float>
- 浮点值应介于 0.0(0%)和 1.0(100%)之间
- 为 Downstreamkeyer $i 设置预乘参数
/atem/dsk/$i/pre-multiplied <true|false>
- 为 Downstreamkeyer $i 设置反转参数
/atem/dsk/$i/inverse <true|false>
- 为 Downstreamkeyer $i 设置速率参数
/atem/dsk/$i/rate <int>
- Int 值是帧数,所以 30 是 1 秒,60 是 2 秒(给定 30 fps 基值)
哪里$i
可以是 1、2、3 或 4,具体取决于 ATEM 切换台的功能
反馈:为“/atem/dsk/$i/on-air”和“/atem/dsk/$i/tie”启用
声音的
支持标准和 Fairlight 混音器。
- 更改音频输入 $i 的增益
/atem/audio/input/$i/gain $x
$x
以分贝 (dB) 为单位的增益在哪里,范围从-60
到6
- 例如
/atem/audio/input/2/gain -30.0
- 对于双单声道模式下的 Fairlight 音频输入,将设置左右两侧的增益。要单独控制左右声道,请使用地址
/atem/audio/input/$i/left/gain
和/atem/audio/input/$i/right/gain
。
- 更改音频输入 $i 的平衡
/atem/audio/input/$i/balance $x
- 凡
$x
被平衡,-1.0
全留给1.0
了充分的权利 - 例如
/atem/audio/input/2/balance 0.4
- 对于双单声道模式下的 Fairlight 音频输入,将设置左右平衡。要单独控制左右声道,请使用地址
/atem/audio/input/$i/left/balance
和/atem/audio/input/$i/right/balance
。
- 凡
- 更改音频输入 $i 的混合选项
/atem/audio/input/$i/mix <string>
<string>
“开”、“关”或“afv”在哪里(音频跟随视频)- 例如
/atem/audio/input/2/mix 'afv'
- 还支持在地址中发送混合选项(例如
/atem/audio/input/$i/mix/afv
) - 对于双单声道模式下的 Fairlight 音频输入,将为左右设置混合选项。要单独控制左右声道,请使用地址
/atem/audio/input/$i/left/mix
和/atem/audio/input/$i/right/mix
。
- 更改音频输出增益(混合)
/atem/audio/output/gain $x
$x
以分贝 (dB) 为单位的增益在哪里,范围从-60
到6
- 例如
/atem/audio/output/gain -30.0
- 更改音频输出的平衡
/atem/audio/output/balance $x
- 凡
$x
被平衡,-1.0
全留给1.0
了充分的权利 - 例如
/atem/audio/output/balance 0.4
- Fairlight 调音台不支持
- 凡
反馈:为所有值启用
额外的 TouchOSC 反馈 – 每次混合更改时,都会发送 3 条消息:
/atem/audio/input/$i/mix/afv
如果当前音频模式为 AFV,则浮点值为 1.0,否则为 0.0/atem/audio/input/$i/mix/on
如果当前音频模式为 ON,则浮点值为 1.0,否则为 0.0/atem/audio/input/$i/mix/off
如果当前音频模式关闭,则浮点值为 1.0,否则为 0.0
媒体播放器
- 将媒体播放器 $i 源设置为 Clip $x
/atem/mplayer/$i/clip $x
- 哪里
$i
可以是 1 或 2,也$x
可以是 1 或 2,具体取决于 ATEM 切换台的功能 - 例如
/atem/mplayer/2/clip 1
- 哪里
- 将媒体播放器 $i 源设置为 Still $x
/atem/mplayer/$i/still $x
- 哪里
$i
可以是 1 或 2,也$x
可以是 1-20,具体取决于 ATEM 切换台的功能 - 例如
/atem/mplayer/1/still 5
- 哪里
反馈:无
SuperSource(如果可用)
- Toggle SuperSource Box $i 已启用
/atem/supersource/$i/enabled <true|false>
- 发送值 1 以启用,发送值 0 以禁用
- 设置 SuperSource Box $i source 输入 $x
/atem/supersource/$i/source $x
- 哪里
$x
是有效的程序源。检查帮助菜单中的正确值。
- 哪里
- 其他选项可用。查看应用程序中的帮助菜单以获取完整列表。
反馈:无
宏
- 宏应记录在 ATEM Control Panel 软件中。
- 宏以 0 索引数组的形式存储在 ATEM 中
- 这意味着,要访问的第一记录的宏,你应该使用一个索引
$i
中0
,访问第二录制的宏,你应该使用的索引1
等。
- 这意味着,要访问的第一记录的宏,你应该使用一个索引
- 获取最大宏数:
/atem/macros/max-number
- 返回
int
ATEM 支持的最大宏数 - 应通过以下索引使用对这些宏的访问
n-1
- 返回
- 停止当前活动的宏(如果有):
/atem/macros/stop
- 获取宏的名称:
/atem/macros/$i/name
- 返回
string
带有名称的 a,如果宏无效,则返回””
- 返回
- 获取宏的描述:
/atem/macros/$i/description
- 返回
string
带有描述的 a,如果宏无效,则返回””
- 返回
- 获取索引 $i 处的宏是否有效:
/atem/macros/$i/is-valid
- 返回一个
int
of0|1
以指示请求的宏是否有效
- 返回一个
- 在索引 $i 处运行宏:
/atem/macros/$i/run
- 返回一个
int
of0|1
以指示是否执行了请求的宏。0
如果宏无效或不存在,将返回A
- 返回一个
反馈:已启用/atem/macros/max-number
,/atem/macros/$i/name
,/atem/macros/$i/description
,和/atem/macros/$i/is-valid
。也可按请求使用(您可以发送命令以获取返回消息中的值)
超级甲板
- 在 HyperDeck $i 上选择剪辑
/atem/hyperdeck/$i/clip <int>
- 例如
/atem/hyperdeck/1/clip 5
- 例如
- 在 HyperDeck $i 上播放选定的剪辑
/atem/hyperdeck/$i/play
- 在 HyperDeck $i 上录制新剪辑
/atem/hyperdeck/$i/record
- 在 HyperDeck $i 上停止播放/录制
/atem/hyperdeck/$i/stop
- HyperDeck $i 上的穿梭夹
/atem/hyperdeck/$i/shuttle $x
- 其中
$x
是指定开始播放速度的整数值,以百分比表示 - 例如
/atem/hyperdeck/1/shuttle 200
= 2 倍速度 - 例如
/atem/hyperdeck/1/shuttle 50
= 1/2 速度 - 例如
/atem/hyperdeck/1/shuttle 0
= 停止
- 其中
- HyperDeck $i 上的 Jog Clip
/atem/hyperdeck/$i/jog $x
- 其中
$x
是指定在所选剪辑中向前或向后跳转的帧数的整数值
- 其中
- 跳转到 HyperDeck $i 上的剪辑时间 $x
/atem/hyperdeck/$i/clip-time $x
$x
‘hh:mm:ss’ 格式的字符串在哪里(h = 小时,m = 分钟,s = 秒)- 例如
/atem/hyperdeck/1/clip-time 00:05:00
= 跳到剪辑 5 分钟
- 跳转到 HyperDeck $i 上的时间线时间 $x
/atem/hyperdeck/$i/timeline-time $x
- 打开/关闭 HyperDeck $i 上的单剪辑播放模式
/atem/hyperdeck/$i/single-clip <true|false>
- 在 HyperDeck $i 上打开/关闭循环播放模式
/atem/hyperdeck/$i/loop <true|false>
反馈:已启用clip
,clip-time
,timeline-time
,state
,single-clip
,和loop
。HyperDeck 的状态在 处以字符串值的形式提供/atem/hyperdeck/$i/state
,并在状态改变时自动发送出去。国家将之一play
,record
,shuttle
,idle
,或unknown
。
记录
- 开始录制到外部媒体
/atem/recording/start
- 停止录制到外部媒体
/atem/recording/stop
- 切换用于录制的外部媒体磁盘
/atem/recording/switch-disk
- 更改录音文件名
/atem/recording/filename <string>
反馈:发送到地址的录音状态/atem/recording/state
,将包含一个字符串,它是idle
|之一。recording
|stopping
其他
- 请求所有可用的反馈
/atem/send-status
- 这将查询切换台并发回节目/预览、转换控制、键控器和宏的状态
- atemOSC
/atem/led/green
的浮点值为 1.0(如果连接)和 0.0(如果断开),以及/atem/led/red
反浮点值。led
每当连接状态发生变化时,也会发送这些消息。
- 仅请求节目/预览/酒吧状态
/atem/me/$i/send-status
- 其中
$i
是指定 M/E 以获取状态的整数值 - 这将查询切换器并仅发送回节目/预览、条形图和预览的状态
- 其中
- 这可以在新的 OSC 客户端设备联机时使用,以便它获取系统的当前状态
类型转换
为方便起见,atemOSC 会将某些类型转换为某些端点的正确类型
- 如果将 0 的 int 或 float 值传递给布尔方法,则 0 将被解释为 false
- 如果将 int 或 float 值 1 传递给布尔方法,则 1 将被解释为 true
- 如果您将 int 值传递给需要浮点数的端点,它将被正确转换(反之亦然)
TouchOSC 支持
由于 TouchOSC 客户端的功能有限,atemOSC 支持另一种传递值的形式。对于上面列出的任何需要 string 或 int 值的方法,您可以将 string 或 int 作为地址的一部分而不是作为值传递。例如,您可以发送/atem/transition/type/wipe
代替/atem/transition/type wipe
,或发送/atem/usk/1/source/fill/3
代替/atem/usk/1/source/fill 3
。此外,使用这些替代地址之一和浮点值发送的任何命令都0.0
将被忽略,因为这表示按钮释放并通常会导致问题。如果您想在释放按钮而不是按下按钮时触发更改,只需翻转 TouchOSC 编辑器中的值即可。