Hi,
I had this same issue and in the end I patched the channel switching out
of airplay. We're running a relatively ancient Riv 2.5.0 with patches
to log_play.cpp and log_play.h
Heres what the patches do:
Adds an RDLogLine::StartSource to int GetNextChannel (log_play.h)
At the point in log_play where GetNextChannel is called, I pass in this
extra RDLogLine::StartSource for later use.
In a nutshell I then check to see if we're in auto mode and if we are I
return a value that says use channel 0 (the first output set for airplay).
If we're not, Riv chooses a channel as normal (basically increments and
loops around).
Back to the Macro thing, if we've been started by a macro, I assume Riv
should choose as normal.
Thats about it really just a few set to 0s and if/else lines.
It would be nice to have some sort of rdadmin option for channel
switching in auto but alas my QT/C skills are atrocious so I couldn't
figure out how best to do that.
Hope this helps,
Wayne Merricks
The Voice Asia
On 28/10/14 10:07, Peter van Embden wrote:
Hello all,
We recently added the option to "button start" from the mixer, but now
the following challenge appears: while making live radio, the DJ's
often uses "manual", but sometimes want to play songs with a jingle in
between in "automatic". But, if the channel is not "started", no sound
will be heard. And if you start the channel, the next in line just
starts playing.
Yes, there are ways to "hack" this, for example by playing a short
file with the fader down and leave it started, but most of our elderly
DJ's are not fast enough to find something like that, they just play
the playlist they're presented.
And yes, by paying close attention to not just "stop" your channel
this is also possible, but that's not the question.
I figured out to ask for two possibilities:
* Is it possible to let all audio stick to the active channel when
switched to "automatic"? Or,
* Is it possible to bypass the button-start command when switched to
"automatic"?
FYI: we use several virtual machines for Rivendell. There's RDNONSTOP,
which does non-stop playout and decides at what times the mixer in
studio 1 is allowed on-air (we're working on studio 2) and the
non-stop stops playing. There are only 4 people allowed to acces
RDNONSTOP.
Then there's RDSTUDIO1, which is used for playout on the studio 1
mixer at any time (I use it to record my show during non-stop hours).
Every user is allowed to acces RDSTUDIO1, because we managed to make
it quite idiot-proof. RDSTUDIO1 is connected to the mixer and has
button start. This is the machine that has to get modified for the
challenge we ran into.
Thanks for thinking with me!
Sincerely,
Peter van Embden
Radio Capelle
The Netherlands
Verstuurd
_______________________________________________
Rivendell-dev mailing list
[email protected]
http://caspian.paravelsystems.com/mailman/listinfo/rivendell-dev
--- riv-2.2.1/rdairplay/log_play.cpp 2012-10-15 16:46:14.000000000 +0100
+++ rivendell-2.2.1/rdairplay/log_play.cpp 2012-12-07 03:16:20.894020803 +0000
@@ -1710,7 +1710,7 @@
rdairplay_conf->setLogCurrentLine(play_id,nextLine());
return false;
}
- aport=GetNextChannel(mport,&card,&port);
+ aport=GetNextChannel(mport,&card,&port,src);
playdeck=(RDPlayDeck *)logline->playDeck();
playdeck->setCard(card);
playdeck->setPort(port);
@@ -2367,25 +2367,37 @@
}
-int LogPlay::GetNextChannel(int mport,int *card,int *port)
+int LogPlay::GetNextChannel(int mport,int *card,int *port,
+ RDLogLine::StartSource src = RDLogLine::StartUnknown)
{
int chan=next_channel;
- if(mport<0) {
- *card=play_card[next_channel];
- *port=play_port[next_channel];
- if(++next_channel>1) {
- next_channel=0;
+ //If we are in auto mode only play on the first output (unless we got here
+ //with a macro start e.g. PN
+ if(play_op_mode==RDAirPlayConf::Auto && src != RDLogLine::StartMacro){
+ *card=play_card[0];
+ *port=play_port[0];
+ next_channel=0;
+ chan=next_channel;
+ }
+ else{
+ if(mport<0) {
+ *card=play_card[next_channel];
+ *port=play_port[next_channel];
+ if(++next_channel>1) {
+ next_channel=0;
+ }
}
- }
- else {
- chan=mport;
- *card=play_card[mport];
- *port=play_port[mport];
- next_channel=mport+1;
- if(next_channel>1) {
- next_channel=0;
+ else {
+ chan=mport;
+ *card=play_card[mport];
+ *port=play_port[mport];
+ next_channel=mport+1;
+ if(next_channel>1) {
+ next_channel=0;
+ }
}
}
+
return chan;
}
--- riv-2.2.1/rdairplay/log_play.h 2010-07-29 20:32:36.000000000 +0100
+++ rivendell-2.2.1/rdairplay/log_play.h 2012-12-07 03:08:37.289938960 +0000
@@ -175,7 +175,7 @@
void AdvanceActiveEvent();
void SetTransTimer(QTime current_time=QTime(),bool stop=true);
QString GetPortName(int card,int port);
- int GetNextChannel(int mport,int *card,int *port);
+ int GetNextChannel(int mport,int *card,int *port,RDLogLine::StartSource src);
int GetLineById(int id);
RDPlayDeck *GetPlayDeck();
void FreePlayDeck(RDPlayDeck *);
_______________________________________________
Rivendell-dev mailing list
[email protected]
http://caspian.paravelsystems.com/mailman/listinfo/rivendell-dev