OSC单独显示QLab播放状态

老唐
老唐
老唐
46
文章
0
评论
2021年9月25日17:21:29来源:GoodmidiOSC单独显示QLab播放状态已关闭评论 60

目前很多用户在演出现场使用QLab都是纯粹的播放音乐或视频,有时候团队其他成员可能想要了解音乐的播放状态,比如当前的播放时间,剩余时间和下一个Cue的名称等信息。虽然在QLab的Active Cues里面可以查看播放时间,但这仅限于电脑屏幕,如果可以有一个监视屏幕或iPad或iPhone里面显示这些状态信息那将会非常的方便,旁边的灯光师再也不用大声喊话问你音乐还有几秒放完!

有两种实现的方式:1.使用QLab自带的预览窗口显示,2.以OSC通过本地广播的方式发送文本信息

以下项目演示来自官网的一个脚本,其主要功能:

列表设置Solo模式,一次只允许播放一个Cue。
当Cue已经在播放时不允许其他Cue开始。
脚本生成当前播放Cue的播放时间和剩余时间以及显示下一个Cue的信息。
将“播放状态”信息显示在预览窗以分发到扩展显示器上面。
将“播放状态”信息作为OSC消息通过本地网络广播,以便在运行#TouchOSC#、Lemur或其他类似程序的设备上接收。
当上下切换光标时实时输出下一个Cue为光标所选Cue的名称

 
先看视频演示:

如何使用?下载并解压并打开示范工作区之后,打开QLab软件设置

OSC单独显示QLab播放状态

 

1.以正常方式添加音频到列表中。
2.打开预览窗口和TouchOSC
3.选择一个Cue 然后空格键开始运行及播放音乐。(空格键是脚本的快捷键,如果没按空格直接播放音乐是不会发送状态信息的)

 

如果只想以预览窗口显示的话只需要打开预览窗口即可。如果是连接了第二个屏幕就把预览窗口拖到另扩展屏幕即可。如下图: OSC单独显示QLab播放状态
当然也可以同时打开预览窗口和TouchOSC:
OSC单独显示QLab播放状态

以下是主要的脚本部分 你可以根据自己要求进行修改.
定义播放时间和剩余时间:

 --elapsed time
set theelapsedtimer to ((round (action elapsed of theCurrentCue) * 10) / 10)
set theHours to (text -1 thru -2 of ("00" & (theelapsedtimer div 3600)))
set theRemainderSeconds to (theelapsedtimer mod 3600)
set theMinutes to (text -1 thru -2 of ("00" & (theRemainderSeconds div 60)))
set theRemainderSeconds to (text -1 thru -4 of ("0000" & (theRemainderSeconds mod 60)))
set theelapsedseconds to (theHours & ":" & theMinutes & ":" & theRemainderSeconds)
			
--remaining time
set theRemainingTimer to ((round (((duration of theCurrentCue) - (action elapsed of theCurrentCue)) * 10)) / 10)
set theHours to (text -1 thru -2 of ("00" & (theRemainingTimer div 3600)))
set theRemainderSeconds to (theRemainingTimer mod 3600)
set theMinutes to (text -1 thru -2 of ("00" & (theRemainderSeconds div 60)))
set theRemainderSeconds to (text -1 thru -4 of ("0000" & (theRemainderSeconds mod 60)))
set theRemainingTime to (theHours & ":" & theMinutes & ":" & theRemainderSeconds)

生成并输出OSC文本信息:

 --format text 
      try
        set thenextcue to last item of (selected as list)
        set thenextcuenumber to q number of thenextcue
        set thenextcuename to q list name of thenextcue
      end try
      if the (count of characters of thenextcuename) is greater than 50 then set thenextcuename to characters 1 thru 50 of thenextcuename as string
      
      set theqname to q list name of theCurrentCue
      if the (count of characters of theqname) is greater than 50 then set theqname to characters 1 thru 50 of theqname as string
      --extra code for TouchOSC
      set the notes of cue "line0" to "Current Track"
      set the notes of cue "line1" to "CUE" & thecuenumber
      set the notes of cue "line2" to theqname
      set the notes of cue "line3" to "ELAPSED TIME =  " & theelapsedseconds
      set the notes of cue "line4" to "REMAINING TIME = -" & (theRemainingTime as string)
      set the notes of cue "line5" to "NEXT CUE " & thenextcuenumber
      set the notes of cue "line6" to thenextcuename
      
      set thedisplay to "CUE " & thecuenumber & linefeed & return & theqname & linefeed & return & linefeed & return & "  ELAPSED TIME =  " & theelapsedseconds & linefeed & return & linefeed & return & "REMAINING TIME = -" & (theRemainingTime as string) & linefeed & return & linefeed & return & "NEXT CUE " & thenextcuenumber & linefeed & return & thenextcuename
      
      set the text of cue "TIME" to thedisplay
      set the notes of cue "TIME" to thedisplay
      start cue "NET"
    else
      try
        set thenextcue to last item of (selected as list)
        set thenextcuenumber to q number of thenextcue
        set thenextcuename to q list name of thenextcue
        
      end try
      
      if the (count of characters of thenextcuename) is greater than 50 then set thenextcuename to characters 1 thru 50 of thenextcuename as string
      set line1 to "NO CUE RUNNING"
      
      set thedisplay to line1 & linefeed & return & linefeed & return & linefeed & linefeed & return & linefeed & return & linefeed & return & linefeed & return & linefeed & return & "NEXT CUE " & thenextcuenumber & linefeed & return & thenextcuename
      
      set the text of cue "TIME" to thedisplay
      set the notes of cue "TIME" to thedisplay
      
      --additional code for TouchOSC
      set the notes of cue "line0" to line1
      set the notes of cue "line1" to ""
      set the notes of cue "line2" to ""
      set the notes of cue "line3" to ""
      set the notes of cue "line4" to ""
      set the notes of cue "line5" to "NEXT CUE" & thenextcuenumber
      set the notes of cue "line6" to thenextcuename

#TouchOSC模板#编写很简单,QLab 工作区将七行文本作为 OSC 消息发送到 TouchOSC 中七个标签地址,对应脚本输出的line信息:

/textline0 显示当前播放
/textline1 输出Cue编号 (歌曲编号)
/textline2 输出Cue名称 (歌曲名字)
/textline3 也就是播放时间 (输出时间参数)
/textline4 是剩余时间
/textline5 下一个Cue的编号
/textline6 下一个Cue的名称

OSC单独显示QLab播放状态

如上图在TouchOSC编辑器里添加几个Lable   文本可以留空不填,OSC指令填 /textline0~6 分别对应上面的脚本输出信息。设置好字体大小颜色等即可。

按钮形状都可以根据自己喜好添加。只需要填 上对应的/textline即可。
除了显示播放状态信息之外我们还可以添加一些其它控制按钮,比如演示视频里我添加了4个按钮  对应的的是:切换上一曲/下一曲, GO和Esc退出播放这个功能,实现直接在手机里切换歌曲控制功能。直接使用的是MIDI按钮(需要在软件设置里映射) 当然你还可以添加更多的按钮或OSC功能,比如添加一个 OSC控制QLab全局音量淡入淡出的按钮

TouchOSC模板的编写可以看这个教程:  TouchOSC在线教程:OSC的编写及使用

 

继续阅读
老唐
  • 版权声明 本文源自 Goodmidi 整理 发表于 2021年9月25日17:21:29
  • 转载请务必保留本文链接:https://vjcool.com/326.html