OSC单独显示QLab播放状态(附工程文件和TouchOSC模板)

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

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

所使用的脚本 的主要功能:

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

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

 

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

 

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

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

 --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的名称

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

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

你可以免费下载官网工程示范文件,也可以下载我修改过的工程文件和TouchOSC模板。

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

发表评论

后才能评论

网站资源属于虚拟商品,具有可复制可传播性,一旦购买,不接受任何形式的退款要求。 请您在购买获取之前确认好是否是您所需要的资源,软件资源请先自行下载试用版试用再购买。

本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。

最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或联络我们。

新疆与台湾地区是百度云的限制区,无法打开百度云分享链接属于正常情况。 解决方案: 海外同胞可以使用梯子,链接大陆网络即可打开!打开之后转存到自己的网盘再下载 国内朋友如遇到打不开,请检查自己的浏览器谷歌浏览器 以及防火墙。

如果您已经成功付款但是网站没有弹出成功提示,请联系站长提供付款信息为您处理