From 65e75590093f78acace55a71d6eac720e7615b73 Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Tue, 28 Aug 2018 10:54:35 -0400 Subject: [PATCH] 2018-08-28 Fred Gleason * Added an optional third argument to the 'Add Next' ['PX'] RML to allow specication of the transition type. --- ChangeLog | 3 +++ docs/opsguide/rml.xml | 8 +++++--- rdairplay/local_macros.cpp | 16 +++++++++++++--- rdairplay/log_play.cpp | 3 +-- 4 files changed, 22 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 33e857e5..7c32583b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -16669,3 +16669,6 @@ 2018-08-23 Fred Gleason * Fixed a bug in ripcd(8) that caused process of the 'Air Gate' ['AG'] RML to fail. +2018-08-28 Fred Gleason + * Added an optional third argument to the 'Add Next' ['PX'] RML + to allow specication of the transition type. diff --git a/docs/opsguide/rml.xml b/docs/opsguide/rml.xml index d82c8ed1..05ca41b1 100644 --- a/docs/opsguide/rml.xml +++ b/docs/opsguide/rml.xml @@ -218,11 +218,13 @@ PX mach - cart! + cart + [PLAY|SEGUE|STOP]! - Insert cart cart> in the next to play - position on log machine mach. + Insert cart cart in the next to play + position on log machine mach. The + transition may also be optionally specified. diff --git a/rdairplay/local_macros.cpp b/rdairplay/local_macros.cpp index a9738e35..a3082cf4 100644 --- a/rdairplay/local_macros.cpp +++ b/rdairplay/local_macros.cpp @@ -41,6 +41,7 @@ void MainWidget::RunLocalMacros(RDMacro *rml) RDLogLine *logline=NULL; QString label; int mach=0; + RDLogLine::TransType trans=RDLogLine::Play; if(rml->role()!=RDMacro::Cmd) { return; @@ -782,7 +783,7 @@ void MainWidget::RunLocalMacros(RDMacro *rml) break; case RDMacro::PX: // Add Next - if(rml->argQuantity()!=2) { + if((rml->argQuantity()<2)||(rml->argQuantity()>3)) { if(rml->echoRequested()) { rml->acknowledge(false); rdripc->sendRml(rml); @@ -797,15 +798,24 @@ void MainWidget::RunLocalMacros(RDMacro *rml) } return; } + trans=RDLogLine::Play; + if(rml->argQuantity()==3) { + if(rml->arg(2).toString().lower()=="segue") { + trans=RDLogLine::Segue; + } + if(rml->arg(2).toString().lower()=="stop") { + trans=RDLogLine::Stop; + } + } if(air_log[rml->arg(0).toInt()-1]->nextLine()>=0) { air_log[rml->arg(0).toInt()-1]-> insert(air_log[rml->arg(0).toInt()-1]->nextLine(), - rml->arg(1).toUInt(),RDLogLine::Play); + rml->arg(1).toUInt(),RDLogLine::NoTrans,trans); } else { air_log[rml->arg(0).toInt()-1]-> insert(air_log[rml->arg(0).toInt()-1]->size(), - rml->arg(1).toUInt(),RDLogLine::Play); + rml->arg(1).toUInt(),RDLogLine::NoTrans,trans); air_log[rml->arg(0).toInt()-1]-> makeNext(air_log[rml->arg(0).toInt()-1]->size()-1); } diff --git a/rdairplay/log_play.cpp b/rdairplay/log_play.cpp index 60bd96f7..987eeb1e 100644 --- a/rdairplay/log_play.cpp +++ b/rdairplay/log_play.cpp @@ -833,8 +833,7 @@ void LogPlay::insert(int line,int cartnum,RDLogLine::TransType next_type, if(nextLine()<0) { play_next_line=line; } - logline->loadCart(cartnum,next_type,play_id,play_timescaling_available, - rdairplay_conf->defaultTransType()); + logline->loadCart(cartnum,next_type,play_id,play_timescaling_available,type); logline-> setTimescalingActive(play_timescaling_available&&logline->enforceLength()); UpdateStartTimes(line);