数据源与输入
数据从哪里来:ProDJ Link、时间码发生器和输入、DMX、PSN 以及参考音监测。
ProDJ Link 网卡(默认 + 备用)#
Utility → Network → ProDJ Link:ProDJ Link Adapter 是这台电脑面向播放器的网卡。所有 Interface 为 Default(新数据源的默认值)的 ProDJ Link 数据源都使用它,所以同一个 Patch 在任何电脑上都能用。如果数据源设为这台电脑没有的某个网卡,它也会改用这个网卡。Backup Adapter:当主网卡消失,或在备用网卡存在时 8 秒内听不到任何播放器,ProDJ Link 会切换到备用网卡;它会一直留在备用网卡上,直到备用网卡也没有信号(演出中不会自动切回)。网络上始终只有一个在使用。Active 显示当前使用的是哪一个。这是本机设置,永远不会写进演出文件。
Auto(全新安装时的默认值):ShowKontrol 会监听 ProDJ Link 数据,并使用听到数据的那个网卡,所以全新启动时能自己找到播放器。搜索期间它只监听(不会向任何网络发送数据)。在听到播放器之前,Active 显示 "Auto: Searching for ProDJ Link traffic",之后显示 "Auto: en5 (192.168.1.10)"。找到后,只要这个网卡上有播放器,就会一直使用它;只有当它连续 10 秒没有播放器,而另一个网卡上能听到播放器时,才会切换(同一个 169.254 本地链路网络上的两个网卡也是这样区分的)。播放器只是安静下来时,什么都不会改变。要固定网卡,请选择一个具体的网卡。
TCNet 网卡#
Utility → Network → TCNet:TCNet Adapter 是 TCNet 在这台电脑上使用的网卡。所有 Network Interface 为 Any(默认值)的 TCNet 节点都使用它,所以同一个 Patch 在任何电脑上都能用。
- Same as ProDJ Link(默认)跟随 ProDJ Link 网卡。TCNet 通常和播放器在同一个网络上,所以大多数情况下这样就对了。
- 如果 TCNet 和播放器不在同一个网络上,例如在单独的灯光或视频网络上,请选择一个网卡。
- 选中的网卡不存在时,TCNet 会改用 ProDJ Link 网卡。
- 设为某个具体网卡的 TCNet 节点会继续使用那个网卡。
Show Check#
Show Check 列出开场前必须确认的所有事项:演出、播放器、录音、磁盘空间、Cue Caller、显示器以及最近的事件。它会在启动 10 秒后自动运行(General → Show Check:Always、On Problems 或 Never)。
- 状态栏:每个窗口的右下角、TCNet 心形图标左边会显示 Show Check 的结论。绿色 OK,橙色 NEED ATTENTION 并显示警告数量,红色 NOT READY 并显示问题数量。紧挨心形图标显示这台电脑的许可证和 ShowKontrol 版本,例如 "ShowKontrol CLUB · 27.0.1"。结论变化时,它们的位置保持不变。
- 结论每 30 秒重新检查一次,所以始终是最新的。
- 点击结论会打开 Show Check 并重新检查一遍。
时间码发生器数据源#
Type = Timecode Generator 的 Source 节点是一个像播放器一样工作的时钟。它发布一台虚拟播放器,位置就是生成的时间,所以可以像任何播放器一样连接它:Source → Device(Deck Number)→ LTC / MTC / TCNet / Art-Net、Viewer、Router 等等。
设置:
- Mode:
- Free Run:使用自己的时钟,从 Start Time 开始,Running 打开时运行,关闭时停在当前位置。
- Time of Day:使用电脑的时钟(对齐到当前时间)。Running 和 Start Time 不适用。
- Start Time:
HH:MM:SS:FF。修改它会让时钟跳到那里。Back to Start 回到开始时间,如果原来在运行就继续运行。 - Frame Rate: 24 / 25 / 29.97 DF / 30。它驱动的时间码使用这个帧率。
- Deck Number: 它显示为哪台播放器(1–8)。请使用没有真实播放器使用的编号;同编号的真实播放器优先。
- Track Title: 这台播放器报告的"曲目"。给 Catalog 中的一首曲目设置同样的曲名,这首曲目的 Cue 列表就会按发生器的时钟运行。
- 脚本可以控制它,例如
output.TCGen.tcgen.running = true;或output.TCGen.tcgen.start = "10:00:00:00";(TCGen = 节点名称)。
时间码输入(LTC In / MTC In / Art-Net TC In)#
Type = LTC In、MTC In 或 Art-Net TC In 的 Source 节点让 ShowKontrol *跟随*一个外部时钟:DAW、视频服务器、灯光控台或磁带机。它和 Timecode Generator 一样发布一台虚拟播放器,但位置来自它收到的时间码。用同样的方式连接(Source → Device → LTC / MTC / TCNet / Art-Net、Viewer、Catalog 的 Cue 列表)。时间码运行时播放器播放,停止时播放器暂停。
输入:
- LTC In: 选择音频 Input Device 和 Input Channel。LTC 在这里解码。它支持正向和反向,支持 24 / 25 / 29.97 DF / 30,并且适用于任何线路电平(解码器会跟随电平)。第一次使用时 macOS 会请求麦克风权限。
- MTC In: 选择 MIDI Input 端口:一个接口、一个网络 MIDI 会话,或这台 Mac 上 DAW 的 IAC 总线。四分之一帧消息驱动播放器。完整帧消息(DAW 停止或定位时发送)会把播放器移到那里并保持。
- Art-Net TC In: UDP 6454 上的 ArtTimeCode。Interface 把它限制为该网络上的发送者(Any = 全部)。这台电脑自己发出的时间码会被忽略,除非打开 Accept From This Computer。这样可以防止跟随这台播放器的 Art-Net TC 输出又回传给它自己。
通用设置:
- Frame Rate: Auto(MTC 和 Art-Net 会说明自己的帧率;LTC 的帧率根据帧编号和帧长度检测),或固定的 24 / 25 / 29.97 DF / 30。输出使用这个帧率。
- Offset:
HH:MM:SS:FF,会被减去。设为 10:00:00:00 时,收到的 10:00:00:00 就是播放器位置 0。在此之前,播放器暂停在 0 等待。 - Freewheel (ms): 信号中断时,播放器继续走这么长时间(默认 500 ms,至少 3 帧),然后停在最后收到的时间码处。
- Jam:
- Continuous: 始终跟随收到的时间码。在两帧之间,位置按电脑的时钟平滑运行。偏差超过一帧时,会立即重新同步。
- Jam Once: 时间码开始时对齐一次,之后按自己的时钟运行。只有超过 1 秒的重新定位才会再次对齐。
- Jam + Run On: 和 Jam Once 一样,但信号中断不会让它停止。只有当时间码源本身停止或暂停时才会停止。
- Deck Number / Track Title: 和 Timecode Generator 相同。
播放器上的实时值(供触发器和脚本使用):tcin.locked(正在收到时间码)、tcin.running、tcin.freewheel、tcin.reverse、tcin.fps(正在使用的帧率)、tcin.detectedFps、tcin.value(最后收到的时间,原始值,未加偏移;; = 丢帧)、tcin.ageMs、tcin.dropouts、tcin.resyncs、tcin.rate(时间码源的速度)、tcin.offsetMs、tcin.sender、tcin.inputOk、tcin.level(LTC,dBFS)和 tcin.status(例如 LOCKED 25 fps、FREEWHEEL、STOPPED at …)。只有真正出错时节点才会显示红线,例如设备或端口不存在,或 UDP 6454 不可用。
DMX Input(由灯光控台触发 ShowKontrol)#
添加一个 Data Generator 节点,把 Source 设为 DMX Input。它从灯光控台接收一个 DMX universe(Art-Net 或 sACN (E1.31)),并把你选择的通道作为实时值发布,这样灯光师就可以用推子或 playback 触发 Trigger、Cue 和 Action:
| 数据键 | 含义 |
|---|---|
dmx.ch1 … dmx.ch512 | Channels 列表中的通道,0–255 |
dmx.ch1_16 … | 16-bit Pairs 列表中的 16 位通道对(粗调 × 256 + 微调,0–65535) |
dmx.present / dmx.lost | 正在收到数据 / 丢失时间超过 Lost After |
dmx.lostMs / dmx.ageMs | 已经丢失多久 / 距离上一个数据包多久 |
dmx.fps / dmx.frames | 数据包速率 / 数量 |
dmx.fromIP / dmx.source | 谁在发送(sACN:数据源名称) |
dmx.universe / dmx.universeName / dmx.protocol | 正在监听什么(Art-Net:15 位 Port-Address 和 net:sub:uni) |
dmx.status | receiving 44 fps from …、LOST 3.2 s、listening — no data yet …… |
设置:
- Protocol: Art-Net(UDP 6454,广播或单播到这台 Mac)或 sACN(组播
239.255.hi.lo,UDP 5568)。 - Network Interface: Art-Net:只接受该子网上的发送者;sACN:加入组播组的网卡(这台 Mac 连接多个网络时请选择它)。
- Net / Sub-Net / Universe(Art-Net,
0:0:0是第一个 universe,从 1 开始计数的控台把它叫做 Universe 1)或 Universe(sACN,1–63999)。 - Channels: 例如
1-16, 20, 100-110这样的列表。16-bit Pairs: 16 位通道对的粗调通道,例如1, 5。 - Lost After (s): 通道值会保持最后的电平;只有
dmx.present/dmx.lost会变化。 - Only From IP(Art-Net):忽略这个 universe 的其他所有发送者。
- Ignore This Mac: 默认打开,这样 ShowKontrol 自己在同一 universe 上的 Art-Net / sACN 输出不会回传进来。如果要接收在这台 Mac 上运行的控台,请关闭它。
- Answer ArtPoll(Art-Net):ShowKontrol 会以带这个 universe 的 Art-Net 节点身份回应控台的轮询,适用于只向已发现节点发送数据的控台。
- Log Incidents: 把 "DMX LOST" / "DMX back" 写入事件日志。
sACN:优先级最高的数据源优先;优先级相同时,已经占有这个 universe 的数据源只要一直在发送就保持占有(静默 2.5 秒或 "stream terminated" 时交出)。预览数据包会被忽略。
例子:在 dmx.ch1 上设置 Greater Than 127 的 Trigger → 一个 Action(触发一个 Cue、在 Cue 列表上 GO……);或者用 Script 读取 dmx.ch5_16 来平滑地拖动某个东西。
PSN Receiver(跟踪位置)#
添加一个 Data Generator 节点,把 Source 设为 PSN Receiver。它从跟踪系统(BlackTrax、zactrack、Stage Tracker、媒体服务器……)接收 PosiStageNet(PSN v2)(默认组播 236.10.10.10,端口 56565),并发布每个跟踪器:
| 数据键 | 含义 |
|---|---|
psn.<id>.x / .y / .z | 位置(米) |
psn.<id>.speedX/Y/Z、.oriX/Y/Z、.accelX/Y/Z、.targetX/Y/Z | 速度、方向(旋转向量,弧度)、加速度、目标位置,只包含发送方发送的内容 |
psn.<id>.validity / .timestamp | 跟踪器的状态和时间戳(如果有发送) |
psn.<id>.name / .present / .ageMs | 它的名称、是否在更新、距上次更新多久 |
psn.<name>.… | 以跟踪器名称命名的相同数据键(空格和点变为 _) |
psn.present / psn.lost / psn.lostMs | 整个数据流 |
psn.trackers / psn.ids / psn.fps / psn.frames | 跟踪器数量、它们的 ID、帧率 / 帧数 |
psn.system / psn.fromIP / psn.status | 发送系统的名称、地址和一行状态 |
设置:Network Interface、Multicast Group、Port、Keys(ID and Name、ID Only、Name Only)和 Lost After (s)。数据流停止时,位置保持最后的值。
例子:用 Script 把 psn.1.x / psn.1.y 转换成 OSC 输出的平移值,或者在演员越过某条线时触发一个 Trigger(psn.Singer.x Greater Than 2)。
Tone Monitor(监测参考音)#
它是 Ref Tone 输出的搭档。添加一个 Data Generator 节点,把 Source 设为 Tone Monitor。它监听音频输入的一个通道,并发布 Trigger 和 Action 可以使用的实时值:
| 数据键 | 含义 |
|---|---|
signal.present | 参考音(或信号)此刻存在 |
signal.lost | 丢失时间超过 Lost After,即报警 |
signal.lostMs | 已经丢失多久 |
signal.level / signal.toneLevel | 峰值 / 参考音电平,单位 dBFS |
signal.drops | 丢失了多少次 |
signal.inputOk | 音频输入本身正在提供数据 |
signal.status | OK、OK (between bursts)、LOST、NO INPUT … |
设置:
- Input Device 和 Input Channel。
- Listen For:
- Tone:Frequency 必须高于 Threshold,并且至少占一半的能量,所以同样电平的音乐不会被算作参考音。
- Any Signal:任何高于 Threshold 的信号。
- Frequency 和 Threshold(dBFS)。
- Lost After (s): 监测心跳信号时,把它设得比心跳间隔更长。
- Log Incidents: 把 "signal LOST" / "signal back" 写入事件日志。
例子:在 signal.lost 上设置 State On 的 Trigger,连接到一个 Action(给自动化系统发 OSC、闪屏、发一个 MIDI 音符……)。
