2023-11-03 Fred Gleason <fredg@paravelsystems.com>

* Fixed a regression in caed(8) that caused multiple play-outs on
	a common port to interfere with each others mixer settings.

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason 2023-11-03 15:20:16 -04:00
parent a77b960345
commit 67d1e3afd8
5 changed files with 21 additions and 20 deletions

View File

@ -24444,3 +24444,6 @@
* Prepended the string '[mixer]' to all syslog entries generated
as a result of enabling the 'EnableMixerLogging=' directive in
rd.conf(5).
2023-11-03 Fred Gleason <fredg@paravelsystems.com>
* Fixed a regression in caed(8) that caused multiple play-outs on
a common port to interfere with each others mixer settings.

View File

@ -691,12 +691,12 @@ void MainObject::setOutputPortData(int id,unsigned card,unsigned stream,
return;
}
if(!rda->config()->testOutputStreams()) {
for(unsigned i=0;i<RD_MAX_STREAMS;i++) {
if(i==port) {
dvr->setOutputVolume(card,i,port,level);
for(unsigned i=0;i<RD_MAX_PORTS;i++) {
if(i==stream) {
dvr->setOutputVolume(card,stream,i,level);
}
else {
dvr->setOutputVolume(card,i,port,RD_FADE_DEPTH);
dvr->setOutputVolume(card,stream,i,RD_MUTE_DEPTH);
}
}
if(rda->config()->enableMixerLogging()) {

View File

@ -379,10 +379,8 @@ void RDMarkerPlayer::buttonPlayData()
d_loop_start_length=0;
rda->cae()->play(d_cae_handle,d_loop_start_length,100000,false);
rda->cae()->setPlayPortActive(d_cards.first(),d_port,d_cae_stream);
// FIXME: Implement variable gain here!
rda->cae()->setOutputVolume(d_cards.first(),d_cae_stream,d_port,0);
// rda->cae()->
// setOutputVolume(d_cards.first(),d_cae_stream,d_port,0+edit_gain_control->value());
rda->cae()->setOutputVolume(d_cards.first(),d_cae_stream,
d_port,0+100*d_play_gain_spin->value());
d_meter_timer->start(RD_METER_UPDATE_INTERVAL);
}
@ -401,10 +399,8 @@ void RDMarkerPlayer::buttonPlayFromData()
d_loop_start_length=0;
rda->cae()->play(d_cae_handle,d_loop_start_length,100000,false);
rda->cae()->setPlayPortActive(d_cards.first(),d_port,d_cae_stream);
// FIXME: Implement variable gain here!
rda->cae()->setOutputVolume(d_cards.first(),d_cae_stream,d_port,0);
// rda->cae()->
// setOutputVolume(d_cards.first(),d_cae_stream,d_port,0+edit_gain_control->value());
rda->cae()->setOutputVolume(d_cards.first(),d_cae_stream,d_port,
0+100*d_play_gain_spin->value());
d_meter_timer->start(RD_METER_UPDATE_INTERVAL);
}
}
@ -428,10 +424,8 @@ void RDMarkerPlayer::buttonPlayToData()
rda->cae()->positionPlay(d_cae_handle,d_loop_start_msec);
rda->cae()->play(d_cae_handle,d_loop_start_length,100000,false);
rda->cae()->setPlayPortActive(d_cards.first(),d_port,d_cae_stream);
// FIXME: Implement variable gain here!
rda->cae()->setOutputVolume(d_cards.first(),d_cae_stream,d_port,0);
// rda->cae()->
// setOutputVolume(d_cards.first(),d_cae_stream,d_port,0+edit_gain_control->value());
rda->cae()->setOutputVolume(d_cards.first(),d_cae_stream,d_port,
0+100*d_play_gain_spin->value());
d_meter_timer->start(RD_METER_UPDATE_INTERVAL);
}
}

View File

@ -81,7 +81,7 @@ bool RDNotification::isValid() const
bool RDNotification::read(const QString &str)
{
printf("RDNotification::read(%s)\n",str.toUtf8().constData());
// printf("RDNotification::read(%s)\n",str.toUtf8().constData());
notify_type=RDNotification::NullType;
notify_action=RDNotification::NoAction;

View File

@ -162,11 +162,15 @@ void RDSimplePlayer::play(int start_pos)
if(q->first()) {
play_cut_gain=q->value(2).toInt();
play_handles.push(handle);
/*
for(int i=0;i<RD_MAX_PORTS;i++) {
play_cae->setOutputVolume(play_card,play_stream,i,RD_MUTE_DEPTH);
play_cae->setOutputVolume(play_card,play_stream,i,RD_MUTE_DEPTH);
}
play_cae->setOutputVolume(play_card,play_stream,play_port,0+play_cut_gain);
play_cae->positionPlay(play_handles.back(),q->value(0).toUInt()+start_pos);
*/
play_cae->
setOutputVolume(play_card,play_stream,play_port,0+play_cut_gain);
play_cae->
positionPlay(play_handles.back(),q->value(0).toUInt()+start_pos);
play_cae->play(play_handles.back(),
q->value(1).toUInt()-(q->value(0).toUInt()+start_pos),
RD_TIMESCALE_DIVISOR,false);